home *** CD-ROM | disk | FTP | other *** search
/ Chip Hitware 7 / Chip_Hitware_Vol_07.iso / chiphit7 / multmedi / 95caddra / _002830_ < prev    next >
Text File  |  1996-06-04  |  166KB  |  3,481 lines

  1. //------------------------------------------------------------------------------------------------------
  2. // Name       : toso40.h
  3. //
  4. // Purpose    : Prototypes and definitions of the TommySoftware« Open Software Interface Version 4.0.
  5. //              All prototypes and definitions stated in this file are subject to change without notice.
  6. //              Errors excepted. Be sure to check the interface's version (as passed to TosoModuleInit)
  7. //              before accessing ANY of the interface procedures!
  8. //
  9. //              Modules using this interface may be distributed without any license fee. If you would
  10. //              like to offer your module in a bundle including the serving application, please contact
  11. //              TommySoftware« at one of the addresses stated below:
  12. //
  13. //                      TommySoftware«,                 TommySoftware«
  14. //                      North America, Inc.             Deutschland
  15. //                      648 Ashbury Street              Selchower Strasse 32
  16. //                      San Franciso, CA 94117          D-12049 Berlin
  17. //                      U.S.A.                          Germany
  18. //
  19. //                      Phone (415) 522 0612            Phone +49 30 621 5931
  20. //                      Fax   (415) 522 0287            Fax   +49 30 621 4064
  21. //
  22. //                      CompuServe GO TOSOENG           CompuServe GO TOSOGER
  23. //
  24. //                      Internet
  25. //                      sales@tommysoftware.com         (Sales)
  26. //                      support@tommysoftware.com       (Technical Support)
  27. //                      http://www.tommysoftware.com    (World Wide Web)
  28. //
  29. //              For further information on how to create modules based on the TommySoftware« Open
  30. //              Software Interface Version 4.0, see the interface documentation in the file TOSO40.HLP
  31. //              which is included in all applications supporting this interface.
  32. //
  33. // Date       : 31.05.1996     Author : SM / OK      System : Win32
  34. //------------------------------------------------------------------------------------------------------
  35.  
  36. #define TOSO_INTERFACE_VERSION  400             // Current version of Toso Interface
  37.  
  38. //------------------------------------------------------------------------------------------------------
  39.  
  40. #define DLL_EXPORT      __declspec( dllexport )
  41. #define DLL_IMPORT      __declspec( dllimport )
  42.  
  43. //------ Dialog Control Messages -----------------------------------------------------------------------
  44.  
  45. #define Dialog_SetDefID(hwndCtl, id)            ((void) SendMessage((hwndCtl), DM_SETDEFID, (WPARAM) (id), 0L ))
  46. #define Edit_SendChar(hwndCtl, ch)              ((void) SendMessage((hwndCtl), WM_CHAR, (WPARAM) ((int) (ch) & 0xff), 0L ))
  47. #define Control_SetFont(hwndCtl, hFont)         ((void) SendMessage((hwndCtl), WM_SETFONT, (WPARAM) (hFont), 0L ))
  48. #define ComboBox_GetSelFieldHeight(hwndCtl)     ((int) (DWORD) SendMessage((hwndCtl), CB_GETITEMHEIGHT, (WPARAM) (int) -1, 0L ))
  49.  
  50. //------ Message Crackers ------------------------------------------------------------------------------
  51.  
  52. #define GET_WM_ACTIVATEAPP_ACTIVE(wp,lp)        (BOOL)(wp)
  53. #define GET_WM_ACTIVATEAPP_TASK(wp,lp)          (DWORD)(lp)
  54.  
  55. #define GET_WM_DROPFILES_HANDLE(wp,lp)          (HANDLE)(wp)
  56.  
  57. #define GET_WM_ENTERIDLE_SOURCE(wp,lp)          (wp)
  58. #define GET_WM_ENTERIDLE_HWND(wp,lp)            (HWND)(lp)
  59.  
  60. #define GET_WM_INITMENU_HMENU(wp,lp)            (HMENU)(wp)
  61.  
  62. #define GET_WM_KEY_VKEY(wp,lp)                  (int)(wp)
  63. #define GET_WM_KEY_DATA(wp,lp)                  (lp)
  64. #define GET_WM_KEY_MPS(vkey,data)               (WPARAM)(vkey),(LPARAM)(data)
  65.  
  66. #define GET_WM_MOUSE_BUTTONS(wp,lp)             (wp)
  67. #define GET_WM_MOUSE_XPOS(wp,lp)                (int)LOWORD(lp)
  68. #define GET_WM_MOUSE_YPOS(wp,lp)                (int)HIWORD(lp)
  69. #define GET_WM_MOUSE_MPS(button,xp,yp)          (WPARAM)(button),(LPARAM)MAKELONG(xp,yp)
  70.  
  71. #define GET_WM_SETCURSOR_HWND(wp,lp)            (HWND)(wp)
  72. #define GET_WM_SETCURSOR_HITTEST(wp,lp)         LOWORD(lp)
  73. #define GET_WM_SETCURSOR_MSG(wp,lp)             HIWORD(lp)
  74.  
  75. #define GET_WM_WINDOWPOSCHANGING_PTR(wp,lp)     (LPWINDOWPOS)(lp)
  76. #define GET_WM_GETMINMAXINFO_PTR(wp,lp)         (LPMINMAXINFO)(lp)
  77. #define GET_WM_PALETTECHANGED_HWND(wp,lp)       (HWND)(wp)
  78.  
  79. //------ System-independent Macros ---------------------------------------------------------------------
  80.  
  81. #define round(a)                (int) ( floor( (a) + 0.5 ) )    // Rounding of a DOUBLE value
  82. #define fixed(a)                (( (a).value < 0 ) ?                                    \
  83.                                  ( (double) (a).value - (double) (a).fract / 65536.0 ): \
  84.                                  ( (double) (a).value + (double) (a).fract / 65536.0 ))
  85. #define lstrclr(a)              (a)[0] = '\0'                   // Erasing a string
  86.  
  87. #define int_loword(a)           (int) ( (a) & 0xffff )
  88. #define int_hiword(a)           (int) ( ( (a) >> 16 ) & 0xffff )
  89. #define int_makelong(a,b)       (int) ( ( ( (b) & 0xffff ) << 16 ) | ( (a) & 0xffff ) )
  90.  
  91. //------ Matrix Handling -------------------------------------------------------------------------------
  92.  
  93. #define mat_x(m,x,y)            ( (m)->m11 * (x) + (m)->m21 * (y) + (m)->m31 )
  94. #define mat_y(m,x,y)            ( (m)->m12 * (x) + (m)->m22 * (y) + (m)->m32 )
  95. #define mat_dx(m,x,y)           ( (m)->m11 * (x) + (m)->m21 * (y) )
  96. #define mat_dy(m,x,y)           ( (m)->m12 * (x) + (m)->m22 * (y) )
  97. #define mat_sx(m,x)             ( (m)->m11 * (x) + (m)->m31 )
  98. #define mat_sy(m,y)             ( (m)->m22 * (y) + (m)->m32 )
  99.  
  100. //------ Data Block Handling ---------------------------------------------------------------------------
  101.  
  102. #define db_alignsize(s)         ( ( (s) + 7 ) & (~7) )
  103. #define db_textsize(t)          ( ( lstrlen( t ) + 8 ) & (~7) )
  104.  
  105. #define DB_SIZE_POINT           ( db_alignsize( sizeof( BLOCK_POINT ) + sizeof( DPOINT ) ) )
  106. #define DB_SIZE_CONSTANT        ( db_alignsize( sizeof( BLOCK_DOUBLE ) + sizeof( double ) ) )
  107. #define DB_SIZE_ARC             ( db_alignsize( sizeof( BLOCK_DOUBLE ) + sizeof( double ) ) )
  108. #define DB_SIZE_CURVE           ( db_alignsize( sizeof( BLOCK_DOUBLE ) + sizeof( double ) + sizeof( double ) ) )
  109. #define DB_SIZE_TEXT            ( db_alignsize( sizeof( BLOCK_TEXT ) ) )
  110. #define DB_SIZE_END             ( db_alignsize( sizeof( BLOCK_ANY ) ) )
  111. #define DB_SIZE_ANY             ( db_alignsize( sizeof( BLOCK_ANY ) ) )
  112.  
  113. #define db_offset(b,x)          ( (BLOCK_PTR) ( (b)->Data + (x) ) )
  114. #define db_first(b)             ( (BLOCK_PTR) ( (b)->Data ) )
  115. #define db_next(b)              ( (BLOCK_PTR) ( (LPBYTE) (b) + (b)->Header.Size ) )
  116. #define db_difference(b,p)      ( (OFFSET) ( (BYTE*) (p) - (BYTE*) ( (b)->Data ) ) )
  117.  
  118. #define db_point(b)             ( ( (BLOCK_POINT_PTR)  (b) )->Data[0] )
  119. #define db_constant(b)          ( ( (BLOCK_DOUBLE_PTR) (b) )->Data[0] )
  120. #define db_orient(b)            ( ( (BLOCK_DOUBLE_PTR) (b) )->Data[0] )
  121. #define db_curve(b)             ( ( (BLOCK_DOUBLE_PTR) (b) )->Data[1] )
  122. #define db_attribute_name(b)    ( ( (BLOCK_ATTRIBUTE_PTR) (b) )->Name )
  123. #define db_attribute_text(b)    ( ( (BLOCK_ATTRIBUTE_PTR) (b) )->Text )
  124.  
  125. #define db_data_long(b)         ( ( (BLOCK_LONG_PTR)          (b) )->Data )
  126. #define db_data_double(b)       ( ( (BLOCK_DOUBLE_PTR)        (b) )->Data )
  127. #define db_data_point(b)        ( ( (BLOCK_POINT_PTR)         (b) )->Data )
  128. #define db_data_colorref(b)     ( ( (BLOCK_COLORREF_PTR)      (b) )->Data )
  129. #define db_data_property(b)     ( ( (BLOCK_PROPERTY_PTR)      (b) )->Data )
  130. #define db_data_xproperty(b)    ( ( (BLOCK_XPROPERTY_PTR)     (b) )->Data )
  131. #define db_data_fontdef(b)      ( ( (BLOCK_FONTDEF_PTR)       (b) )->Data )
  132. #define db_data_text(b)         ( ( (BLOCK_TEXT_PTR)          (b) )->Text )
  133. #define db_data_binary(b)       ( ( (BLOCK_BINARY_PTR)        (b) )->Data )
  134.  
  135. #define db_data_dimline(b)      ( ( (BLOCK_DIMLINE_PTR)       (b) )->Data )
  136. #define db_data_dimlarge(b)     ( ( (BLOCK_DIMLARGE_PTR)      (b) )->Data )
  137. #define db_data_dimsmall(b)     ( ( (BLOCK_DIMSMALL_PTR)      (b) )->Data )
  138. #define db_data_textstandard(b) ( ( (BLOCK_TEXTSTANDARD_PTR)  (b) )->Data )
  139. #define db_data_textframe(b)    ( ( (BLOCK_TEXTFRAME_PTR)     (b) )->Data )
  140. #define db_data_textreference(b)( ( (BLOCK_TEXTREFERENCE_PTR) (b) )->Data )
  141. #define db_data_clipsurface(b)  ( ( (BLOCK_CLIPSURFACE_PTR)   (b) )->Data )
  142. #define db_data_bitmapref(b)    ( ( (BLOCK_BITMAPREF_PTR)     (b) )->Data )
  143.  
  144. #if TOSO_SERVER
  145.  
  146. #define db_init_punkt(b,t)      inline_db_init_punkt    ( (BLOCK_PTR) (b), (short) (t) )
  147. #define db_init_constant(b)     inline_db_init_constant ( (BLOCK_PTR) (b) )
  148. #define db_init_arc(b)          inline_db_init_arc      ( (BLOCK_PTR) (b) )
  149. #define db_init_curve(b)        inline_db_init_curve    ( (BLOCK_PTR) (b) )
  150. #define db_init_text(b,c)       inline_db_init_text     ( (BLOCK_PTR) (b), (short) (c) )
  151. #define db_init_end(b)          inline_db_init_end      ( (BLOCK_PTR) (b) )
  152. #define db_init_attribute(b,t)  inline_db_init_attribute( (BLOCK_PTR) (b), (short) (t) )
  153. #define db_init_any(b,t)        inline_db_init_any      ( (BLOCK_PTR) (b), (short) (t) )
  154.  
  155. #else
  156.  
  157. #define db_init_punkt(b,t)      {                                                                       \
  158.                                   ((BLOCK_PTR)(b))->Header.Size  = DB_SIZE_POINT;                       \
  159.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  160.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  161.                                   ((BLOCK_PTR)(b))->Header.BlockType  = ((short) (t));                  \
  162.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_POINT;                  \
  163.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = 1;                              \
  164.                                 }
  165.  
  166. #define db_init_constant(b)     {                                                                       \
  167.                                   ((BLOCK_PTR)(b))->Header.Size  = DB_SIZE_CONSTANT;                    \
  168.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  169.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  170.                                   ((BLOCK_PTR)(b))->Header.BlockType  = DB_ALL_CONSTANT;                \
  171.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_DOUBLE;                 \
  172.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = 1;                              \
  173.                                 }
  174.  
  175. #define db_init_arc(b)          {                                                                       \
  176.                                   ((BLOCK_PTR)(b))->Header.Size  = DB_SIZE_ARC;                         \
  177.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  178.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  179.                                   ((BLOCK_PTR)(b))->Header.BlockType  = DB_ALL_ARC;                     \
  180.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_DOUBLE;                 \
  181.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = 1;                              \
  182.                                 }
  183.  
  184. #define db_init_curve(b)        {                                                                       \
  185.                                   ((BLOCK_PTR)(b))->Header.Size  = DB_SIZE_CURVE;                       \
  186.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  187.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  188.                                   ((BLOCK_PTR)(b))->Header.BlockType  = DB_ALL_CURVE;                   \
  189.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_DOUBLE;                 \
  190.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = 2;                              \
  191.                                 }
  192.  
  193. #define db_init_text(b,c)       {                                                                       \
  194.                                   ((BLOCK_PTR)(b))->Header.Size  = db_alignsize( DB_SIZE_TEXT + abs( (short) (c) ) );   \
  195.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  196.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  197.                                   ((BLOCK_PTR)(b))->Header.BlockType  = DB_ALL_TEXT;                    \
  198.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_TEXT;                   \
  199.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = (short) (c);                    \
  200.                                 }
  201.  
  202. #define db_init_end(b)          {                                                                       \
  203.                                   ((BLOCK_PTR)(b))->Header.Size  = DB_SIZE_END;                         \
  204.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  205.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  206.                                   ((BLOCK_PTR)(b))->Header.BlockType  = DB_END;                         \
  207.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_NATIVE;                 \
  208.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = 0;                              \
  209.                                 }
  210.  
  211. #define db_init_attribute(b,t)  {                                                                       \
  212.                                   ((BLOCK_PTR)(b))->Header.Size  = db_alignsize( sizeof( BLOCK_ATTRIBUTE ) + NAME_LENGTH_TEXTSHORT );   \
  213.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  214.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  215.                                   ((BLOCK_PTR)(b))->Header.BlockType  = (short) (t);                    \
  216.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_NATIVE;                 \
  217.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = NAME_LENGTH_TEXTSHORT;          \
  218.                                 }
  219.  
  220. #define db_init_any(b,t)        {                                                                       \
  221.                                   ((BLOCK_PTR)(b))->Header.Size  = DB_SIZE_ANY;                         \
  222.                                   ((BLOCK_PTR)(b))->Header.Ident = ((BLOCK_PTR)(b))->Header.Flag = 0;   \
  223.                                   ((BLOCK_PTR)(b))->Header.BlockOwner = 0;                              \
  224.                                   ((BLOCK_PTR)(b))->Header.BlockType  = (short) (t);                    \
  225.                                   ((BLOCK_PTR)(b))->Header.ElemType   = DB_TYPE_NATIVE;                 \
  226.                                   ((BLOCK_PTR)(b))->Header.ElemCount  = 0;                              \
  227.                                 }
  228.  
  229. #endif
  230.  
  231. //------ Determination of Standard Data Block Pointers for Complex Objects -----------------------------
  232.  
  233. #define DB_PTR_DECLARATION      BLOCK_PTR               b1 = NULL,      \
  234.                                                         b2 = NULL,      \
  235.                                                         b3 = NULL,      \
  236.                                                         b4 = NULL,      \
  237.                                                         b5 = NULL,      \
  238.                                                         b6 = NULL,      \
  239.                                                         b7 = NULL,      \
  240.                                                         b8 = NULL,      \
  241.                                                         b999 = NULL;    \
  242.                                 BLOCK_TEXT_PTR          a110 = NULL,    \
  243.                                                         b110 = NULL,    \
  244.                                                         c110 = NULL,    \
  245.                                                         d110 = NULL,    \
  246.                                                         e110 = NULL,    \
  247.                                                         f110 = NULL,    \
  248.                                                         g110 = NULL;    \
  249.                                 BLOCK_DIMLINE_PTR       b220 = NULL;    \
  250.                                 BLOCK_DIMLARGE_PTR      b225 = NULL;    \
  251.                                 BLOCK_DIMSMALL_PTR      b230 = NULL;    \
  252.                                 BLOCK_TEXTSTANDARD_PTR  b235 = NULL;    \
  253.                                 BLOCK_TEXTFRAME_PTR     b236 = NULL;    \
  254.                                 BLOCK_TEXTREFERENCE_PTR b237 = NULL;    \
  255.                                 BLOCK_CLIPSURFACE_PTR   b242 = NULL;    \
  256.                                 BLOCK_BITMAPREF_PTR     b243 = NULL;    \
  257.                                 BLOCK_T001_PTR          t001 = NULL;    \
  258.                                 BLOCK_T002_PTR          t002 = NULL;    \
  259.                                 BLOCK_T003_PTR          t003 = NULL;    \
  260.                                 BLOCK_T004_PTR          t004 = NULL;    \
  261.                                 BLOCK_T005_PTR          t005 = NULL;    \
  262.                                 BLOCK_T006_PTR          t006 = NULL;    \
  263.                                 BLOCK_T007_PTR          t007 = NULL;    \
  264.                                 BLOCK_T008_PTR          t008 = NULL;
  265.  
  266. #define db_ptr_dline(p)         {                                               \
  267.                                   b1   = db_first( p );                         \
  268.                                   b2   = db_next( b1 );                         \
  269.                                   b220 = (BLOCK_DIMLINE_PTR) db_next( b2 );     \
  270.                                   t003 = (BLOCK_T003_PTR) db_next( b220 );      \
  271.                                 }
  272.  
  273. #define db_ptr_darc(p)          {                                               \
  274.                                   b1   = db_first( p );                         \
  275.                                   b2   = db_next( b1 );                         \
  276.                                   b3   = db_next( b2 );                         \
  277.                                   b4   = db_next( b3 );                         \
  278.                                   b5   = db_next( b4 );                         \
  279.                                   b220 = (BLOCK_DIMLINE_PTR) db_next( b5 );     \
  280.                                   t004 = (BLOCK_T004_PTR) db_next( b220 );      \
  281.                                 }
  282.  
  283. #define db_ptr_ddistance(p)     {                                               \
  284.                                   b1 = db_first( p );                           \
  285.                                   b2 = db_next( b1 );                           \
  286.                                   b3 = db_next( b2 );                           \
  287.                                   b4 = db_next( b3 );                           \
  288.                                   b5 = db_next( b4 );                           \
  289.                                   b6 = db_next( b5 );                           \
  290.                                   b7 = db_next( b6 );                           \
  291.                                   a110 = (BLOCK_TEXT_PTR) db_next( b7 );        \
  292.                                   b110 = (BLOCK_TEXT_PTR) db_next( a110 );      \
  293.                                   c110 = (BLOCK_TEXT_PTR) db_next( b110 );      \
  294.                                   d110 = (BLOCK_TEXT_PTR) db_next( c110 );      \
  295.                                   e110 = (BLOCK_TEXT_PTR) db_next( d110 );      \
  296.                                   b225 = (BLOCK_DIMLARGE_PTR) db_next( e110 );  \
  297.                                   t005 = (BLOCK_T005_PTR) db_next( b225 );      \
  298.                                 }
  299.  
  300. #define db_ptr_dradius(p)       {                                               \
  301.                                   b1 = db_first( p );                           \
  302.                                   b2 = db_next( b1 );                           \
  303.                                   b3 = db_next( b2 );                           \
  304.                                   b4 = db_next( b3 );                           \
  305.                                   b5 = db_next( b4 );                           \
  306.                                   b6 = db_next( b5 );                           \
  307.                                   a110 = (BLOCK_TEXT_PTR) db_next( b6 );        \
  308.                                   b110 = (BLOCK_TEXT_PTR) db_next( a110 );      \
  309.                                   c110 = (BLOCK_TEXT_PTR) db_next( b110 );      \
  310.                                   d110 = (BLOCK_TEXT_PTR) db_next( c110 );      \
  311.                                   e110 = (BLOCK_TEXT_PTR) db_next( d110 );      \
  312.                                   b225 = (BLOCK_DIMLARGE_PTR) db_next( e110 );  \
  313.                                   t005 = (BLOCK_T005_PTR) db_next( b225 );      \
  314.                                 }
  315.  
  316. #define db_ptr_dangle(p)        {                                               \
  317.                                   b1 = db_first( p );                           \
  318.                                   b2 = db_next( b1 );                           \
  319.                                   b3 = db_next( b2 );                           \
  320.                                   b4 = db_next( b3 );                           \
  321.                                   b5 = db_next( b4 );                           \
  322.                                   b6 = db_next( b5 );                           \
  323.                                   b7 = db_next( b6 );                           \
  324.                                   a110 = (BLOCK_TEXT_PTR) db_next( b7 );        \
  325.                                   b110 = (BLOCK_TEXT_PTR) db_next( a110 );      \
  326.                                   c110 = (BLOCK_TEXT_PTR) db_next( b110 );      \
  327.                                   d110 = (BLOCK_TEXT_PTR) db_next( c110 );      \
  328.                                   e110 = (BLOCK_TEXT_PTR) db_next( d110 );      \
  329.                                   b225 = (BLOCK_DIMLARGE_PTR) db_next( e110 );  \
  330.                                   t006 = (BLOCK_T006_PTR) db_next( b225 );      \
  331.                                 }
  332.  
  333. #define db_ptr_darclength(p)    {                                               \
  334.                                   b1 = db_first( p );                           \
  335.                                   b2 = db_next( b1 );                           \
  336.                                   b3 = db_next( b2 );                           \
  337.                                   b4 = db_next( b3 );                           \
  338.                                   b8 = db_next( b4 );                           \
  339.                                   b5 = db_next( b8 );                           \
  340.                                   b6 = db_next( b5 );                           \
  341.                                   b7 = db_next( b6 );                           \
  342.                                   a110 = (BLOCK_TEXT_PTR) db_next( b7 );        \
  343.                                   b110 = (BLOCK_TEXT_PTR) db_next( a110 );      \
  344.                                   c110 = (BLOCK_TEXT_PTR) db_next( b110 );      \
  345.                                   d110 = (BLOCK_TEXT_PTR) db_next( c110 );      \
  346.                                   e110 = (BLOCK_TEXT_PTR) db_next( d110 );      \
  347.                                   b225 = (BLOCK_DIMLARGE_PTR) db_next( e110 );  \
  348.                                   t006 = (BLOCK_T006_PTR) db_next( b225 );      \
  349.                                 }
  350.  
  351. #define db_ptr_dcoordinate(p)   {                                               \
  352.                                   b1 = db_first( p );                           \
  353.                                   b2 = db_next( b1 );                           \
  354.                                   b3 = db_next( b2 );                           \
  355.                                   a110 = (BLOCK_TEXT_PTR) db_next( b3 );        \
  356.                                   b110 = (BLOCK_TEXT_PTR) db_next( a110 );      \
  357.                                   c110 = (BLOCK_TEXT_PTR) db_next( b110 );      \
  358.                                   d110 = (BLOCK_TEXT_PTR) db_next( c110 );      \
  359.                                   e110 = (BLOCK_TEXT_PTR) db_next( d110 );      \
  360.                                   f110 = (BLOCK_TEXT_PTR) db_next( e110 );      \
  361.                                   g110 = (BLOCK_TEXT_PTR) db_next( f110 );      \
  362.                                   b230 = (BLOCK_DIMSMALL_PTR) db_next( g110 );  \
  363.                                   t007 = (BLOCK_T007_PTR) db_next( b230 );      \
  364.                                 }
  365.  
  366. #define db_ptr_darea(p)         {                                               \
  367.                                   b1 = db_first( p );                           \
  368.                                   b2 = db_next( b1 );                           \
  369.                                   b3 = db_next( b2 );                           \
  370.                                   a110 = (BLOCK_TEXT_PTR) db_next( b3 );        \
  371.                                   b110 = (BLOCK_TEXT_PTR) db_next( a110 );      \
  372.                                   c110 = (BLOCK_TEXT_PTR) db_next( b110 );      \
  373.                                   d110 = (BLOCK_TEXT_PTR) db_next( c110 );      \
  374.                                   e110 = (BLOCK_TEXT_PTR) db_next( d110 );      \
  375.                                   b230 = (BLOCK_DIMSMALL_PTR) db_next( e110 );  \
  376.                                   t007 = (BLOCK_T007_PTR) db_next( b230 );      \
  377.                                 }
  378.  
  379. #define db_ptr_textstandard(p)  {                                               \
  380.                                   b110 = (BLOCK_TEXT_PTR) db_first( p );        \
  381.                                   b235 = (BLOCK_TEXTSTANDARD_PTR) db_next( b110 );  \
  382.                                 }
  383.  
  384. #define db_ptr_textframe(p)     {                                               \
  385.                                   b1 = db_first( p );                           \
  386.                                   b2 = db_next( b1 );                           \
  387.                                   b3 = db_next( b2 );                           \
  388.                                   b110 = (BLOCK_TEXT_PTR) db_next( b3 );        \
  389.                                   b236 = (BLOCK_TEXTFRAME_PTR) db_next( b110 ); \
  390.                                 }
  391.  
  392. #define db_ptr_textreference(p) {                                               \
  393.                                   b1   = db_first( p );                         \
  394.                                   b2   = db_next( b1 );                         \
  395.                                   b110 = (BLOCK_TEXT_PTR) db_next( b2 );        \
  396.                                   b235 = (BLOCK_TEXTSTANDARD_PTR) db_next( b110 );  \
  397.                                   b237 = (BLOCK_TEXTREFERENCE_PTR) db_next( b235 ); \
  398.                                   t008 = (BLOCK_T008_PTR) db_next( b237 );      \
  399.                                 }
  400.  
  401. #define db_ptr_comment(p)       {                                               \
  402.                                   b1   = db_first( p );                         \
  403.                                   b2   = db_next( b1 );                         \
  404.                                   b110 = (BLOCK_TEXT_PTR) db_next( b2 );        \
  405.                                 }
  406.  
  407. #define db_ptr_clipsurface(p)   {                                               \
  408.                                   b242 = (BLOCK_CLIPSURFACE_PTR) db_first( p ); \
  409.                                 }
  410.  
  411. #define db_ptr_bitmapref(p)     {                                               \
  412.                                   b243 = (BLOCK_BITMAPREF_PTR) db_first( p );   \
  413.                                 }
  414.  
  415. //------ Command IDs -----------------------------------------------------------------------------------
  416.  
  417. #define IDM_BASE                        0x0000ffff              // Bits containing the command ID
  418. #define IDM_FLAG                        0x00ff0000              // Bits containing the commang flags
  419.  
  420. #define IDM_LABEL                       0x00010000              // Flag for a main menu label
  421. #define IDM_ENTRY                       0x00020000              // Flag for a main menu entry
  422. #define IDM_POPUP_LABEL                 0x00040000              // Flag for a submenu label
  423. #define IDM_POPUP_ENTRY                 0x00080000              // Flag for a submenu entry
  424.  
  425. #define IDM_DEFAULT                     0x01000000              // Flag for a default entry
  426. #define IDM_MODULE                      0x02000000              // Flag for a module insertion point
  427. #define IDM_CUSTOM                      0x04000000              // Flag for a custom menu or menu entry
  428. #define IDM_SEPARATOR                   0x08000000              // Flag for separating line
  429. #define IDM_END                         0x80000000              // Flag for end-of-list
  430.  
  431. #define IDM_FIRST_ENTRY                 100
  432.  
  433. #define IDM_FILE_FIRST                  100
  434. #define IDM_FILE_NEW                            100
  435. #define IDM_FILE_OPEN                           101
  436. #define IDM_FILE_SAVE                           102
  437. #define IDM_FILE_SAVE_AS                        103
  438. #define IDM_FILE_LIST                           104
  439. #define IDM_FILE_IMPORT_SUB                     105
  440. #define IDM_FILE_IMPORT_T4G                     106
  441. #define IDM_FILE_IMPORT_EMF                     107
  442. #define IDM_FILE_IMPORT_WMF                     108
  443. #define IDM_FILE_IMPORT_BMP                     109
  444. #define IDM_FILE_IMPORT_BMP_UPDATE              110
  445. #define IDM_FILE_EXPORT_SUB                     111
  446. #define IDM_FILE_EXPORT_T4G                     112
  447. #define IDM_FILE_EXPORT_EMF                     113
  448. #define IDM_FILE_EXPORT_WMF                     114
  449. #define IDM_FILE_EXPORT_BMP                     115
  450. #define IDM_FILE_EXPORT_BMP_AREA                116
  451. #define IDM_FILE_EXTRA_SUB                      117
  452. #define IDM_FILE_EXTRA_ERASE                    118
  453. #define IDM_FILE_EXTRA_SAVE_DUP                 119
  454. #define IDM_FILE_EXTRA_LOAD_DUP                 120
  455. #define IDM_FILE_EXTRA_ARCHIVE                  121
  456. #define IDM_FILE_EXTRA_AUTOSAVE                 122
  457. #define IDM_FILE_PRINT                          123
  458. #define IDM_FILE_PRINT_AREA                     124
  459. #define IDM_FILE_EXIT                           125
  460. #define IDM_FILE_LAST                   126
  461.  
  462. #define IDM_EDIT_FIRST                  200
  463. #define IDM_EDIT_UNDO                           200
  464. #define IDM_EDIT_REDO                           201
  465. #define IDM_EDIT_UNDO_ERASE                     202
  466. #define IDM_EDIT_CUT                            203
  467. #define IDM_EDIT_COPY                           204
  468. #define IDM_EDIT_PASTE                          205
  469. #define IDM_EDIT_COMMENT_SUB                    206
  470. #define IDM_EDIT_COMMENT                        207
  471. #define IDM_EDIT_COMMENT_PARAM                  208
  472. #define IDM_EDIT_TVG_DETAILS                    209
  473. #define IDM_EDIT_QUEUE                          210
  474. #define IDM_EDIT_LAST                   211
  475.  
  476. #define IDM_CONFIG_FIRST                300
  477. #define IDM_CONFIG_PAGE_FORMAT                  300
  478. #define IDM_CONFIG_LAYER_SUB                    301
  479. #define IDM_CONFIG_LAYER_LIST                   302
  480. #define IDM_CONFIG_LAYER_EDIT                   303
  481. #define IDM_CONFIG_LAYER_DEFAULT                304
  482. #define IDM_CONFIG_LAYER_RESET                  305
  483. #define IDM_CONFIG_XLAYER_SUB                   306
  484. #define IDM_CONFIG_XLAYER_SELECT                307
  485. #define IDM_CONFIG_XLAYER_EDIT                  308
  486. #define IDM_CONFIG_XLAYER_ASSIGN                309
  487. #define IDM_CONFIG_XLAYER_DISABLE               310
  488. #define IDM_CONFIG_XLAYER_ENABLE                311
  489. #define IDM_CONFIG_XLAYER_FREEZE                312
  490. #define IDM_CONFIG_XLAYER_MELT                  313
  491. #define IDM_CONFIG_XLAYER_IGNORE                314
  492. #define IDM_CONFIG_XLAYER_USE                   315
  493. #define IDM_CONFIG_XLAYER_SHADE                 316
  494. #define IDM_CONFIG_XLAYER_LIGHT                 317
  495. #define IDM_CONFIG_XLAYER_HIDE                  318
  496. #define IDM_CONFIG_XLAYER_CONCENTRATE           319
  497. #define IDM_CONFIG_XLAYER_UNDO                  320
  498. #define IDM_CONFIG_SYSTEM_SUB                   321
  499. #define IDM_CONFIG_SYSTEM_LIST                  322
  500. #define IDM_CONFIG_SYSTEM_EDIT                  323
  501. #define IDM_CONFIG_SYSTEM_ORIGIN                324
  502. #define IDM_CONFIG_SYSTEM_SHOW_DISPLAY          325
  503. #define IDM_CONFIG_SYSTEM_EDIT_DISPLAY          326
  504. #define IDM_CONFIG_SYSTEM_SHOW_POSITION         327
  505. #define IDM_CONFIG_SYSTEM_EDIT_POSITION         328
  506. #define IDM_CONFIG_PEN_SUB                      329
  507. #define IDM_CONFIG_PEN_LIST                     330
  508. #define IDM_CONFIG_PEN_EDIT                     331
  509. #define IDM_CONFIG_PEN_DEFAULT                  332
  510. #define IDM_CONFIG_PEN_LINE                     333
  511. #define IDM_CONFIG_ZOOM_SUB                     334
  512. #define IDM_CONFIG_ZOOM_AREA                    335
  513. #define IDM_CONFIG_ZOOM_OBJECTS                 336
  514. #define IDM_CONFIG_ZOOM_PAGE                    337
  515. #define IDM_CONFIG_ZOOM_ORIGINAL                338
  516. #define IDM_CONFIG_ZOOM_FACTOR                  339
  517. #define IDM_CONFIG_ZOOM_UNDO                    340
  518. #define IDM_CONFIG_ZOOM_PAN                     341
  519. #define IDM_CONFIG_ZOOM_PLUS                    342
  520. #define IDM_CONFIG_ZOOM_MINUS                   343
  521. #define IDM_CONFIG_SAVE_DEFAULT                 344
  522. #define IDM_CONFIG_WINDOW_SUB                   345
  523. #define IDM_CONFIG_WINDOW_ARRANGE               346
  524. #define IDM_CONFIG_WINDOW2                      347
  525. #define IDM_CONFIG_WINDOW3                      348
  526. #define IDM_CONFIG_WINDOW4                      349
  527. #define IDM_CONFIG_WINDOW_VIEW                  350
  528. #define IDM_CONFIG_WINDOW_PANEL                 351
  529. #define IDM_CONFIG_WINDOW_PEN                   352
  530. #define IDM_CONFIG_WINDOW_LAYER                 353
  531. #define IDM_CONFIG_WINDOW_STATUS                354
  532. #define IDM_CONFIG_WINDOW_TOOLBOX               355
  533. #define IDM_CONFIG_WINDOW_PROPERTY              356
  534. #define IDM_CONFIG_WINDOW_BLOCK                 357
  535. #define IDM_CONFIG_WINDOW_GUIDE                 358
  536. #define IDM_CONFIG_PROGSTATUS                   359
  537. #define IDM_CONFIG_PROFILE_SUB                  360
  538. #define IDM_CONFIG_PROFILE_WINDOW               361
  539. #define IDM_CONFIG_PROFILE_GENERAL              362
  540. #define IDM_CONFIG_PROFILE_PATHS                363
  541. #define IDM_CONFIG_PROFILE_LOADSAVE             364
  542. #define IDM_CONFIG_TVI_SUB                      365
  543. #define IDM_CONFIG_TVI_SCREEN                   366
  544. #define IDM_CONFIG_TVI_OUTPUT                   367
  545. #define IDM_CONFIG_TVI_PLOTTER                  368
  546. #define IDM_CONFIG_TVI_ACCURACY                 369
  547. #define IDM_CONFIG_TVI_COLORS                   370
  548. #define IDM_CONFIG_TVI_TIME                     371
  549. #define IDM_CONFIG_TVI_BLOCK                    372
  550. #define IDM_CONFIG_TVI_KEY_CHANGE               373
  551. #define IDM_CONFIG_TVI_KEY_DISPLAY              374
  552. #define IDM_CONFIG_TVI_MOUSE                    375
  553. #define IDM_CONFIG_TVI_LOAD                     376
  554. #define IDM_CONFIG_TVI_SAVE_AS                  377
  555. #define IDM_CONFIG_TVI_DETAILS                  378
  556. #define IDM_CONFIG_TVI_SAVE_DEFAULT             379
  557. #define IDM_CONFIG_TVI_SAVEONEXIT               380
  558. #define IDM_CONFIG_LAST                 381
  559.  
  560. #define IDM_SHAPE_FIRST                 400
  561. #define IDM_SHAPE_EDIT_PARAM                    400
  562. #define IDM_SHAPE_EDIT_TEXT                     401
  563. #define IDM_SHAPE_ERASE                         402
  564. #define IDM_SHAPE_MODIFY                        403
  565. #define IDM_SHAPE_MOVE_SUB                      404
  566. #define IDM_SHAPE_MOVE_STANDARD                 405
  567. #define IDM_SHAPE_MOVE_PERP                     406
  568. #define IDM_SHAPE_MOVE_PARALLEL                 407
  569. #define IDM_SHAPE_MOVE_RELATIVE                 408
  570. #define IDM_SHAPE_SCALE_SUB                     409
  571. #define IDM_SHAPE_SCALE_FACTOR                  410
  572. #define IDM_SHAPE_SCALE_PROP                    411
  573. #define IDM_SHAPE_SCALE_ANY                     412
  574. #define IDM_SHAPE_SCALE_REFERENCE               413
  575. #define IDM_SHAPE_ROTATE_SUB                    414
  576. #define IDM_SHAPE_ROTATE_CENTER                 415
  577. #define IDM_SHAPE_ROTATE_ANY                    416
  578. #define IDM_SHAPE_ROTATE_REFERENCE              417
  579. #define IDM_SHAPE_REFLECT_SUB                   418
  580. #define IDM_SHAPE_REFLECT_H                     419
  581. #define IDM_SHAPE_REFLECT_V                     420
  582. #define IDM_SHAPE_REFLECT_LINE                  421
  583. #define IDM_SHAPE_DISTORT_SUB                   422
  584. #define IDM_SHAPE_DISTORT_H                     423
  585. #define IDM_SHAPE_DISTORT_V                     424
  586. #define IDM_SHAPE_ALIGN_SUB                     425
  587. #define IDM_SHAPE_ALIGN_C_PAGE_H                426
  588. #define IDM_SHAPE_ALIGN_C_PAGE_V                427
  589. #define IDM_SHAPE_ALIGN_C_PAGE_BOTH             428
  590. #define IDM_SHAPE_ALIGN_C_RECT_H                429
  591. #define IDM_SHAPE_ALIGN_C_RECT_V                430
  592. #define IDM_SHAPE_ALIGN_C_RECT_BOTH             431
  593. #define IDM_SHAPE_ALIGN_H_LEFT                  432
  594. #define IDM_SHAPE_ALIGN_H_CENTER                433
  595. #define IDM_SHAPE_ALIGN_H_RIGHT                 434
  596. #define IDM_SHAPE_ALIGN_V_TOP                   435
  597. #define IDM_SHAPE_ALIGN_V_CENTER                436
  598. #define IDM_SHAPE_ALIGN_V_BOTTOM                437
  599. #define IDM_SHAPE_PMOVE_SINGLE                  438
  600. #define IDM_SHAPE_PMOVE_SUB                     439
  601. #define IDM_SHAPE_PMOVE_STANDARD                440
  602. #define IDM_SHAPE_PMOVE_PERP                    441
  603. #define IDM_SHAPE_PMOVE_PARALLEL                442
  604. #define IDM_SHAPE_PMOVE_RELATIVE                443
  605. #define IDM_SHAPE_GROUP_SUB                     444
  606. #define IDM_SHAPE_GROUP_LINK                    445
  607. #define IDM_SHAPE_GROUP_UNLINK                  446
  608. #define IDM_SHAPE_ORDER_SUB                     447
  609. #define IDM_SHAPE_ORDER_BACK                    448
  610. #define IDM_SHAPE_ORDER_BEHIND                  449
  611. #define IDM_SHAPE_ORDER_BEFORE                  450
  612. #define IDM_SHAPE_ORDER_FRONT                   451
  613. #define IDM_SHAPE_LAST                  452
  614.  
  615. #define IDM_DRAW_FIRST                  500
  616. #define IDM_DRAW_LINE_SUB                       500
  617. #define IDM_DRAW_LINE_STANDARD                  501
  618. #define IDM_DRAW_LINE_LINE                      502
  619. #define IDM_DRAW_LINE_H                         503
  620. #define IDM_DRAW_LINE_V                         504
  621. #define IDM_DRAW_LINE_MIDPERP                   505
  622. #define IDM_DRAW_LINE_PERP                      506
  623. #define IDM_DRAW_LINE_PARALLEL                  507
  624. #define IDM_DRAW_LINE_PARALLEL_NUM              508
  625. #define IDM_DRAW_LINE_ANGLE                     509
  626. #define IDM_DRAW_LINE_BISECTOR                  510
  627. #define IDM_DRAW_LINE_CROSS                     511
  628. #define IDM_DRAW_LINE_POLY                      512
  629. #define IDM_DRAW_LINE_DISTANT                   513
  630. #define IDM_DRAW_LINE_ZIGZAG                    514
  631. #define IDM_DRAW_TANGENT_SUB                    515
  632. #define IDM_DRAW_TANGENT_OP                     516
  633. #define IDM_DRAW_TANGENT_OPH                    517
  634. #define IDM_DRAW_TANGENT_OPV                    518
  635. #define IDM_DRAW_TANGENT_OPE                    519
  636. #define IDM_DRAW_TANGENT_OAE                    520
  637. #define IDM_DRAW_TANGENT_OO                     521
  638. #define IDM_DRAW_POLYGON_SUB                    522
  639. #define IDM_DRAW_POLYGON_TRIANGLE               523
  640. #define IDM_DRAW_POLYGON_QUADRANGLE             524
  641. #define IDM_DRAW_POLYGON_PARALLEL               525
  642. #define IDM_DRAW_POLYGON_RECTANGLE              526
  643. #define IDM_DRAW_POLYGON_ANY                    527
  644. #define IDM_DRAW_POLYEDER_SUB                   528
  645. #define IDM_DRAW_POLYEDER_STANDARD              529
  646. #define IDM_DRAW_POLYEDER_CIRCLE                530
  647. #define IDM_DRAW_POLYEDER_CIRCUMCIRCLE          531
  648. #define IDM_DRAW_POLYEDER_DIAMETER              532
  649. #define IDM_DRAW_POLYEDER_SIDELENGTH            533
  650. #define IDM_DRAW_POLYEDER_INNERRADIUS           534
  651. #define IDM_DRAW_CIRCLE_SUB                     535
  652. #define IDM_DRAW_CIRCLE_STANDARD                536
  653. #define IDM_DRAW_CIRCLE_CIRCLE                  537
  654. #define IDM_DRAW_CIRCLE_CIRCUMCIRCLE            538
  655. #define IDM_DRAW_CIRCLE_DIAMETER                539
  656. #define IDM_DRAW_CIRCLE_INCIRCLE                540
  657. #define IDM_DRAW_CIRCLE_CONC                    541
  658. #define IDM_DRAW_CIRCLE_PERP                    542
  659. #define IDM_DRAW_CIRCLE_LLL                     543
  660. #define IDM_DRAW_CIRCLE_PPR                     544
  661. #define IDM_DRAW_CIRCLE_OPR                     545
  662. #define IDM_DRAW_CIRCLE_OOR                     546
  663. #define IDM_DRAW_ARC_SUB                        547
  664. #define IDM_DRAW_ARC_STANDARD                   548
  665. #define IDM_DRAW_ARC_CIRCLE                     549
  666. #define IDM_DRAW_ARC_CIRCUMCIRCLE               550
  667. #define IDM_DRAW_ARC_DIAMETER                   551
  668. #define IDM_DRAW_ARC_CONC_CIRCLE                552
  669. #define IDM_DRAW_ARC_CONC_ARC                   553
  670. #define IDM_DRAW_ARC_PPR                        554
  671. #define IDM_DRAW_ARC_OPR                        555
  672. #define IDM_DRAW_ARC_OOR                        556
  673. #define IDM_DRAW_ELLIPSE_SUB                    557
  674. #define IDM_DRAW_ELLIPSE_STANDARD               558
  675. #define IDM_DRAW_ELLIPSE_ROTATED                559
  676. #define IDM_DRAW_ELLIPSE_ANY                    560
  677. #define IDM_DRAW_ELLIPSE_ELLIPSE                561
  678. #define IDM_DRAW_EARC_SUB                       562
  679. #define IDM_DRAW_EARC_STANDARD                  563
  680. #define IDM_DRAW_EARC_ANY                       564
  681. #define IDM_DRAW_EARC_ELLIPSE                   565
  682. #define IDM_DRAW_ARCMODE_SUB                    566
  683. #define IDM_DRAW_ARCMODE_ARC                    567
  684. #define IDM_DRAW_ARCMODE_SECTOR                 568
  685. #define IDM_DRAW_ARCMODE_SEGMENT                569
  686. #define IDM_DRAW_ARCMODE_TOGGLE                 570
  687. #define IDM_DRAW_ARCMODE_DIRECTION              571
  688. #define IDM_DRAW_FREEHAND                       572
  689. #define IDM_DRAW_SPLINE                         573
  690. #define IDM_DRAW_CURVE                          574
  691. #define IDM_DRAW_SURFACE                        575
  692. #define IDM_DRAW_HATCH_SUB                      576
  693. #define IDM_DRAW_HATCH_OBJ                      577
  694. #define IDM_DRAW_HATCH_SURFACE                  578
  695. #define IDM_DRAW_HATCH_TYPE_LIST                579
  696. #define IDM_DRAW_HATCH_TYPE_EDIT                580
  697. #define IDM_DRAW_HATCH_TYPE_LINE                581
  698. #define IDM_DRAW_HATCH_ORIGIN                   582
  699. #define IDM_DRAW_LAST                   583
  700.  
  701. #define IDM_GEO_FIRST                   600
  702. #define IDM_GEO_LINE_SUB                        600
  703. #define IDM_GEO_LINE_STANDARD                   601
  704. #define IDM_GEO_LINE_LINE                       602
  705. #define IDM_GEO_LINE_H                          603
  706. #define IDM_GEO_LINE_V                          604
  707. #define IDM_GEO_LINE_MIDPERP                    605
  708. #define IDM_GEO_LINE_PERP                       606
  709. #define IDM_GEO_LINE_PARALLEL                   607
  710. #define IDM_GEO_LINE_PARALLEL_NUM               608
  711. #define IDM_GEO_LINE_ANGLE                      609
  712. #define IDM_GEO_LINE_BISECTOR                   610
  713. #define IDM_GEO_LINE_CROSS                      611
  714. #define IDM_GEO_TANGENT_SUB                     612
  715. #define IDM_GEO_TANGENT_OP                      613
  716. #define IDM_GEO_TANGENT_H                       614
  717. #define IDM_GEO_TANGENT_V                       615
  718. #define IDM_GEO_TANGENT_OA                      616
  719. #define IDM_GEO_TANGENT_OO                      617
  720. #define IDM_GEO_CIRCLE_SUB                      618
  721. #define IDM_GEO_CIRCLE_STANDARD                 619
  722. #define IDM_GEO_CIRCLE_CIRCLE                   620
  723. #define IDM_GEO_CIRCLE_CIRCUMCIRCLE             621
  724. #define IDM_GEO_CIRCLE_DIAMETER                 622
  725. #define IDM_GEO_CIRCLE_INCIRCLE                 623
  726. #define IDM_GEO_CIRCLE_CONC                     624
  727. #define IDM_GEO_CIRCLE_PERP                     625
  728. #define IDM_GEO_CIRCLE_LLL                      626
  729. #define IDM_GEO_CIRCLE_PPR                      627
  730. #define IDM_GEO_CIRCLE_OPR                      628
  731. #define IDM_GEO_CIRCLE_OOR                      629
  732. #define IDM_GEO_ELLIPSE_SUB                     630
  733. #define IDM_GEO_ELLIPSE_STANDARD                631
  734. #define IDM_GEO_ELLIPSE_ROTATED                 632
  735. #define IDM_GEO_ELLIPSE_ANY                     633
  736. #define IDM_GEO_ELLIPSE_ELLIPSE                 634
  737. #define IDM_GEO_DISPLAY                         635
  738. #define IDM_GEO_FREEZE                          636
  739. #define IDM_GEO_MARK                            637
  740. #define IDM_GEO_DIVIDE_SUB                      638
  741. #define IDM_GEO_DIVIDE_DISTANCE                 639
  742. #define IDM_GEO_DIVIDE_OBJECT                   640
  743. #define IDM_GEO_DIVIDE_ARRAY                    641
  744. #define IDM_GEO_COPY_SUB                        642
  745. #define IDM_GEO_COPY_MARK                       643
  746. #define IDM_GEO_COPY_ROTATE                     644
  747. #define IDM_GEO_COPY_STEP                       645
  748. #define IDM_GEO_COPY_DISTANCE                   646
  749. #define IDM_GEO_COPY_OBJECT                     647
  750. #define IDM_GEO_COPY_ARRAY                      648
  751. #define IDM_GEO_LAST                    649
  752.  
  753. #define IDM_TRIM_FIRST                  700
  754. #define IDM_TRIM_TRIM_SUB                       700
  755. #define IDM_TRIM_TRIM_CUTOUT                    701
  756. #define IDM_TRIM_TRIM_SPLIT                     702
  757. #define IDM_TRIM_TRIM_RESOLVE                   703
  758. #define IDM_TRIM_TRIM_LENGTH_P                  704
  759. #define IDM_TRIM_TRIM_LENGTH_OBJ                705
  760. #define IDM_TRIM_TRIM_ANGLE_P                   706
  761. #define IDM_TRIM_TRIM_ANGLE_OBJ                 707
  762. #define IDM_TRIM_CURVE_SUB                      708
  763. #define IDM_TRIM_CURVE_EDIT                     709
  764. #define IDM_TRIM_CURVE_EXTENT                   710
  765. #define IDM_TRIM_CURVE_CUT                      711
  766. #define IDM_TRIM_SURFACE_SUB                    712
  767. #define IDM_TRIM_SURFACE_GENERATE               713
  768. #define IDM_TRIM_SURFACE_OR                     714
  769. #define IDM_TRIM_SURFACE_AND                    715
  770. #define IDM_TRIM_SURFACE_MINUS                  716
  771. #define IDM_TRIM_SURFACE_COMBINE                717
  772. #define IDM_TRIM_SURFACE_CUT                    718
  773. #define IDM_TRIM_CORNER                         719
  774. #define IDM_TRIM_CHAMFER_SUB                    720
  775. #define IDM_TRIM_CHAMFER_OO                     721
  776. #define IDM_TRIM_CHAMFER_CORNER                 722
  777. #define IDM_TRIM_CHAMFER_ALL                    723
  778. #define IDM_TRIM_ROUNDOUT_SUB                   724
  779. #define IDM_TRIM_ROUNDOUT_OO                    725
  780. #define IDM_TRIM_ROUNDOUT_CORNER                726
  781. #define IDM_TRIM_ROUNDOUT_ALL                   727
  782. #define IDM_TRIM_ROUNDIN_SUB                    728
  783. #define IDM_TRIM_ROUNDIN_OO                     729
  784. #define IDM_TRIM_ROUNDIN_CORNER                 730
  785. #define IDM_TRIM_ROUNDIN_ALL                    731
  786. #define IDM_TRIM_TRANSFORM_SUB                  732
  787. #define IDM_TRIM_TRANSFORM_INVERT               733
  788. #define IDM_TRIM_TRANSFORM_ZIGZAG               734
  789. #define IDM_TRIM_TRANSFORM_CIRCLE               735
  790. #define IDM_TRIM_TRANSFORM_ARC                  736
  791. #define IDM_TRIM_TRANSFORM_SECTOR               737
  792. #define IDM_TRIM_TRANSFORM_SEGMENT              738
  793. #define IDM_TRIM_TRANSFORM_ELLIPSE              739
  794. #define IDM_TRIM_TRANSFORM_EARC                 740
  795. #define IDM_TRIM_TRANSFORM_ESECTOR              741
  796. #define IDM_TRIM_TRANSFORM_ESEGMENT             742
  797. #define IDM_TRIM_TRANSFORM_CURVE                743
  798. #define IDM_TRIM_TRANSFORM_SURFACE              744
  799. #define IDM_TRIM_CLIP_SUB                       745
  800. #define IDM_TRIM_CLIP_CREATE_INSIDE             746
  801. #define IDM_TRIM_CLIP_CREATE_OUTSIDE            747
  802. #define IDM_TRIM_CLIP_RESOLVE                   748
  803. #define IDM_TRIM_LAST                   749
  804.  
  805. #define IDM_DIM_FIRST                   800
  806. #define IDM_DIM_TEXT_SUB                        800
  807. #define IDM_DIM_TEXT_STANDARD                   801
  808. #define IDM_DIM_TEXT_FRAME                      802
  809. #define IDM_DIM_TEXT_REFERENCE                  803
  810. #define IDM_DIM_TEXT_FLAT                       804
  811. #define IDM_DIM_LINE_SUB                        805
  812. #define IDM_DIM_LINE_LINE                       806
  813. #define IDM_DIM_LINE_ARC                        807
  814. #define IDM_DIM_SUB1                            808
  815. #define IDM_DIM_LENGTH_P                        809
  816. #define IDM_DIM_LENGTH_OBJ                      810
  817. #define IDM_DIM_DISTANCE_P                      811
  818. #define IDM_DIM_DISTANCE_OBJ                    812
  819. #define IDM_DIM_RADIUS_P                        813
  820. #define IDM_DIM_RADIUS_OBJ                      814
  821. #define IDM_DIM_DIAMETER_P                      815
  822. #define IDM_DIM_DIAMETER_OBJ                    816
  823. #define IDM_DIM_ANGLE_P                         817
  824. #define IDM_DIM_ANGLE_LL                        818
  825. #define IDM_DIM_ANGLE_OBJ                       819
  826. #define IDM_DIM_ARCLENGTH_P                     820
  827. #define IDM_DIM_ARCLENGTH_OBJ                   821
  828. #define IDM_DIM_COORDINATE                      822
  829. #define IDM_DIM_SUB2                            823
  830. #define IDM_DIM_AREA                            824
  831. #define IDM_DIM_PERIMETER                       825
  832. #define IDM_DIM_PARAMETER                       826
  833. #define IDM_DIM_EDIT_LINE_SUB                   827
  834. #define IDM_DIM_EDIT_LINE_ANGLE                 828
  835. #define IDM_DIM_EDIT_LINE_POSITION              829
  836. #define IDM_DIM_EDIT_NUM_SUB                    830
  837. #define IDM_DIM_EDIT_NUM_ANGLE                  831
  838. #define IDM_DIM_EDIT_NUM_POSITION               832
  839. #define IDM_DIM_EDIT_NUM_UPDATE                 833
  840. #define IDM_DIM_FONT                            834
  841. #define IDM_DIM_LAST                    835
  842.  
  843. #define IDM_LIBRARY_FIRST               900
  844. #define IDM_LIBRARY_BLOCK_SUB                   900
  845. #define IDM_LIBRARY_BLOCK_INSERT                901
  846. #define IDM_LIBRARY_BLOCK_READ                  902
  847. #define IDM_LIBRARY_BLOCK_READ_FRAME            903
  848. #define IDM_LIBRARY_BLOCK_EDIT                  904
  849. #define IDM_LIBRARY_POSNO_SUB                   905
  850. #define IDM_LIBRARY_POSNO_ASSIGN                906
  851. #define IDM_LIBRARY_POSNO_DELETE                907
  852. #define IDM_LIBRARY_POSNO_REORDER               908
  853. #define IDM_LIBRARY_LIST                        909
  854. #define IDM_LIBRARY_CLEAN                       910
  855. #define IDM_LIBRARY_CONVERT                     911
  856. #define IDM_LIBRARY_SPLIT                       912
  857. #define IDM_LIBRARY_REPLACE_BLOCK               913
  858. #define IDM_LIBRARY_REPLACE_LIBRARY             914
  859. #define IDM_LIBRARY_TVL                         915
  860. #define IDM_LIBRARY_LAST                916
  861.  
  862. #define IDM_EXTRA_FIRST                 1000
  863. #define IDM_EXTRA_KEY_F10                       1000
  864. #define IDM_EXTRA_KEY_F11                       1001
  865. #define IDM_EXTRA_KEY_F12                       1002
  866. #define IDM_EXTRA_SEL_SUB                       1003
  867. #define IDM_EXTRA_SEL_SET                       1004
  868. #define IDM_EXTRA_SEL_CLEAR                     1005
  869. #define IDM_EXTRA_SEL_INVERT                    1006
  870. #define IDM_EXTRA_KEY_F6_SHIFT                  1007
  871. #define IDM_EXTRA_KEY_F8                        1008
  872. #define IDM_EXTRA_KEY_ESC                       1009
  873. #define IDM_EXTRA_KEY_ESC_SHIFT                 1010
  874. #define IDM_EXTRA_KEY_F7                        1011
  875. #define IDM_EXTRA_KEY_F5                        1012
  876. #define IDM_EXTRA_KEY_F5_SHIFT                  1013
  877. #define IDM_EXTRA_SNAP_SUB                      1014
  878. #define IDM_EXTRA_SNAP_GLOBAL                   1015
  879. #define IDM_EXTRA_SNAP_CENTER                   1016
  880. #define IDM_EXTRA_SNAP_QUADRANT                 1017
  881. #define IDM_EXTRA_SNAP_EDGE                     1018
  882. #define IDM_EXTRA_SNAP_CORNER                   1019
  883. #define IDM_EXTRA_SNAP_INTERSECTION             1020
  884. #define IDM_EXTRA_SNAP_GEO                      1021
  885. #define IDM_EXTRA_SNAP_MARK                     1022
  886. #define IDM_EXTRA_SNAP_OTHERS                   1023
  887. #define IDM_EXTRA_SNAP_RELATIVE                 1024
  888. #define IDM_EXTRA_SNAP_RADIUS                   1025
  889. #define IDM_EXTRA_KEY_SUB                       1026
  890. #define IDM_EXTRA_KEY_SPACE                     1027
  891. #define IDM_EXTRA_KEY_LBUTTON                   1028
  892. #define IDM_EXTRA_KEY_MBUTTON                   1029
  893. #define IDM_EXTRA_KEY_RBUTTON                   1030
  894. #define IDM_EXTRA_KEY_ALT                       1031
  895. #define IDM_EXTRA_KEY_LEFT                      1032
  896. #define IDM_EXTRA_KEY_RIGHT                     1033
  897. #define IDM_EXTRA_KEY_UP                        1034
  898. #define IDM_EXTRA_KEY_DOWN                      1035
  899. #define IDM_EXTRA_KEY_HOME                      1036
  900. #define IDM_EXTRA_KEY_END                       1037
  901. #define IDM_EXTRA_KEY_PGUP                      1038
  902. #define IDM_EXTRA_KEY_PGDN                      1039
  903. #define IDM_EXTRA_KEY_EDIT_STEP                 1040
  904. #define IDM_EXTRA_LAST                  1041
  905.  
  906. #define IDM_HELP_FIRST                  1100
  907. #define IDM_HELP_INDEX                          1100
  908. #define IDM_HELP_COMMAND                        1101
  909. #define IDM_HELP_CLICK                          1102
  910. #define IDM_HELP_ON_HELP                        1103
  911. #define IDM_HELP_REGISTER                       1104
  912. #define IDM_HELP_QA                             1105
  913. #define IDM_HELP_TOSONEWS                       1106
  914. #define IDM_HELP_PUZZLE                         1107
  915. #define IDM_HELP_ABOUT                          1108
  916. #define IDM_HELP_LAST                   1109
  917.  
  918. #define IDM_TABLET_FIRST                1200
  919. #define IDM_TABLET_SUB                          1200
  920. #define IDM_TABLET_BUTTON                       1201
  921. #define IDM_TABLET_CALIBRATE                    1202
  922. #define IDM_TABLET_ORIGIN                       1203
  923. #define IDM_TABLET_LOAD                         1204
  924. #define IDM_TABLET_SAVE_AS                      1205
  925. #define IDM_TABLET_INFO                         1206
  926. #define IDM_TABLET_OPTIONS                      1207
  927. #define IDM_TABLET_EDIT                         1208
  928. #define IDM_TABLET_DELETE                       1209
  929. #define IDM_TABLET_LAST                 1210
  930.  
  931. #define IDM_EXTERN_FIRST                1300
  932. #define IDM_EXTERN_MODULE_MIN                   IDM_EXTERN_FIRST
  933. #define IDM_EXTERN_MODULE_MAX                   ( IDM_EXTERN_MODULE_MIN + TVG_MODULE_MAX * TVG_MODULE_MENU_MAX )
  934. #define IDM_EXTERN_IMPORT_MIN                   IDM_EXTERN_MODULE_MAX
  935. #define IDM_EXTERN_IMPORT_MAX                   ( IDM_EXTERN_MODULE_MAX + TVG_FILTER_MAX )
  936. #define IDM_EXTERN_EXPORT_MIN                   IDM_EXTERN_IMPORT_MAX
  937. #define IDM_EXTERN_EXPORT_MAX                   ( IDM_EXTERN_EXPORT_MIN + TVG_FILTER_MAX )
  938. #define IDM_EXTERN_LAST                 IDM_EXTERN_EXPORT_MAX
  939.  
  940. #define IDM_LAST_ENTRY                  IDM_EXTERN_LAST
  941.  
  942. //------ Internal Command IDs --------------------------------------------------------------------------
  943.  
  944. #define IDM_INTERN_FIRST                IDM_LAST_ENTRY
  945.  
  946. #define IDM_INTERN_BLOCK_INSERT_MIN             IDM_INTERN_FIRST
  947. #define IDM_INTERN_BLOCK_INSERT_MAX             ( IDM_INTERN_BLOCK_INSERT_MIN + TVG_BLOCKLIST_MAX )
  948. #define IDM_INTERN_BLOCK_EDIT_MIN               IDM_INTERN_BLOCK_INSERT_MAX
  949. #define IDM_INTERN_BLOCK_EDIT_MAX               ( IDM_INTERN_BLOCK_EDIT_MIN + TVG_BLOCKLIST_MAX )
  950.  
  951. #define IDM_INTERN_FILE_OPEN_MIN                IDM_INTERN_BLOCK_EDIT_MAX
  952. #define IDM_INTERN_FILE_OPEN_MAX                ( IDM_INTERN_FILE_OPEN_MIN + TVG_FILE_MAX )
  953.  
  954. #define IDM_INTERN_SYSTEM_SELECT_MIN            IDM_INTERN_FILE_OPEN_MAX
  955. #define IDM_INTERN_SYSTEM_SELECT_MAX            ( IDM_INTERN_SYSTEM_SELECT_MIN + TVG_SYSTEM_MAX + 1 )
  956. #define IDM_INTERN_SYSTEM_EDIT_MIN              IDM_INTERN_SYSTEM_SELECT_MAX
  957. #define IDM_INTERN_SYSTEM_EDIT_MAX              ( IDM_INTERN_SYSTEM_EDIT_MIN + TVG_SYSTEM_MAX + 1 )
  958.  
  959. #define IDM_INTERN_HATCH_SELECT_MIN             IDM_INTERN_SYSTEM_EDIT_MAX
  960. #define IDM_INTERN_HATCH_SELECT_MAX             ( IDM_INTERN_HATCH_SELECT_MIN + TVG_HATCH_MAX + 1 )
  961. #define IDM_INTERN_HATCH_EDIT_MIN               IDM_INTERN_HATCH_SELECT_MAX
  962. #define IDM_INTERN_HATCH_EDIT_MAX               ( IDM_INTERN_HATCH_EDIT_MIN + TVG_HATCH_MAX + 1 )
  963.  
  964. #define IDM_INTERN_LAYER_SELECT_MIN             IDM_INTERN_HATCH_EDIT_MAX
  965. #define IDM_INTERN_LAYER_SELECT_MAX             ( IDM_INTERN_LAYER_SELECT_MIN + TVG_LAYER_MAX + 1 )
  966. #define IDM_INTERN_LAYER_EDIT_MIN               IDM_INTERN_LAYER_SELECT_MAX
  967. #define IDM_INTERN_LAYER_EDIT_MAX               ( IDM_INTERN_LAYER_EDIT_MIN + TVG_LAYER_MAX + 1 )
  968.  
  969. #define IDM_INTERN_PEN_SELECT_MIN               IDM_INTERN_LAYER_EDIT_MAX
  970. #define IDM_INTERN_PEN_SELECT_MAX               ( IDM_INTERN_PEN_SELECT_MIN + TVG_PEN_MAX + 1 )
  971. #define IDM_INTERN_PEN_EDIT_MIN                 IDM_INTERN_PEN_SELECT_MAX
  972. #define IDM_INTERN_PEN_EDIT_MAX                 ( IDM_INTERN_PEN_EDIT_MIN + TVG_PEN_MAX + 1 )
  973.  
  974. #define IDM_INTERN_ZOOM_AREA_MIN                IDM_INTERN_PEN_EDIT_MAX
  975. #define IDM_INTERN_ZOOM_AREA_MAX                ( IDM_INTERN_ZOOM_AREA_MIN + TVG_WINDOW_MAX + 1 )
  976. #define IDM_INTERN_ZOOM_OBJECTS_MIN             IDM_INTERN_ZOOM_AREA_MAX
  977. #define IDM_INTERN_ZOOM_OBJECTS_MAX             ( IDM_INTERN_ZOOM_OBJECTS_MIN + TVG_WINDOW_MAX + 1 )
  978. #define IDM_INTERN_ZOOM_PAGE_MIN                IDM_INTERN_ZOOM_OBJECTS_MAX
  979. #define IDM_INTERN_ZOOM_PAGE_MAX                ( IDM_INTERN_ZOOM_PAGE_MIN + TVG_WINDOW_MAX + 1 )
  980. #define IDM_INTERN_ZOOM_ORIGINAL_MIN            IDM_INTERN_ZOOM_PAGE_MAX
  981. #define IDM_INTERN_ZOOM_ORIGINAL_MAX            ( IDM_INTERN_ZOOM_ORIGINAL_MIN + TVG_WINDOW_MAX + 1 )
  982. #define IDM_INTERN_ZOOM_FACTOR_MIN              IDM_INTERN_ZOOM_ORIGINAL_MAX
  983. #define IDM_INTERN_ZOOM_FACTOR_MAX              ( IDM_INTERN_ZOOM_FACTOR_MIN + TVG_WINDOW_MAX + 1 )
  984. #define IDM_INTERN_ZOOM_UNDO_MIN                IDM_INTERN_ZOOM_FACTOR_MAX
  985. #define IDM_INTERN_ZOOM_UNDO_MAX                ( IDM_INTERN_ZOOM_UNDO_MIN + TVG_WINDOW_MAX + 1 )
  986.  
  987. #define IDM_INTERN_STARTUP_DIALOG       IDM_INTERN_ZOOM_UNDO_MAX        
  988.  
  989. #define IDM_INTERN_LAST                 ( IDM_INTERN_STARTUP_DIALOG + 1 )
  990.  
  991. //------ Context Identifiers for Electronic Reference --------------------------------------------------
  992.  
  993. #define IDH_CONTENTS                    10000   // Index
  994. #define IDH_HOTSPOT_HELP                10001   // Help on Usage of Hotspot Dialog Windows
  995.  
  996. #define IDH_TOPIC_REFERENCE             11000   // Introduction, Support & Information
  997. #define IDH_TOPIC_CONVENTIONS           11001   // Conventions used in the Reference
  998. #define IDH_TOPIC_REQUIREMENTS          11002   // System Requirements
  999. #define IDH_TOPIC_PLOTTER               11003   // Notes on Plotter Output
  1000. #define IDH_TOPIC_DIGITIZER             11004   // Using Digitizers
  1001. #define IDH_TOPIC_WINDOWS95             11005   // Notes for Windows 95 Users
  1002.  
  1003. #define IDH_TOPIC_WINDOW_MAIN           12000   // Main Window
  1004. #define IDH_TOPIC_WINDOW_DRAW           12001   // Drawing Window
  1005. #define IDH_TOPIC_WINDOW_VIEW           12002   // View Window
  1006. #define IDH_TOPIC_WINDOW_PANEL          12003   // Panel
  1007. #define IDH_TOPIC_WINDOW_PROP           12004   // Property Window
  1008. #define IDH_TOPIC_WINDOW_PEN            12005   // Pen List
  1009. #define IDH_TOPIC_WINDOW_LAYER          12006   // Layer List
  1010. #define IDH_TOPIC_WINDOW_SCALE          12007   // Ruler
  1011. #define IDH_TOPIC_WINDOW_STATUS         12008   // Status Line
  1012. #define IDH_TOPIC_WINDOW_BLOCK          12009   // Block List Window
  1013. #define IDH_TOPIC_WINDOW_TOOLBOX        12010   // Toolbox
  1014. #define IDH_TOPIC_WINDOW_GUIDE          12011   // Guide Windows
  1015. #define IDH_TOPIC_WINDOW_POPUP          12012   // Popup Menⁿ
  1016. #define IDH_TOPIC_WINDOW_CHOOSE         12013   // Multi-Object Selection
  1017.  
  1018. #define IDH_TOPIC_TRANSMISSION          13000   // Layers, Pens, and Transmission
  1019. #define IDH_TOPIC_SYSTEMS               13001   // Coordinate Systems, Scales, Grids, etc.
  1020. #define IDH_TOPIC_OPTIONS               13002   // Snapping, Duplicate, and other Options
  1021. #define IDH_TOPIC_BLOCKS                13003   // Libraries, Blocks and Instances
  1022. #define IDH_TOPIC_FILEOPT               13004   // TVG 4.0 File Format
  1023. #define IDH_TOPIC_MODULE                13005   // The Module Concept
  1024.  
  1025. #define IDH_INTERN_BLOCK_INSERT            14000   // Internal Commands
  1026. #define IDH_INTERN_BLOCK_EDIT           14001
  1027. #define IDH_INTERN_FILE_OPEN            14002
  1028. #define IDH_INTERN_SYSTEM_SELECT        14003
  1029. #define IDH_INTERN_SYSTEM_EDIT          14004
  1030. #define IDH_INTERN_HATCH_SELECT         14005
  1031. #define IDH_INTERN_HATCH_EDIT           14006
  1032. #define IDH_INTERN_LAYER_SELECT         14007
  1033. #define IDH_INTERN_LAYER_EDIT           14008
  1034. #define IDH_INTERN_PEN_SELECT           14009
  1035. #define IDH_INTERN_PEN_EDIT             14010
  1036. #define IDH_INTERN_ZOOM_AREA            14011
  1037. #define IDH_INTERN_ZOOM_OBJECTS         14012
  1038. #define IDH_INTERN_ZOOM_PAGE            14013
  1039. #define IDH_INTERN_ZOOM_ORIGINAL        14014
  1040. #define IDH_INTERN_ZOOM_FACTOR          14015
  1041. #define IDH_INTERN_ZOOM_UNDO            14016
  1042.  
  1043. #define IDW_MULTIPROP                   15000   // Edit Properties
  1044. #define IDW_TEXTSTANDARD                15001   // Standard Text
  1045. #define IDW_TEXTFRAME                   15002   // Frame Text
  1046. #define IDW_ZIGZAG                      15003   // Zig Zag Line
  1047. #define IDW_DIMPARAM0                   15004   // Dimension Line
  1048. #define IDW_DIMDATA                     15005   // General Dimension Parameters
  1049. #define IDW_DIMPARAM1                   15006   // Dimension with Line
  1050. #define IDW_DIMPARAM2                   15007   // Dimension without Line
  1051. #define IDW_CHOOSECOLOR                 15008   // Color Selection
  1052. #define IDW_FILESELECT                  15009   // File Selection
  1053. #define IDW_CHOOSECOLOR2                15010   // Standard Color Selection
  1054. #define IDW_PRINTLAYOUT                 15011   // Print Drawing
  1055. #define IDW_FILEOPTIONS                 15012   // Edit File Options
  1056. #define IDW_CHOOSESECTIONS              15013   // Edit Single File Options
  1057. #define IDW_AUTOSAVE                    15014   // Auotsave Parameters
  1058. #define IDW_BITMAPEDIT                  15015   // Bitmap Reference
  1059. #define IDW_EXPORTBITMAP                15016   // Export Bitmap
  1060. #define IDW_COMMENTLAYOUT               15017   // Command Parameters
  1061. #define IDW_DETAILSEDIT                 15018   // Edit Details
  1062. #define IDW_PAGEFORMAT                  15019   // Page Format
  1063. #define IDW_LAYEREDIT                   15020   // Edit Layers
  1064. #define IDW_DETAILSVIEW                 15021   // View Details
  1065. #define IDW_LAYERDEFAULT                15022   // Layer Defaults
  1066. #define IDW_SYSTEMEDIT                  15023   // Edit Coordinate Systems
  1067. #define IDW_SYSTEMDISPLAY               15024   // Coordinate Systems View
  1068. #define IDW_SYSTEMORIGIN                15025   // Coordinate Systems Origin
  1069. #define IDW_SYSTEMUNIT                  15026   // Coordinate Systems Units
  1070. #define IDW_SYSTEMNUMBER                15027   // Coordinate Systems Numbers
  1071. #define IDW_SYSTEMGRID                  15028   // Coordinate Systems Display Grid
  1072. #define IDW_SYSTEMSNAP                  15029   // Coordinate Systems Position Grid
  1073. #define IDW_PENEDIT                     15030   // Edit Pens
  1074. #define IDW_PENDEFAULT                  15031   // Pen Defaults
  1075. #define IDW_LINEEDIT                    15032   // Edit Line Patterns
  1076. #define IDW_LINETYPE                    15033   // Edit Single Line Pattern
  1077. #define IDW_PROPERTY                    15034   // Simple Properties
  1078. #define IDW_DIMLAYOUT                   15035   // Global Dimension Parameters
  1079. #define IDW_PROGSTATUS                  15036   // Program Status
  1080. #define IDW_SYSTEMMEMORY                15037   // Memory and Monitor
  1081. #define IDW_PATHSYSTEM                  15038   // Standard Paths
  1082. #define IDW_ORTHOLAYOUT                 15039   // Orthogonal Mode
  1083. #define IDW_SCREENLAYOUT                15040   // Settings Display
  1084. #define IDW_ACCURACYLAYOUT              15041   // Settings Accuracy
  1085. #define IDW_OUTPUTLAYOUT                15042   // Settings Output
  1086. #define IDW_SYSTEMCOLORS                15043   // Settings Colors
  1087. #define IDW_KEYASSIGN                   15044   // Display Keybaord Assignment
  1088. #define IDW_MOUSEASSIGNMENT             15045   // Einstellung Maustastenfunktion
  1089. #define IDW_KEYEDIT                     15046   // Edit Key Assignment
  1090. #define IDW_CONSTRUCTION                15047   // Division
  1091. #define IDW_FONTHANDLING                15048   // Fonts
  1092. #define IDW_INSTANCEEDIT                15049   // Instance
  1093. #define IDW_TEXTSTANDARDINSERT          15050   // Create Standard Text
  1094. #define IDW_TEXTFRAMEINSERT             15051   // Create Frame Text
  1095. #define IDW_FONTDEF                     15052   // Select Font
  1096. #define IDW_CURVE                       15053   // Curve / Surface Entry
  1097. #define IDW_CONDSEL                     15054   // Selection Parameters
  1098. #define IDW_CHANGETEXT                  15055   // Edit Text
  1099. #define IDW_TEXTREFERENCE               15056   // Reference Text
  1100. #define IDW_DIMTEXT1                    15057   // Edit Dimension and Tolerances
  1101. #define IDW_DIMTEXT2                    15058   // Edit Coordinates and Tolerances
  1102. #define IDW_HATCHEDIT                   15059   // Edit Hatching Types
  1103. #define IDW_HATCHTYPE                   15060   // Edit Single Hatching Type
  1104. #define IDW_MULTILINEEDIT               15061   // Edit Line Sequences
  1105. #define IDW_MULTILINEPARAM              15062   // Edit Single Line Sequence
  1106. #define IDW_BLOCKINSERT                 15063   // Insert Block
  1107. #define IDW_BLOCKREAD                   15064   // Create Block
  1108. #define IDW_BLOCKEDIT                   15065   // Edit Block
  1109. #define IDW_BLOCKCOPY                   15066   // Copy Block
  1110. #define IDW_BLOCKATTRIB                 15067   // Edit Attributes
  1111. #define IDW_BLOCKATTRIBSINGLE           15068   // Edit Single Attribute
  1112. #define IDW_PARTSLIST1                  15069   // Generate Parts List, Part 1
  1113. #define IDW_PARTSLIST2                  15070   // Generate Parts List, Part 2
  1114. #define IDW_BLOCKCONVERT                15071   // External Blocks to Internal
  1115. #define IDW_BLOCKREPLACE                15072   // Replace Block
  1116. #define IDW_LIBRARYREPLACE              15073   // Replace Library
  1117. #define IDW_LIBRARYHANDLING             15074   // Libraries
  1118. #define IDW_BLOCKSELECT                 15075   // Select Block
  1119. #define IDW_BLOCKWINDOW                 15076   // Settings Block List
  1120. #define IDW_PLOTTERLAYOUT               15077   // Settings Plotter
  1121. #define IDW_CURVEEDIT                   15078   // Edit Curve
  1122. #define IDW_ALERT                       15079   // General Message
  1123. //                                      15080   // Multi-Object Selection
  1124. #define IDW_EDIT                        15081   // General Entry, Part 1
  1125. //                                      15082   // General Entry, Part 2
  1126. #define IDW_TABLETBUTTON                15083   // Digitizer Buttons
  1127. #define IDW_PARTSLISTOPTION             15084   // Generate Parts List Options
  1128. #define IDW_FILEINFO                    15085   // File Infos
  1129. #define IDW_WINDOWLAYOUT                15086   // Window Layout
  1130. #define IDW_CODE                        15087   // Code Entry
  1131. #define IDW_TIMELAYOUT                  15088   // Time Layout
  1132. #define IDW_LISTBOXFILTER               15089   // List box filter
  1133.  
  1134. //------ Point Descriptions for User Input -------------------------------------------------------------
  1135.  
  1136. #ifndef TOSO_RESOURCE
  1137.  
  1138. #define POINT_NO                0
  1139. #define POINT_COMMAND           1
  1140. #define POINT_HELP              2
  1141. #define POINT_ANY               3
  1142. #define POINT_ANY1              4
  1143. #define POINT_ANY2              5
  1144. #define POINT_START             6
  1145. #define POINT_START1            7
  1146. #define POINT_START2            8
  1147. #define POINT_END               9
  1148. #define POINT_END1              10
  1149. #define POINT_END2              11
  1150. #define POINT_REFERENCE         12
  1151. #define POINT_DESTINATION       13
  1152. #define POINT_CORNER1           14
  1153. #define POINT_CORNER2           15
  1154. #define POINT_CORNER3           16
  1155. #define POINT_CORNER4           17
  1156. #define POINT_CIRCLE1           18
  1157. #define POINT_CIRCLE2           19
  1158. #define POINT_CIRCLE3           20
  1159. #define POINT_ELLIPSE1          21
  1160. #define POINT_ELLIPSE2          22
  1161. #define POINT_FRAME             23
  1162. #define POINT_CENTER            24
  1163. #define POINT_RADIUS            25
  1164. #define POINT_ANGLE             26
  1165. #define POINT_ANGLE1            27
  1166. #define POINT_ANGLE2            28
  1167. #define POINT_LINE_RELATIVE     29
  1168. #define POINT_PIVOT1            30
  1169. #define POINT_PIVOT2            31
  1170. #define POINT_CURVE_END         32
  1171. #define POINT_ARC               33
  1172. #define POINT_ARC_END1          34
  1173. #define POINT_ARC_END2          35
  1174. #define POINT_ARC_RELATIVE      36
  1175. #define POINT_POSITION          37
  1176. #define POINT_SECTION1          38
  1177. #define POINT_SECTION2          39
  1178. #define POINT_DIM_LINE1         40
  1179. #define POINT_DIM_LINE2         41
  1180. #define POINT_DIM_LINE3         42
  1181. #define POINT_DIM_NUM1          43
  1182. #define POINT_DIM_NUM2          44
  1183.  
  1184. #define POINT_ID_SINGLE_FIRST   45              // First ID that requires identification resolving
  1185.  
  1186. #define POINT_PL                45
  1187. #define POINT_PL1               46
  1188. #define POINT_PL2               47
  1189. #define POINT_PL3               48
  1190. #define POINT_PC                49
  1191. #define POINT_PA                50
  1192. #define POINT_PE                51
  1193. #define POINT_PCE               52
  1194. #define POINT_PCE1              53
  1195. #define POINT_PCE2              54
  1196. #define POINT_PLC               55
  1197. #define POINT_PLC1              56
  1198. #define POINT_PLC2              57
  1199. #define POINT_PLC3              58
  1200. #define POINT_PLE               59
  1201. #define POINT_PLCEA             60
  1202.  
  1203. #define POINT_ID_ALL            61
  1204. #define POINT_ID_OBJECT         62
  1205. #define POINT_ID_INSTANCE       63
  1206. #define POINT_ID_TRIM           64
  1207. #define POINT_ID_TRIM1          65
  1208. #define POINT_ID_TRIM2          66
  1209. #define POINT_ID_LINE           67
  1210. #define POINT_ID_LINE1          68
  1211. #define POINT_ID_LINE2          69
  1212. #define POINT_ID_CIRCLE         70
  1213. #define POINT_ID_CIRCLE1        71
  1214. #define POINT_ID_CIRCLE2        72
  1215. #define POINT_ID_ARC            73
  1216. #define POINT_ID_ELLIPSE        74
  1217. #define POINT_ID_EARC           75
  1218. #define POINT_ID_CURVE          76
  1219. #define POINT_ID_SURFACE        77
  1220. #define POINT_ID_CURVE_SURFACE  78
  1221. #define POINT_ID_FILLED         79
  1222. #define POINT_ID_FILLED1        80
  1223. #define POINT_ID_FILLED2        81
  1224. #define POINT_ID_TEXT           82
  1225. #define POINT_ID_DIMENSION1     83
  1226. #define POINT_ID_DIMENSION2     84
  1227. #define POINT_ID_CLIP           85
  1228. #define POINT_ID_POINT          86
  1229.  
  1230. #define POINT_ID_MULTI_FIRST    87              // First ID that enables multi-object identification
  1231.  
  1232. #define POINT_ID_MULTITEXT1     87
  1233. #define POINT_ID_MULTITEXT2     88
  1234. #define POINT_ID_MULTIDIM1      89
  1235. #define POINT_ID_MULTIDIM2      90
  1236. #define POINT_ID_MULTIINST      91
  1237. #define POINT_ID_MULTIOBJ       92
  1238. #define POINT_ID_MULTIALL       93
  1239. #define POINT_ID_MULTIPOINT     94
  1240.  
  1241. #define POINT_TOTAL             95
  1242.  
  1243. //------ Guide Options ---------------------------------------------------------------------------------
  1244.  
  1245. #define GUIDE_NULL              0x00000000      // No guide
  1246. #define GUIDE_SINGLE_OBJ        0x00000001      // Single object identification
  1247. #define GUIDE_MULTI_OBJ         0x00000002      // Multiple object choosing
  1248. #define GUIDE_SINGLE_POINT      0x00000004      // Single point identification
  1249. #define GUIDE_MULTI_POINT       0x00000008      // Multiple point choosing
  1250. #define GUIDE_PARAMETER         0x00000010      // Parameters are available
  1251. #define GUIDE_ARC_DIRECTION     0x00000020      // Arc direction has effect
  1252. #define GUIDE_ARC_MODE          0x00000040      // Arc mode has effect
  1253. #define GUIDE_COORDINATES       0x00000080      // Coordinate entry makes sense
  1254. #define GUIDE_SNAP              0x00000100      // Snapping has effect
  1255. #define GUIDE_GRID              0x00000200      // Grid has effect
  1256. #define GUIDE_DUPLICATE         0x00000400      // Duplicate has effect
  1257. #define GUIDE_MULTILINE         0x00000800      // Multiline has effect
  1258. #define GUIDE_ESC               0x00001000      // Last point entry may be reversed
  1259. #define GUIDE_RBUTTON1          0x00002000      // Right mouse button cancels command
  1260. #define GUIDE_RBUTTON2          0x00004000      // Right mouse button finishes entry
  1261. #define GUIDE_ENTRY             0x00008000      // Description of point entry
  1262. #define GUIDE_RESET             0x20000000      // Resets guide content to empty
  1263. #define GUIDE_DEFAULT           0x40000000      // Default descriptions
  1264. #define GUIDE_EXTERNAL          0x80000000      // Additional external text
  1265.  
  1266. //------ Command Types ---------------------------------------------------------------------------------
  1267.  
  1268. #define MODULECTRL_ALL          0x0fff          // Module may run on any program version
  1269. #define MODULECTRL_DEMO         0x0001          // Module may run on a demo version
  1270. #define MODULECTRL_TEST         0x0002          // Module may run on a trial version
  1271. #define MODULECTRL_LEVEL1       0x0010          // Module may run on a level 1 version
  1272. #define MODULECTRL_LEVEL2       0x0020          // Module may run on a level 2 version
  1273. #define MODULECTRL_LEVEL3       0x0040          // Module may run on a level 3 version
  1274. #define MODULECTRL_LEVEL4       0x0080          // Module may run on a level 4 version
  1275. #define MODULECTRL_CHECKED      0x1000          // Module will only run if it has been registered
  1276.  
  1277. #define MODULETYPE_FILE         0               // Module contains commands for menu "File"
  1278. #define MODULETYPE_EDIT         1               // Module contains commands for menu "Edit"
  1279. #define MODULETYPE_CONFIG       2               // Module contains commands for menu "Configure"
  1280. #define MODULETYPE_SHAPE        3               // Module contains commands for menu "Shape"
  1281. #define MODULETYPE_DRAW         4               // Module contains commands for menu "Draw"
  1282. #define MODULETYPE_GEO          5               // Module contains commands for menu "Geometry"
  1283. #define MODULETYPE_TRIM         6               // Module contains commands for menu "Trimming"
  1284. #define MODULETYPE_DIM          7               // Module contains commands for menu "Dimension"
  1285. #define MODULETYPE_LIB          8               // Module contains commands for menu "Library"
  1286. #define MODULETYPE_EXTRA        9               // Module contains commands for menu "Extra"
  1287. #define MODULETYPE_HELP         10              // Module contains commands for menu "Help"
  1288. #define MODULETYPE_CUSTOM       97              // Module contains commands for custom menu
  1289. #define MODULETYPE_IMPORT       98              // Module contains import filters
  1290. #define MODULETYPE_EXPORT       99              // Module contains export filters
  1291.  
  1292. #define MODULEEXEC_USER         0               // Command was selected by the user
  1293. #define MODULEEXEC_SYSTEM       1               // Command is restarted by the system
  1294. #define MODULEEXEC_HELP         2               // The help for this command shall be displayed
  1295.  
  1296. #define COMMAND_DIRECT          0               // Directly executed command (no mouse input required)
  1297. #define COMMAND_DIGITIZER       1               // Modification of digitizer assignment (local)
  1298. #define COMMAND_KEY             2               // Modification of keybaord assignment (local)
  1299. #define COMMAND_HELP            3               // Help by clicking (local)
  1300. #define COMMAND_LOCAL           4               // Local command with a fixed number of point entries
  1301. #define COMMAND_FIXED           5               // Global command with a fixed number of point entries
  1302. #define COMMAND_VARIABLE        6               // Global command with a variable number of point entries
  1303.  
  1304. //------ Data Block Types ------------------------------------------------------------------------------
  1305.  
  1306. #define DB_OWNER_TOSO           0
  1307.  
  1308. #define DB_TYPE_NATIVE          0
  1309. #define DB_TYPE_LONG            1
  1310. #define DB_TYPE_DOUBLE          2
  1311. #define DB_TYPE_POINT           3
  1312. #define DB_TYPE_COLORREF        4
  1313. #define DB_TYPE_PROPERTY        5
  1314. #define DB_TYPE_XPROPERTY       6
  1315. #define DB_TYPE_FONTDEF         7
  1316. #define DB_TYPE_TEXT            8
  1317. #define DB_TYPE_BINARY          9
  1318.  
  1319. //------ Data Block Numbers ----------------------------------------------------------------------------
  1320.  
  1321. #define DB_TEMP_MIN             (-100)          // First number of a temporary data block
  1322. #define DB_TEMP_MAX             0               // First number of a non-temporary data block
  1323.  
  1324. #define DB_TEMP_T001            (-1)
  1325. #define DB_TEMP_T002            (-2)
  1326. #define DB_TEMP_T003            (-3)
  1327. #define DB_TEMP_T004            (-4)
  1328. #define DB_TEMP_T005            (-5)
  1329. #define DB_TEMP_T006            (-6)
  1330. #define DB_TEMP_T007            (-7)
  1331. #define DB_TEMP_T008            (-8)
  1332.  
  1333. #define DB_POINT_MIN            0               // First number of a point data block
  1334. #define DB_POINT_MAX            100             // First number of a non-point data block
  1335.  
  1336. #define DB_POINT_ANY            0
  1337. #define DB_POINT_START          1
  1338. #define DB_POINT_END            2
  1339. #define DB_POINT_CENTER         3
  1340. #define DB_POINT_RADIUS         4
  1341. #define DB_POINT_ANGLE          5
  1342. #define DB_POINT_VECTOR         6
  1343. #define DB_POINT_PIVOT1         7
  1344. #define DB_POINT_PIVOT2         8
  1345. #define DB_POINT_ARC            9
  1346. #define DB_POINT_MARK           10
  1347.  
  1348. #define DB_ALL_MIN              100             // First number of a standard data block
  1349. #define DB_ALL_MAX              200             // First number of a non-standard data block
  1350.  
  1351. #define DB_ALL_CONSTANT         100
  1352. #define DB_ALL_ARC              101
  1353. #define DB_ALL_CURVE            102
  1354. #define DB_ALL_TEXT             110
  1355.  
  1356. #define DB_INFO_MIN             200             // First number of an object-specific data block
  1357. #define DB_INFO_MAX             300             // Frist number of an non-object-specific data block
  1358.  
  1359. #define DB_INFO_DIMLINE         220
  1360. #define DB_INFO_DIMLARGE        225
  1361. #define DB_INFO_DIMSMALL        230
  1362. #define DB_INFO_TEXTSTANDARD    235
  1363. #define DB_INFO_TEXTFRAME       236
  1364. #define DB_INFO_TEXTREFERENCE   237
  1365. #define DB_INFO_CLIPSURFACE     242
  1366. #define DB_INFO_BITMAPREF       243
  1367.  
  1368. #define DB_ATTRIB_MIN           300             // First number of an attribute data block
  1369. #define DB_ATTRIB_MAX           500             // First number of a non-attribute data block
  1370.  
  1371. #define DB_ATTRIB_GLOBAL_MIN    300
  1372. #define DB_ATTRIB_GLOBAL_MAX    400
  1373.  
  1374. #define DB_ATTRIB_GLOBAL_TEXT   300
  1375. #define DB_ATTRIB_GLOBAL_NUM    301
  1376.  
  1377. #define DB_ATTRIB_LOCAL_MIN     400
  1378. #define DB_ATTRIB_LOCAL_MAX     500
  1379.  
  1380. #define DB_ATTRIB_LOCAL_TEXT    400
  1381. #define DB_ATTRIB_LOCAL_NUM     401
  1382.  
  1383. #define DB_END                  999
  1384.  
  1385. //------ Entity Types ----------------------------------------------------------------------------------
  1386.  
  1387. #define TYPE_OBJECT             0
  1388. #define TYPE_INSTANCE           1
  1389. #define TYPE_BLOCK              2
  1390. #define TYPE_USER               9
  1391.  
  1392. #define TYPE_END                999
  1393.  
  1394. //------ Object Types ----------------------------------------------------------------------------------
  1395.  
  1396. #define OBJ_LINE                0
  1397. #define OBJ_HATCH               1
  1398.  
  1399. #define OBJ_CIRCLE              5
  1400. #define OBJ_ARC                 6
  1401. #define OBJ_SECTOR              7
  1402. #define OBJ_SEGMENT             8
  1403.  
  1404. #define OBJ_ZIGZAG              10
  1405. #define OBJ_SPLINE              11
  1406. #define OBJ_CURVE               12
  1407. #define OBJ_SURFACE             13
  1408.  
  1409. #define OBJ_ELLIPSE             15
  1410. #define OBJ_EARC                16
  1411. #define OBJ_ESECTOR             17
  1412. #define OBJ_ESEGMENT            18
  1413.  
  1414. #define OBJ_DLINE               20
  1415. #define OBJ_DARC                21
  1416.  
  1417. #define OBJ_DDISTANCE           25
  1418. #define OBJ_DRADIUS             26
  1419. #define OBJ_DDIAMETER           27
  1420. #define OBJ_DANGLE              28
  1421. #define OBJ_DARCLENGTH          29
  1422. #define OBJ_DCOORDINATE         30
  1423. #define OBJ_DAREA               31
  1424. #define OBJ_DPERIMETER          32
  1425.  
  1426. #define OBJ_TEXTSTANDARD        35
  1427. #define OBJ_TEXTFRAME           36
  1428. #define OBJ_TEXTREFERENCE       37
  1429.  
  1430. #define OBJ_COMMENT             40
  1431. #define OBJ_MARK                41
  1432. #define OBJ_CLIPSURFACE         42
  1433. #define OBJ_BITMAPREF           43
  1434.  
  1435. #define OBJ_GEOLINE             45
  1436. #define OBJ_GEOCIRCLE           46
  1437. #define OBJ_GEOELLIPSE          47
  1438.  
  1439. #define OBJ_TOTAL               50              // Number of "known" object types
  1440.  
  1441. #define OBJ_END                 999
  1442.  
  1443. //------ Special Identification Characters -------------------------------------------------------------
  1444.  
  1445. #define ID_CHAR_SYSTEM          '*'             // Identification character for system names
  1446. #define ID_CHAR_INTERN          '#'             // Identification character for internal definitions
  1447. #define ID_CHAR_VARIABLE        '~'             // Identification character for variables
  1448. #define ID_CHAR_GROUP           'G'             // Identification character for groups
  1449. #define ID_CHAR_POSNO           'P'             // Identification character for position numbers
  1450.  
  1451. #define END_TEXT                "\x04"          // End-of-list identification in text lists (string)
  1452. #define END_CHAR                '\x04'          // End-of-list identification in text lists (char)
  1453.  
  1454. //------ Constant for TVG and TVL Handling -------------------------------------------------------------
  1455.  
  1456. #define FONTTYPE_TOSO           0x0000          // Font Types
  1457. #define FONTTYPE_TRUETYPE       0x0001
  1458. #define FONTTYPE_DEVICE         0x0002
  1459.  
  1460. #define FONTSTYLE_REGULAR       0x0000          // Font Styles
  1461. #define FONTSTYLE_ITALIC        0x0001
  1462. #define FONTSTYLE_UNDERLINE     0x0002
  1463. #define FONTSTYLE_OVERLINE      0x0004
  1464. #define FONTSTYLE_STRIKEOUT     0x0008
  1465. #define FONTSTYLE_SYMBOL        0x0100
  1466. #define FONTSTYLE_BASIC         0xff01
  1467.  
  1468. #define DIMMODE_NUMREFRESH      0x0001          // Dimension Parameter Flags
  1469. #define DIMMODE_NUMCENTERED     0x0002
  1470. #define DIMMODE_NUMTIGHT        0x0004
  1471. #define DIMMODE_NUMROTATE       0x0008
  1472. #define DIMMODE_ARROWSTARTFORM  0x0010
  1473. #define DIMMODE_ARROWSTARTMODE  0x0020
  1474. #define DIMMODE_ARROWENDFORM    0x0040
  1475. #define DIMMODE_ARROWENDMODE    0x0080
  1476. #define DIMMODE_EXTSTARTDISPLAY 0x0100
  1477. #define DIMMODE_EXTENDDISPLAY   0x0200
  1478. #define DIMMODE_LINEDISPLAY     0x0400
  1479. #define DIMMODE_LINEORIENTATION 0x0800
  1480. #define DIMMODE_LINETYPE        0x1000
  1481. #define DIMMODE_LINEDISTMODE    0x2000
  1482. #define DIMMODE_LINEDISTANCE    0x4000
  1483. #define DIMMODE_GLOBALPARAM     0x8000
  1484. #define DIMMODE_ALL             0xffff
  1485.  
  1486. #define FILLMODE_FRAMED         0x0000          // Filling Modes
  1487. #define FILLMODE_FILLED         0x0001
  1488. #define FILLMODE_FILLED_FRAMED  0x0002
  1489. #define FILLMODE_ERASER         0x0003
  1490. #define FILLMODE_ERASER_FRAMED  0x0004
  1491.  
  1492. #define LAYERMODE_DISPLAY       0x0001          // Layer Modes
  1493. #define LAYERMODE_OUTPUT        0x0002
  1494. #define LAYERMODE_FREEZE        0x0004
  1495. #define LAYERMODE_IDLE          0x0008
  1496. #define LAYERMODE_GRAY          0x0010
  1497. #define LAYERMODE_DEFAULT       0x0003
  1498.  
  1499. #define GRID_OFF                0x0000          // Grid Modes
  1500. #define GRID_CARTESIAN          0x0001
  1501. #define GRID_ISOMETRIC          0x0002
  1502. #define GRID_DIMETRIC1          0x0003
  1503. #define GRID_DIMETRIC2          0x0004
  1504.  
  1505. #define USE_NULL                0x0000          // Transmission Flags
  1506. #define USE_PEN                 0x0001
  1507. #define USE_FILLMODE            0x0002
  1508. #define USE_FILLCOLOR           0x0004
  1509. #define USE_LINECOLOR           0x0008
  1510. #define USE_LINEWIDTH           0x0010
  1511. #define USE_LINETYPE            0x0020
  1512. #define USE_LAYER               0x0040
  1513.  
  1514. #define USE_PROPERTY            0x003e
  1515. #define USE_PROP_PEN            0x003f
  1516. #define USE_PROP_PEN_LAYER      0x007f
  1517.  
  1518. #define DEFPEN_DIMLINE          0x0000          // Default Pen Indexes
  1519. #define DEFPEN_DIMTEXT          0x0001
  1520. #define DEFPEN_TEXT             0x0002
  1521. #define DEFPEN_REFLINE          0x0003
  1522. #define DEFPEN_GEOMETRY         0x0004
  1523.  
  1524. #define DEFLAYER_MARK           0x0000          // Default Layer Index
  1525. #define DEFLAYER_OUTLINE        0x0001
  1526. #define DEFLAYER_DIM            0x0002
  1527. #define DEFLAYER_TEXT           0x0003
  1528. #define DEFLAYER_HATCH          0x0004
  1529. #define DEFLAYER_BLOCK          0x0005
  1530. #define DEFLAYER_GEOMETRY       0x0006
  1531.  
  1532. #define SNAPMODE_CENTER         0x0001          // Snapping modes
  1533. #define SNAPMODE_QUADRANT       0x0002
  1534. #define SNAPMODE_EDGE           0x0004
  1535. #define SNAPMODE_CORNER         0x0008
  1536. #define SNAPMODE_INTERSECTION   0x0010
  1537. #define SNAPMODE_GEO            0x0020
  1538. #define SNAPMODE_MARK           0x0040
  1539. #define SNAPMODE_OTHERS         0x0080
  1540. #define SNAPMODE_RELATIVE       0x0100
  1541.  
  1542. #define SNAPMODE_SINGLE         0x0007          // Snapping modes that cannot be combined with others
  1543. #define SNAPMODE_MULTI          0x00f8          // Snapping modes that can be combined using bitwise-or
  1544. #define SNAPMODE_EXTRA          0x0f00          // Snapping modes that are additional to normal modes
  1545.  
  1546. #define SNAPMODE_TOTAL          9               // Number of snapping modes
  1547.  
  1548. //------ System Settings -------------------------------------------------------------------------------
  1549.  
  1550. #define SETTING_DUPLICATE       0x0001          // Duplicate status (TRUE = Active, FALSE = Inactive)
  1551. #define SETTING_SNAPACTIVE      0x0002          // Snap status (TRUE = Active, FALSE = Inactive)
  1552. #define SETTING_SNAPMODE        0x0003          // Snap modes (combination of SNAPMODE_???)
  1553. #define SETTING_SNAPRADIUS      0x0004          // Snap radius (5..50)
  1554. #define SETTING_SNAPTOLERANCE   0x0005          // Snap tolerance (0..10)
  1555. #define SETTING_ORTHO           0x0006          // Orthogonal mode (TRUE = Active, FALSE = Disabled)
  1556. #define SETTING_ARCDIRECTION    0x0007          // Arc direction (TRUE = Positive, FALSE = Negative)
  1557. #define SETTING_ARCMODE         0x0008          // Arc mode (0 = Arc, 1 = Sector, 2 = Segment)
  1558. #define SETTING_AREAMODE        0x0009          // Area mode (TRUE = Inside, FALSE = Overlapping)
  1559. #define SETTING_GEODISPLAY      0x000a          // Geometry display (TRUE = Visible, FALSE = Invisible)
  1560. #define SETTING_GEOFROZEN       0x000b          // Geometry status (TRUE = Frozen, FALSE = Editable)
  1561.  
  1562. #define SETTING_COLOR_LAYER     0x1000          // Color of grayed layers
  1563. #define SETTING_COLOR_GEOMETRY  0x1001          // Color of default geometry objects
  1564. #define SETTING_COLOR_BLOCKS    0x1002          // Color of block text display
  1565. #define SETTING_COLOR_ERASER    0x1003          // Color of erasers
  1566. #define SETTING_COLOR_POINT     0x1004          // Color of standard points
  1567. #define SETTING_COLOR_MARK      0x1005          // Color of markings
  1568. #define SETTING_COLOR_INPUT     0x1006          // Color of input rubber lines
  1569. #define SETTING_COLOR_OBJSEL    0x1007          // Color of permanently selected objects
  1570. #define SETTING_COLOR_OBJUSE    0x1008          // Color of identified objects
  1571. #define SETTING_COLOR_OBJIDENT  0x1009          // Color of object highlight when identification is inaccurate
  1572. #define SETTING_COLOR_POINTUSE  0x100a          // Color of selected points
  1573. #define SETTING_COLOR_CURSOR1   0x100b          // Color of "large" cursor cross (active window)
  1574. #define SETTING_COLOR_CURSOR2   0x100c          // Color of "small" cursor cross (inactive windows)
  1575. #define SETTING_COLOR_PAGEFRAME 0x100d          // Color of page frame and zoom / layer / system display
  1576. #define SETTING_COLOR_DRAWAREA  0x100e          // Color of drawing area background
  1577. #define SETTING_COLOR_COLORTEXT 0x100f          // Color of colored texts
  1578. #define SETTING_COLOR_SUBMENU   0x1010          // Color of submenu icons
  1579. #define SETTING_COLOR_COMMAND   0x1011          // Color of command icons
  1580.  
  1581. //------ Input Processing ------------------------------------------------------------------------------
  1582.  
  1583. #define INPUT_ERROR             0               // Error during input processing
  1584. #define INPUT_OVERFLOW          1               // Too many points entered
  1585. #define INPUT_IGNORE            2               // Ignore this point!
  1586. #define INPUT_OK                3               // OK
  1587. #define INPUT_CANCEL            4               // Cancel current command
  1588. #define INPUT_FINISH            5               // Finsih current command
  1589. #define INPUT_NEXT              6               // Continue with next point
  1590. #define INPUT_UNUSED            7               // This point is not required
  1591.  
  1592. //------ File Options ----------------------------------------------------------------------------------
  1593.  
  1594. #define LOADSAVE_HEADER         0x00000001
  1595. #define LOADSAVE_TOOLBOX        0x00000002
  1596. #define LOADSAVE_BLOCKLIST      0x00000004
  1597. #define LOADSAVE_KEYBOARD       0x00000008
  1598. #define LOADSAVE_WINDOW         0x00000010
  1599. #define LOADSAVE_DEFAULT        0x00000020
  1600. #define LOADSAVE_USER           0x00000040
  1601. #define LOADSAVE_MODULE         0x00000080
  1602. #define LOADSAVE_PAGE           0x00000100
  1603. #define LOADSAVE_COLOR          0x00000200
  1604. #define LOADSAVE_HATCH          0x00000400
  1605. #define LOADSAVE_MULTILINE      0x00000800
  1606. #define LOADSAVE_SYSTEM         0x00001000
  1607. #define LOADSAVE_PEN            0x00002000
  1608. #define LOADSAVE_LINE           0x00004000
  1609. #define LOADSAVE_LAYER          0x00008000
  1610.  
  1611. #define LOADSAVE_ATTRIB         0x00080000
  1612.  
  1613. #define LOADSAVE_BLOCK          0x00100000
  1614. #define LOADSAVE_OBJECT         0x00200000
  1615.  
  1616. #define LOADSAVE_USERSECTIONS   0x10000000      // Save all previously loaded sections plus...
  1617. #define LOADSAVE_IDENTIFIED     0x20000000      // Do only save identified objects
  1618. #define LOADSAVE_REPLACE        0x40000000      // Replace elements when loading
  1619. #define LOADSAVE_NODIALOG       0x80000000      // Do not display a progress indicator
  1620.  
  1621. //------ Window Arrangement ----------------------------------------------------------------------------
  1622.  
  1623. #define WINMODE_1               0x00            // 1 windows
  1624. #define WINMODE_2X              0x01            // 2 windows (equally sized, left and right)
  1625. #define WINMODE_2Y              0x02            // 2 windows (euqally sized, top and bottom)
  1626. #define WINMODE_3X              0x03            // 3 windows (1 large one, 2 small ones right to it)
  1627. #define WINMODE_3Y              0x04            // 3 windows (1 large one, 2 small ones below it)
  1628. #define WINMODE_4               0x05            // 4 windows (equally sized)
  1629. #define WINMODE_4X              0x06            // 4 windows (1 large one, 3 small ones right ot it)
  1630. #define WINMODE_4Y              0x07            // 4 windows (1 large one, 3 small ones below it)
  1631.  
  1632. //------ Flags for Unit Enumeration --------------------------------------------------------------------
  1633.  
  1634. #define ENUMMODE_LINES          0x00000000      // Curves / surfaces may neither be nested nor filled
  1635. #define ENUMMODE_FILLS          0x00000001      // Curves / surfaces may be nested and filled
  1636. #define ENUMMODE_ARCS           0x00000002      // Curves / surfaces may contain circular arcs
  1637. #define ENUMMODE_BEZIERS        0x00000004      // Curves / surfaces may contain BΘzier curves
  1638. #define ENUMMODE_LINETYPES      0x00000008      // Curves / surfaces may use line patterns (instead of resolving)
  1639. #define ENUMMODE_SOLID_CHARS    0x00000010      // Solid texts will be passed as separate characters (plus a matrix)
  1640. #define ENUMMODE_OTHER_CHARS    0x00000020      // Non-solid texts will be passed as separate characters (plus a matrix)
  1641. #define ENUMMODE_SOLID_TEXTS    0x00000040      // Solid texts will be passed in complete strings (format plus matrix)
  1642. #define ENUMMODE_OTHER_TEXTS    0x00000080      // Non-solid texts will be passed in complete strings (format plus matrix)
  1643. #define ENUMMODE_MATRIX         0x00000100      // Display matrixes will be passed (instead of applied directly)
  1644. #define ENUMMODE_NATIVE         0x00000200      // All units will be passed in native format only (address)
  1645.  
  1646. #define ENUMMODE_PLAIN          0x00001000      // Instances will be resolved
  1647. #define ENUMMODE_STRUCTURED     0x00002000      // Instances will not be resolved
  1648.  
  1649. #define ENUMMODE_USED_BLOCKS    0x00010000      // Enumerate all referenced blocks
  1650. #define ENUMMODE_USED_FONTS     0x00020000      // Enumerate all referenced fonts
  1651.  
  1652. #define ENUMMODE_NO_OBJECTS     0x00100000      // Do NOT enumerate objects
  1653. #define ENUMMODE_NO_BLOCKS      0x00200000      // Do NOT enumerate blocks
  1654. #define ENUMMODE_NO_FONTS       0x00400000      // Do NOT enumerate fonts
  1655.  
  1656. #define ENUMMODE_SCREEN_PROP    0x01000000      // Use screen settings to calculate properties
  1657. #define ENUMMODE_OUTPUT_PROP    0x02000000      // Use output settings to calculate properties (default)
  1658.  
  1659. #define ENUMDATA_INVALID        0x00000000      // EnumData contains no valid data
  1660. #define ENUMDATA_CURVE          0x00000001      // EnumData contains an open curve
  1661. #define ENUMDATA_AREA           0x00000002      // EnumData contains a closed surface
  1662. #define ENUMDATA_MARK           0x00000003      // EnumData contains a list of markings
  1663. #define ENUMDATA_CHAR           0x00000004      // EnumData contains a list of characters plus matrixes
  1664. #define ENUMDATA_TEXT           0x00000005      // EnumData contains a complete line of text
  1665. #define ENUMDATA_INST           0x00000006      // EnumData contains an instance
  1666.  
  1667. #define ENUMDATA_USED_BLOCK     0x00000010      // EnumData contains information about used blocks
  1668. #define ENUMDATA_USED_FONT      0x00000011      // EnumData contains information about used fonts
  1669.  
  1670. #define ENUMDATA_NATIVE_OBJ     0x00000020      // EnumData contains pointer to an object
  1671. #define ENUMDATA_NATIVE_INST    0x00000021      // EnumData contains pointer to an instance
  1672. #define ENUMDATA_NATIVE_BLOCK   0x00000022      // EnumData contains pointer to a block
  1673. #define ENUMDATA_NATIVE_USER    0x00000023      // EnumData contains pointer to a module-defined object
  1674.  
  1675. //------ Flags for Unit Modification -------------------------------------------------------------------
  1676.  
  1677. #define MODIFY_INIT             0x00000001      // UserObj is to be initialised
  1678. #define MODIFY_MATRIX           0x00000002      // UserObj is to be multiplied with a matrix
  1679.  
  1680. //------ Internal Flags for Entities and Data Blocks ---------------------------------------------------
  1681.  
  1682. #define FLAG_SELECT             0x0001          // Unit is permanently selected
  1683. #define FLAG_IDENT              0x0002          // Unit is temporarily selected
  1684. #define FLAG_USE                0x0004          // Unit is identified
  1685. #define FLAG_POINT              0x0008          // At least one point is identified
  1686.  
  1687. #define FLAG_SELCHANGE          0x0010          // The permanent selection has changed
  1688. #define FLAG_USECHANGE          0x0020          // The temporary selection has changed
  1689. #define FLAG_PREVIOUS           0x0040          // Unit was previously selected
  1690. #define FLAG_INTERNAL           0x0080          // Unit is used for internal affairs
  1691.  
  1692. #define FLAG_TEMP1              0x0100          // Temporary multi-purpose flag 1
  1693. #define FLAG_TEMP2              0x0200          // Temporary multi-purpose flag 2
  1694. #define FLAG_TEMP3              0x0400          // Temporary multi-purpose flag 3
  1695. #define FLAG_TEMP4              0x0800          // Temporary multi-purpose flag 4
  1696. #define FLAG_TEMP_ALL           0x0f00
  1697.  
  1698. #define FLAG_NODISPLAY          0x1000          // Unit's layer will not be displayed
  1699. #define FLAG_NOOUTPUT           0x2000          // Unit's layer will not be output
  1700. #define FLAG_FROZEN             0x4000          // Unit's layer is frozen
  1701. #define FLAG_IDLE               0x8000          // Unit's layer is idle
  1702.  
  1703. #define FLAG_GROUP_COPY         ( FLAG_PREVIOUS  | FLAG_SELECT )
  1704. #define FLAG_GROUP_NO_USE       ( FLAG_NODISPLAY | FLAG_FROZEN )
  1705. #define FLAG_GROUP_NO_SNAP      ( FLAG_NODISPLAY | FLAG_IDLE )
  1706.  
  1707. //------ Definitions for TVG File Handling -------------------------------------------------------------
  1708.  
  1709. #define TVG_COMMA               ','
  1710. #define TVG_SEMI                ';'
  1711. #define TVG_COLOR               '/'
  1712. #define TVG_ESCAPE              '\\'
  1713. #define TVG_STRING              '"'
  1714. #define TVG_KEYWORD             '='
  1715. #define TVG_COMMENT             '|'
  1716.  
  1717. #define TVG_NEWLINE             "\x0d\x0a"
  1718.  
  1719. #define TVG_KEY_UNKNOWN         -1
  1720. #define TVG_KEY_EXIT            0
  1721. #define TVG_KEY_END             1
  1722. #define TVG_KEY_DRAWING         2
  1723. #define TVG_KEY_LIBRARY         3
  1724. #define TVG_KEY_ATTRIB          4
  1725. #define TVG_KEY_PAGE            5
  1726. #define TVG_KEY_DEFAULT         6
  1727. #define TVG_KEY_SYSTEM          7
  1728. #define TVG_KEY_PEN             8
  1729. #define TVG_KEY_LINE            9
  1730. #define TVG_KEY_LAYER           10
  1731. #define TVG_KEY_HATCH           11
  1732. #define TVG_KEY_BLOCK           12
  1733. #define TVG_KEY_OBJECT          13
  1734. #define TVG_KEY_COLOR           14
  1735. #define TVG_KEY_KEYBOARD        15
  1736. #define TVG_KEY_TOOLBOX         16
  1737. #define TVG_KEY_SYMBOL          17
  1738. #define TVG_KEY_USER            18
  1739. #define TVG_KEY_MODULE          19
  1740. #define TVG_KEY_WINDOW          20
  1741. #define TVG_KEY_MULTILINE       21
  1742. #define TVG_KEY_MAX             22
  1743.  
  1744. //------ Constants for Drawing and Library Elements ----------------------------------------------------
  1745.  
  1746. #define ENTRIES_PER_DRAWING     10000           // Maximum number of blocks per drawing
  1747. #define ENTRIES_PER_LIBRARY     1000000         // Maximum number of blocks per library
  1748. #define ENTRIES_PER_LEVEL       1000            // Maximum number of blocks pro folder in a library
  1749. #define ENTRIES_PER_FONT        224             // Maximum number of characters per font (Ansi 32..255)
  1750.  
  1751. #define ATTRIBS_PER_OBJECT      200             // Maximum number of attributes per block / instance
  1752. #define POINTS_PER_OBJECT       2000            // Maximum number of point data blocks per object
  1753.  
  1754. #define NAME_LENGTH_SHORT       32              // Maximum length of short definition names
  1755. #define NAME_LENGTH_LONG        64              // Maximum length of long definition names
  1756. #define NAME_LENGTH_TITLE       64              // Maximum length of library and drawing titles
  1757. #define NAME_LENGTH_BLOCK       64              // Maximum length of block names
  1758. #define NAME_LENGTH_FONT        64              // Maximum length of font names
  1759. #define NAME_LENGTH_TEXTSHORT   250             // Maximum length of "short" texts
  1760. #define NAME_LENGTH_TEXTLONG    8000            // Maximum length of "long" texts
  1761. #define NAME_LENGTH_EDIT        250             // Maximum text length retrieves from edit controls
  1762.  
  1763. #define DATA_PER_OBJECT         128000          // Maximum size of a unit's data area in bytes
  1764.  
  1765. #define TVG_ID_LENGTH           22              // Length of TommySoftware file identifications
  1766. #define TVG_40_HEADER           "TommySoftware TVG 4.00"
  1767. #define TVG_30_HEADER           "TommySoftware TVG 3.00"
  1768. #define TVL_30_HEADER           "TommySoftware TVL 3.00"
  1769.  
  1770. #define TVG_BLOCK_ID            "*"             // Library name of blocks
  1771. #define TVG_BLOCK_INDEX         999             // Library index of blocks
  1772.  
  1773. #define TVG_TOOLBOX_MAX         100                             // Number of toolbox buttons
  1774. #define TVG_BLOCKLIST_MAX       100                             // Number of block list buttons
  1775. #define TVG_CUSTOMKEY_MAX       76                              // Number of keys
  1776.  
  1777. #define TVG_SYSTEMCOLOR_MAX     32                              // Number of system colors
  1778. #define TVG_CUSTOMCOLOR_MAX     500                             // Number of custom colors
  1779. #define TVG_TOTALCOLOR_MAX      (TVG_SYSTEMCOLOR_MAX + TVG_CUSTOMCOLOR_MAX)
  1780. #define TVG_DEFAULT_MAX         8                               // Number of defaults           (pens & layers)
  1781. #define TVG_SYSTEM_MAX          50                              // Number of coordinate systems (plus STANDARD)
  1782. #define TVG_MULTILINE_MAX       50                              // Number of line sequences     (plus STANDARD)
  1783. #define TVG_MULTILINEPART_MAX   8                               // Number of lines per line sequence
  1784. #define TVG_HATCH_MAX           100                             // Number of hatch types        (plus STANDARD)
  1785. #define TVG_LINE_MAX            100                             // Number of line patterns      (plus STANDARD)
  1786. #define TVG_LINEPART_MAX        16                              // Number of line parts per line pattern
  1787. #define TVG_PEN_MAX             500                             // Number of pens               (plus NULL)
  1788. #define TVG_LAYER_MAX           500                             // Number of layers             (plus STANDARD)
  1789.  
  1790. #define TVG_DRAWING_MAX         1               // Maximum number of concurrently opened drawing files
  1791. #define TVG_WINDOW_MAX          4               // Maximum number of concurrent drawing windows
  1792. #define TVG_WINDOW_VIEW         999             // Window index of view window
  1793. #define TVG_FILE_MAX            20              // Maximum number of drawings memorised
  1794. #define TVG_FONT_MAX            10              // Maximum number of fonts opened
  1795. #define TVG_LIBRARY_MAX         50              // Maximum number of libraries opened
  1796. #define TVG_CACHE_MAX           10000           // Maximum number of blocks in the cache
  1797.  
  1798. #define TVG_BITMAP_MIN          50              // Minimum number of bitmaps opened
  1799. #define TVG_BITMAP_MAX          1000            // Maximum number of bitmaps opened
  1800.  
  1801. #define TVG_DEFPATH_MAX         8               // Number of standard paths per file type
  1802. #define TVG_PLOTTER_MAX         8               // Number of plotter pens
  1803.  
  1804. #define TVG_FILTER_MAX          20              // Maximum number of loaded filters
  1805. #define TVG_MODULE_MAX          40              // Maximum number of loaded modules
  1806. #define TVG_MODULE_MENU_MAX     100             // Maximum number of items in a module's menu
  1807. #define TVG_MODULE_SUBMENU_MAX  20              // Maximum number of items in a module's submenu
  1808.  
  1809. #define TVG_INPUT_MAX           2000            // Maximum number of points to be entered
  1810. #define TVG_INPUT_DEF_MAX       8               // Maximum number of predefined point entries
  1811. #define TVG_POLYGON_MAX         16000           // Maximum number of lines at polygon output
  1812. #define TVG_POLYPOLY_MAX        1000            // Maximum number of nested sub-polygons
  1813.  
  1814. #define PAGEDEF_SIZE            sizeof( PAGEDEF )
  1815. #define DEFAULTDEF_SIZE         sizeof( DEFAULTDEF )
  1816. #define WINDOWDEF_SIZE          sizeof( WINDOWDEF )
  1817. #define SYSTEMDEF_SIZE          sizeof( SYSTEMDEF )
  1818. #define LINEDEF_SIZE            sizeof( LINEDEF )
  1819. #define PROPERTY_SIZE           sizeof( PROPERTY )
  1820. #define PENDEF_SIZE             sizeof( PENDEF )
  1821. #define XPROPERTY_SIZE          sizeof( XPROPERTY )
  1822. #define LAYERDEF_SIZE           sizeof( LAYERDEF )
  1823. #define MULTILINEDEF_SIZE       sizeof( MULTILINEDEF )
  1824. #define HATCHDEF_SIZE           sizeof( HATCHDEF )
  1825. #define COLORDEF_SIZE           sizeof( COLORDEF )
  1826.  
  1827. #define UNIT_ANY_SIZE           sizeof( UNIT_ANY )
  1828. #define UNIT_OBJECT_SIZE        sizeof( UNIT_OBJECT )
  1829. #define UNIT_BLOCK_SIZE         sizeof( UNIT_BLOCK )
  1830. #define UNIT_INSTANCE_SIZE      sizeof( UNIT_INSTANCE )
  1831. #define UNIT_USER_SIZE          sizeof( UNIT_USER )
  1832.  
  1833. //------ Color definitions -----------------------------------------------------------------------------
  1834.  
  1835. #define RGB_WHITE       RGB( 255, 255, 255 )  // RGB for White        #0
  1836. #define RGB_GRAY5       RGB( 242, 242, 242 )  // RGB for Gray      5%
  1837. #define RGB_GRAY12      RGB( 224, 224, 224 )  // RGB for Gray     12,5%
  1838. #define RGB_GRAY25      RGB( 192, 192, 192 )  // RGB for Gray     25%
  1839. #define RGB_GRAY50      RGB( 128, 128, 128 )  // RGB for Gray     50%
  1840. #define RGB_GRAY62      RGB(  96,  96,  96 )  // RGB for Gray     62,5%
  1841. #define RGB_GRAY75      RGB(  64,  64,  64 )  // RGB for Gray     75%
  1842. #define RGB_BLACK       RGB(   0,   0,   0 )  // RGB for Black
  1843. #define RGB_RED100      RGB( 255,   0,   0 )  // RGB for Red     100% #8
  1844. #define RGB_RED75       RGB( 192,   0,   0 )  // RGB for Red      75%
  1845. #define RGB_RED50       RGB( 128,   0,   0 )  // RGB for Red      50%
  1846. #define RGB_RED25       RGB(  64,   0,   0 )  // RGB for Red      25%
  1847. #define RGB_YELLOW100   RGB( 255, 255,   0 )  // RGB for Yellow  100%
  1848. #define RGB_YELLOW75    RGB( 192, 192,   0 )  // RGB for Yellow   75%
  1849. #define RGB_YELLOW50    RGB( 128, 128,   0 )  // RGB for Yellow   50%
  1850. #define RGB_YELLOW25    RGB(  64,  64,   0 )  // RGB for Yellow   25%
  1851. #define RGB_GREEN100    RGB(   0, 255,   0 )  // RGB for Green   100% #16
  1852. #define RGB_GREEN75     RGB(   0, 192,   0 )  // RGB for Green    75%
  1853. #define RGB_GREEN50     RGB(   0, 128,   0 )  // RGB for Green    50%
  1854. #define RGB_GREEN25     RGB(   0,  64,   0 )  // RGB for Green    25%
  1855. #define RGB_CYAN100     RGB(   0, 255, 255 )  // RGB for Cyan    100%
  1856. #define RGB_CYAN75      RGB(   0, 192, 192 )  // RGB for Cyan     75%
  1857. #define RGB_CYAN50      RGB(   0, 128, 128 )  // RGB for Cyan     50%
  1858. #define RGB_CYAN25      RGB(   0,  64,  64 )  // RGB for Cyan     25%
  1859. #define RGB_BLUE100     RGB(   0,   0, 255 )  // RGB for Blue    100% #24
  1860. #define RGB_BLUE75      RGB(   0,   0, 192 )  // RGB for Blue     75%
  1861. #define RGB_BLUE50      RGB(   0,   0, 128 )  // RGB for Blue     50%
  1862. #define RGB_BLUE25      RGB(   0,   0,  64 )  // RGB for Blue     25%
  1863. #define RGB_MAGENTA100  RGB( 255,   0, 255 )  // RGB for Magenta 100%
  1864. #define RGB_MAGENTA75   RGB( 192,   0, 192 )  // RGB for Magenta  75%
  1865. #define RGB_MAGENTA50   RGB( 128,   0, 128 )  // RGB for Magenta  50%
  1866. #define RGB_MAGENTA25   RGB(  64,   0,  64 )  // RGB for Magenta  25% #31
  1867.  
  1868. #define RGB_BROWN       RGB( 128,  64,   0 )  // RGB for Brown   100%
  1869. #define RGB_ORANGE      RGB( 255, 128,   0 )  // RGB for Orange  100%
  1870.  
  1871. //------ Mathematical Constants ------------------------------------------------------------------------
  1872.  
  1873. #define REAL_SIN_15             0.2588190451025         // sin( 15░ )
  1874. #define REAL_COS_15             0.9659258262891         // cos( 15░ )
  1875. #define REAL_TAN_15             0.2679491924311         // tan( 15░ )
  1876. #define REAL_SIN_7              0.1218693434051         // sin( 7░ )
  1877. #define REAL_COS_7              0.9925461516413         // cos( 7░ )
  1878. #define REAL_TAN_7              0.1227845609029         // tan( 7░ )
  1879. #define REAL_SIN_30             0.5                     // sin( 30░ )
  1880. #define REAL_COS_30             0.8660254037844         // cos( 30░ )
  1881. #define REAL_TAN_30             0.5773502691896         // tan( 30░ )
  1882. #define REAL_SIN_42             0.6626200482157         // sin( 41.5░ )
  1883. #define REAL_COS_42             0.7489555720789         // cos( 41.5░ )
  1884. #define REAL_TAN_42             0.8847252645559         // tan( 41.5░ )
  1885.  
  1886. #define REAL_01PI               0.3141592653589793      // 0.1 pi
  1887. #define REAL_05PI               1.5707963267948965      // 0.5 pi
  1888. #define REAL_PI                 3.141592653589793       // 1.0 pi
  1889. #define REAL_15PI               4.7123889803846895      // 1.5 pi
  1890. #define REAL_2PI                6.283185307179586       // 2.0 pi
  1891. #define REAL_25PI               7.8539816339744825      // 2.5 pi
  1892. #define REAL_3PI                9.424777960769379       // 3.0 pi
  1893. #define REAL_35PI              10.9955742875642755      // 3.5 pi
  1894. #define REAL_4PI               12.566370614359172       // 4.0 pi
  1895.  
  1896. #define REAL_DEG_RAD            0.01745329251994        // pi / 180░
  1897. #define REAL_GRA_RAD            0.01570796326795        // pi / 200░
  1898. #define REAL_REL_RAD            6.283185307179586       // 2.0 * pi
  1899. #define REAL_RAD_DEG           57.29577951308           // 180░ / pi
  1900. #define REAL_RAD_GRA           63.66197723676           // 200░ / pi
  1901. #define REAL_RAD_REL            0.1591549430919         // 0.5 / pi
  1902.  
  1903. #define REAL_INCH_MM           25.4                     // Inch -> MM
  1904. #define REAL_MM_INCH            0.03937007874016        // MM -> Inch
  1905.  
  1906. #define REAL_ROOT_3             1.732050807569          // sqrt( 3.0 )
  1907. #define REAL_ROOT_2             1.414213562373          // sqrt( 2.0 )
  1908. #define REAL_ROOT_05            0.7071067811865         // sqrt( 0.5 )
  1909.  
  1910. //------ "Invalid" Values ------------------------------------------------------------------------------
  1911.  
  1912. #define REAL_NOVAL              (1.0e+300)              // Invalid double value
  1913. #define FLOAT_NOVAL             (1.0e+32)               // Invalid float value
  1914. #define INT_NOVAL               (-2147483647)           // Invalid int value
  1915. #define LONG_NOVAL              (-2147483647)           // Invalid long value
  1916.  
  1917. #define NOPARAM                 0                       // Unused parameter
  1918.  
  1919. //------ Value Ranges for Input and Output -------------------------------------------------------------
  1920.  
  1921. #define COORD_MIN               (-1.0e100)      // Allowed coordinate range
  1922. #define COORD_MAX               (1.0e100)
  1923.  
  1924. #define EDIT_MIN                (1.0e-10)       // Allowed input range
  1925. #define EDIT_MAX                (1.0e10)
  1926.  
  1927. //------ Basic Types -----------------------------------------------------------------------------------
  1928.  
  1929. typedef void*           OBJPTR;                 // Universal object pointer
  1930. typedef unsigned int    OFFSET;                 // Offset pointer for data block enumeration
  1931.  
  1932. typedef char            FILENAME[MAX_PATH];     // Standard file name
  1933. typedef char            DUMMYSTR[MAX_PATH+256]; // Standard message text (text + one file name)
  1934.  
  1935. typedef char            STR32   [32],           // Standard text sizes
  1936.                         STR64   [64],
  1937.                         STR256  [256],
  1938.                         STR8192 [8192];
  1939.  
  1940. typedef struct {                                // Matrix
  1941.   double        m11, m12,
  1942.                 m21, m22,
  1943.                 m31, m32;
  1944. } MATRIX;
  1945.  
  1946. typedef struct {                                // Point in internal [mm]
  1947.   double        x, y;
  1948. } DPOINT;
  1949.  
  1950. typedef struct {                                // Rectangle in internal [mm]
  1951.   double        x1, y1, x2, y2;
  1952. } DRECT;
  1953.  
  1954. typedef struct {                                // Font description
  1955.   int           Type,
  1956.                 Style,
  1957.                 Weight;
  1958.   STR64         Name;
  1959. } FONTDEF;
  1960.  
  1961. //------ File Header Elements --------------------------------------------------------------------------
  1962.  
  1963. typedef struct {
  1964.   int           PageType,
  1965.                 PageOrient;
  1966.   double        PageXSize,
  1967.                 PageYSize;
  1968. } PAGEDEF;
  1969.  
  1970. typedef struct {
  1971.   int           Pens    [TVG_DEFAULT_MAX],
  1972.                 Layers  [TVG_DEFAULT_MAX];
  1973. } DEFAULTDEF;
  1974.  
  1975. typedef struct {
  1976.   int           WindowSystem;
  1977.   BOOL          WindowGrid,
  1978.                 WindowSnap;
  1979.   double        WindowXCenter,
  1980.                 WindowYCenter,
  1981.                 WindowZoom;
  1982. } WINDOWDEF;
  1983.  
  1984. typedef struct {
  1985.   STR32         SystemName;
  1986.  
  1987.   double        SystemRotate,
  1988.                 SystemScale;
  1989.   int           SystemOption;
  1990.  
  1991.   int           SystemOrgMode;
  1992.   double        SystemXOrg,
  1993.                 SystemYOrg;
  1994.  
  1995.   int           SystemLenUnit,
  1996.                 SystemLineUnit,
  1997.                 SystemAngleUnit,
  1998.                 SystemFraction,
  1999.                 SystemAccuracy;
  2000.  
  2001.   int           SystemGridMode;
  2002.   double        SystemXGrid,
  2003.                 SystemYGrid;
  2004.  
  2005.   int           SystemSnapMode;
  2006.   double        SystemXSnap,
  2007.                 SystemYSnap;
  2008.  
  2009.   MATRIX        SystemMMToUnit,
  2010.                 SystemUnitToMM;
  2011. } SYSTEMDEF;
  2012.  
  2013. typedef struct {
  2014.   STR32         LineName;
  2015.  
  2016.   int           LineNum,
  2017.                 LineMode;
  2018.   int           LineData[TVG_LINEPART_MAX];
  2019. } LINEDEF;
  2020.  
  2021. typedef struct {
  2022.   int           FillMode;
  2023.   COLORREF      FillColor,
  2024.                 LineColor;
  2025.   int           LineType;
  2026.   double        LineWidth;
  2027. } PROPERTY;
  2028.  
  2029. typedef struct {
  2030.   STR64         PenName;
  2031.  
  2032.   PROPERTY      PenIntern,
  2033.                 PenExtern;
  2034.  
  2035.   int           PenLayer;
  2036. } PENDEF;
  2037.  
  2038. typedef struct {
  2039.   int           Flag,
  2040.                 Pen;
  2041.  
  2042.   int           FillMode;
  2043.   COLORREF      FillColor,
  2044.                 LineColor;
  2045.   int           LineType;
  2046.   double        LineWidth;
  2047.  
  2048.   int           Layer;
  2049. } XPROPERTY;
  2050.  
  2051. typedef struct {
  2052.   STR64         LayerName;
  2053.  
  2054.   XPROPERTY     LayerIntern,
  2055.                 LayerExtern;
  2056.  
  2057.   int           LayerMode;
  2058. } LAYERDEF;
  2059.  
  2060. typedef struct {
  2061.   double        Distance;
  2062.   XPROPERTY     XProperty;
  2063.   BOOL          Use;
  2064. } MULTILINE;
  2065.  
  2066. typedef struct {
  2067.   STR32         MultiLineName;
  2068.   MULTILINE     MultiLineData[TVG_MULTILINEPART_MAX];
  2069. } MULTILINEDEF;
  2070.  
  2071. typedef struct {
  2072.   STR64         HatchName;
  2073.  
  2074.   BOOL          HatchLine1Active;
  2075.   int           HatchLine1;
  2076.   double        HatchLine1Rotate;
  2077.  
  2078.   BOOL          HatchLine2Active;
  2079.   int           HatchLine2;
  2080.   double        HatchLine2Rotate;
  2081.  
  2082.   BOOL          HatchBlockActive;
  2083.   STR64         HatchLibraryName,
  2084.                 HatchBlockName;
  2085.   double        HatchBlockRotate,
  2086.                 HatchBlockScale,
  2087.                 HatchXStep1,
  2088.                 HatchXStep2,
  2089.                 HatchYStep1,
  2090.                 HatchYStep2,
  2091.                 HatchLineStep1,
  2092.                 HatchLineStep2;
  2093.  
  2094.   double        HatchRotate,
  2095.                 HatchOffset1,
  2096.                 HatchOffset2;
  2097. } HATCHDEF;
  2098.  
  2099. typedef struct {
  2100.   STR32         ColorName;
  2101.   COLORREF      ColorValue;
  2102. } COLORDEF;
  2103.  
  2104. typedef union {
  2105.   PROPERTY      Property;
  2106.   PAGEDEF       Page;
  2107.   DEFAULTDEF    Default;
  2108.   SYSTEMDEF     System;
  2109.   HATCHDEF      Hatch;
  2110.   MULTILINEDEF  MultiLine;
  2111.   PENDEF        Pen;
  2112.   LINEDEF       Line;
  2113.   LAYERDEF      Layer;
  2114.   COLORDEF      Color;
  2115. } UNIONDEF;
  2116.  
  2117. //------ File Handling ---------------------------------------------------------------------------------
  2118.  
  2119. typedef struct {
  2120.   STR64         Title,
  2121.                 Theme,
  2122.                 Author1,
  2123.                 Date1,
  2124.                 Author2,
  2125.                 Date2;
  2126.   STR256        Comment;
  2127. } FILE_HEADER;
  2128.  
  2129. typedef struct {
  2130.   char          Newline[4],
  2131.                 Comma,
  2132.                 Semi,
  2133.                 Color,
  2134.                 Escape,
  2135.                 String,
  2136.                 Keyword,
  2137.                 Comment;
  2138. } TOKEN_DATA;
  2139.  
  2140. //------ Data Block Elements ---------------------------------------------------------------------------
  2141.  
  2142. typedef struct {
  2143.   int           ArrowStartForm,
  2144.                 ArrowStartMode,
  2145.                 ArrowEndForm,
  2146.                 ArrowEndMode;
  2147. } DIMLINE;
  2148.  
  2149. typedef struct {
  2150.   FONTDEF       TextFont;
  2151.   XPROPERTY     TextXProperty;
  2152.   double        TextSize1,
  2153.                 TextSize2;
  2154.  
  2155.   int           NumAccuracy;
  2156.   BOOL          NumRefresh,
  2157.                 NumRotate;
  2158.   int           System;
  2159. } DIMSMALL;
  2160.  
  2161. typedef struct {
  2162.   FONTDEF       TextFont;
  2163.   XPROPERTY     TextXProperty;
  2164.   double        TextSize1,
  2165.                 TextSize2;
  2166.  
  2167.   int           NumAccuracy;
  2168.   BOOL          NumRefresh,
  2169.                 NumCentered,
  2170.                 NumTight,
  2171.                 NumRotate;
  2172.  
  2173.   int           ArrowStartForm,
  2174.                 ArrowStartMode,
  2175.                 ArrowEndForm,
  2176.                 ArrowEndMode;
  2177.  
  2178.   BOOL          ExtStartDisplay,
  2179.                 ExtEndDisplay,
  2180.                 LineDisplay;
  2181.   int           LineOrientation,
  2182.                 LineType,
  2183.                 LineDistMode;
  2184.   double        LineDistance;
  2185.   int           System;
  2186. } DIMLARGE;
  2187.  
  2188. typedef struct {
  2189.   FONTDEF       TextFont;
  2190.   XPROPERTY     TextXProperty;
  2191.   MATRIX        TextMatrix;
  2192.  
  2193.   double        CharDistance,
  2194.                 TabDistance,
  2195.                 LineDistance;
  2196.   int           TextMode;
  2197. } TEXTSTANDARD;
  2198.  
  2199. typedef struct {
  2200.   FONTDEF       TextFont;
  2201.   XPROPERTY     TextXProperty;
  2202.   double        TextSize;
  2203.  
  2204.   double        CharDistance,
  2205.                 TabDistance,
  2206.                 LineDistance;
  2207.   int           TextMode;
  2208. } TEXTFRAME;
  2209.  
  2210. typedef struct {
  2211.   int           ArrowForm,
  2212.                 ArrowMode,
  2213.                 FrameForm;
  2214.   double        FrameOffset;
  2215. } TEXTREFERENCE;
  2216.  
  2217. typedef struct {
  2218.   XPROPERTY     XProperty;
  2219.   STR64         LibraryName,
  2220.                 BlockName;
  2221.   MATRIX        DisplayMatrix;
  2222.   int           IgnoreBlock;
  2223.  
  2224.   int           LibraryNum,
  2225.                 BlockNum;
  2226.   BOOL          NotFound;
  2227. } CLIPSURFACE;
  2228.  
  2229. typedef struct {
  2230.   STR256        BitmapName;
  2231.   MATRIX        DisplayMatrix;
  2232. } BITMAPREF;
  2233.  
  2234. //------ Generic Data Blocks ---------------------------------------------------------------------------
  2235.  
  2236. typedef struct {
  2237.   int           Size;
  2238.   short         Ident,
  2239.                 Flag;
  2240.  
  2241.   short         BlockOwner,
  2242.                 BlockType,
  2243.  
  2244.                 ElemType,
  2245.                 ElemCount;
  2246. } BLOCK_HEADER;
  2247.  
  2248. typedef struct {
  2249.   BLOCK_HEADER  Header;         // ElemType = 0..9, ElemCount = ???
  2250. } BLOCK_ANY;
  2251.  
  2252. typedef struct {
  2253.   BLOCK_HEADER  Header;         // ElemType = 1, ElemCount = Number of LONGs ( >0 )
  2254.   long          Data[];
  2255. } BLOCK_LONG;
  2256.  
  2257. typedef struct {
  2258.   BLOCK_HEADER  Header;         // ElemType = 2, ElemCount = Number of DOUBLEs ( >0 )
  2259.   double        Data[];
  2260. } BLOCK_DOUBLE;
  2261.  
  2262. typedef struct {
  2263.   BLOCK_HEADER  Header;         // ElemType = 3, ElemCount = Number of DPOINTs ( >0 )
  2264.   DPOINT        Data[];
  2265. } BLOCK_POINT;
  2266.  
  2267. typedef struct {
  2268.   BLOCK_HEADER  Header;         // ElemType = 4, ElemCount = Number of COLORREFs ( >0 )
  2269.   COLORREF      Data[];
  2270. } BLOCK_COLORREF;
  2271.  
  2272. typedef struct {
  2273.   BLOCK_HEADER  Header;         // ElemType = 5, ElemCount = Number of PROPERTYs ( >0 )
  2274.   PROPERTY      Data[];
  2275. } BLOCK_PROPERTY;
  2276.  
  2277. typedef struct {
  2278.   BLOCK_HEADER  Header;         // ElemType = 6, ElemCount = Number of XPROPERTYs ( >0 )
  2279.   XPROPERTY     Data[];
  2280. } BLOCK_XPROPERTY;
  2281.  
  2282. typedef struct {
  2283.   BLOCK_HEADER  Header;         // ElemType = 7, ElemCount = Number of FONTDEFs ( >0 )
  2284.   FONTDEF       Data[];
  2285. } BLOCK_FONTDEF;
  2286.  
  2287. typedef struct {
  2288.   BLOCK_HEADER  Header;         // ElemType = 8, ElemCount = Text length ( <0 static, >0 dynamic )
  2289.   char          Text[];
  2290. } BLOCK_TEXT;
  2291.  
  2292. typedef struct {
  2293.   BLOCK_HEADER  Header;         // ElemType = 9, ElemCount = Data length ( >0 )
  2294.   BYTE          Data[];
  2295. } BLOCK_BINARY;
  2296.  
  2297. typedef BLOCK_ANY       *BLOCK_PTR;
  2298. typedef BLOCK_LONG      *BLOCK_LONG_PTR;
  2299. typedef BLOCK_DOUBLE    *BLOCK_DOUBLE_PTR;
  2300. typedef BLOCK_POINT     *BLOCK_POINT_PTR;
  2301. typedef BLOCK_COLORREF  *BLOCK_COLORREF_PTR;
  2302. typedef BLOCK_PROPERTY  *BLOCK_PROPERTY_PTR;
  2303. typedef BLOCK_XPROPERTY *BLOCK_XPROPERTY_PTR;
  2304. typedef BLOCK_FONTDEF   *BLOCK_FONTDEF_PTR;
  2305. typedef BLOCK_TEXT      *BLOCK_TEXT_PTR;
  2306. typedef BLOCK_BINARY    *BLOCK_BINARY_PTR;
  2307.  
  2308. //------ Native Data Blocks ----------------------------------------------------------------------------
  2309.  
  2310. typedef struct {
  2311.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = Attribute length ( <0 static, >0 dynamic )
  2312.   STR32         Name;
  2313.   char          Text[];
  2314. } BLOCK_ATTRIBUTE;
  2315.  
  2316. typedef struct {
  2317.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2318.   DIMLINE       Data;
  2319. } BLOCK_DIMLINE;
  2320.  
  2321. typedef struct {
  2322.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2323.   DIMSMALL      Data;
  2324. } BLOCK_DIMSMALL;
  2325.  
  2326. typedef struct {
  2327.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2328.   DIMLARGE      Data;
  2329. } BLOCK_DIMLARGE;
  2330.  
  2331. typedef struct {
  2332.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2333.   TEXTSTANDARD  Data;
  2334. } BLOCK_TEXTSTANDARD;
  2335.  
  2336. typedef struct {
  2337.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2338.   TEXTFRAME     Data;
  2339. } BLOCK_TEXTFRAME;
  2340.  
  2341. typedef struct {
  2342.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2343.   TEXTREFERENCE Data;
  2344. } BLOCK_TEXTREFERENCE;
  2345.  
  2346. typedef struct {
  2347.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2348.   CLIPSURFACE   Data;
  2349. } BLOCK_CLIPSURFACE;
  2350.  
  2351. typedef struct {
  2352.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2353.   BITMAPREF     Data;
  2354. } BLOCK_BITMAPREF;
  2355.  
  2356. typedef BLOCK_ATTRIBUTE         *BLOCK_ATTRIBUTE_PTR;
  2357. typedef BLOCK_DIMLINE           *BLOCK_DIMLINE_PTR;
  2358. typedef BLOCK_DIMSMALL          *BLOCK_DIMSMALL_PTR;
  2359. typedef BLOCK_DIMLARGE          *BLOCK_DIMLARGE_PTR;
  2360. typedef BLOCK_TEXTSTANDARD      *BLOCK_TEXTSTANDARD_PTR;
  2361. typedef BLOCK_TEXTFRAME         *BLOCK_TEXTFRAME_PTR;
  2362. typedef BLOCK_TEXTREFERENCE     *BLOCK_TEXTREFERENCE_PTR;
  2363. typedef BLOCK_CLIPSURFACE       *BLOCK_CLIPSURFACE_PTR;
  2364. typedef BLOCK_BITMAPREF         *BLOCK_BITMAPREF_PTR;
  2365.  
  2366. //------ Internal Data Blocks --------------------------------------------------------------------------
  2367.  
  2368. typedef struct {
  2369.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2370.   double        ArcAngle;
  2371. } BLOCK_T001;
  2372.  
  2373. typedef struct {
  2374.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2375.   double        StartAngle,
  2376.                 ArcAngle;
  2377. } BLOCK_T002;
  2378.  
  2379. typedef struct {
  2380.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2381.   double        ArrowStartAngle,
  2382.                 ArrowEndAngle;
  2383. } BLOCK_T003;
  2384.  
  2385. typedef struct {
  2386.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2387.   double        ArcAngle,
  2388.                 StartAngle,
  2389.                 EndAngle,
  2390.                 ArrowStartAngle,
  2391.                 ArrowEndAngle;
  2392. } BLOCK_T004;
  2393.  
  2394. typedef struct {
  2395.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2396.   int           ArrowStartForm,
  2397.                 ArrowEndForm;
  2398.   double        ArrowStartAngle,
  2399.                 ArrowEndAngle,
  2400.                 NumberAngle;
  2401.   BOOL          ExtStartDisplay,
  2402.                 ExtEndDisplay,
  2403.                 LineDisplay;
  2404.   double        x1, y1,         // Position of arrow 1 / start-point of dimension
  2405.                 x2, y2,         // Position of arrow 2 / end-point of dimension
  2406.                 x3, y3,         // End-point of extension line 1 (x1,y1)
  2407.                 x4, y4,         // End-point of extension line 2 (x2,y2)
  2408.                 x7, y7;         // Insertion point of number
  2409. } BLOCK_T005;
  2410.  
  2411. typedef struct {
  2412.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2413.   int           ArrowStartForm,
  2414.                 ArrowEndForm;
  2415.   double        ArcAngle,
  2416.                 StartAngle,
  2417.                 EndAngle,
  2418.                 ArrowStartAngle,
  2419.                 ArrowEndAngle,
  2420.                 NumberAngle;
  2421.   BOOL          ExtStartDisplay,
  2422.                 ExtEndDisplay,
  2423.                 LineDisplay;
  2424.   double        x1, y1,         // Position of arrow 1 / start-point of dimension
  2425.                 x2, y2,         // Position of arrow 2 / end-point of dimension
  2426.                 x3, y3,         // End-point of extension line 1 (x1,y1)
  2427.                 x4, y4,         // End-point of extension line 2 (x2,y2)
  2428.                 x5, y5,         // Center-point of dimension line arc
  2429.                 x6, y6,         // Radius-point of dimension line arc
  2430.                 x7, y7;         // Insertion point of number
  2431. } BLOCK_T006;
  2432.  
  2433. typedef struct {
  2434.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2435.   double        NumberAngle;
  2436.   double        x7, y7;         // Insertion point of number
  2437. } BLOCK_T007;
  2438.  
  2439. typedef struct {
  2440.   BLOCK_HEADER  Header;         // ElemType = 0, ElemCount = 0
  2441.   int           ArrowForm,
  2442.                 ArrowMode;
  2443.   double        ArrowAngle;
  2444.   int           FrameForm;
  2445.   double        FrameOffset;
  2446.   double        x1, y1,         // Corner-point 1 / Center-point
  2447.                 x2, y2,         // Corner-point 2 / Radius-point / Vector 1
  2448.                 x3, y3,         // Corner-point 3                / Vector 2
  2449.                 x4, y4,         // Corner-point 4
  2450.                 x5, y5,         // Start-point of reference line
  2451.                 x6, y6,         // Bending-point of reference line
  2452.                 x7, y7;         // Insertion point of number
  2453. } BLOCK_T008;
  2454.  
  2455. typedef BLOCK_T001      *BLOCK_T001_PTR;
  2456. typedef BLOCK_T002      *BLOCK_T002_PTR;
  2457. typedef BLOCK_T003      *BLOCK_T003_PTR;
  2458. typedef BLOCK_T004      *BLOCK_T004_PTR;
  2459. typedef BLOCK_T005      *BLOCK_T005_PTR;
  2460. typedef BLOCK_T006      *BLOCK_T006_PTR;
  2461. typedef BLOCK_T007      *BLOCK_T007_PTR;
  2462. typedef BLOCK_T008      *BLOCK_T008_PTR;
  2463.  
  2464. //------ Unit headers ----------------------------------------------------------------------------------
  2465.  
  2466. typedef struct {
  2467.   long          Units,          // Internal Data - do not modify!
  2468.                 Bytes;          // Internal Data - do not modify!
  2469.   OBJPTR        Prev,           // Internal Data - do not modify!
  2470.                 Next;           // Internal Data - do not modify!
  2471. } UNIT_MEMORY;
  2472.  
  2473. typedef struct {
  2474.   DRECT         Rect;           // Internal Data - do not modify!
  2475.  
  2476.   int           Ident,          // Internal Data - do not modify!
  2477.                 Flag,           // Internal Data - do not modify!
  2478.  
  2479.                 Undo1,          // Internal Data - do not modify!
  2480.                 Undo2;          // Internal Data - do not modify!
  2481.  
  2482.   int           UnitOwner,
  2483.                 UnitType;
  2484. } UNIT_HEADER;
  2485.  
  2486. typedef struct {
  2487.   UNIT_MEMORY   Memory;
  2488.   UNIT_HEADER   Header;         // UnitType = ?
  2489.  
  2490.   char          Data[];
  2491. } UNIT_ANY;
  2492.  
  2493. typedef struct {
  2494.   UNIT_MEMORY   Memory;
  2495.   UNIT_HEADER   Header;         // UnitType = 0
  2496.  
  2497.   XPROPERTY     XProperty;
  2498.   int           ObjectType;
  2499.  
  2500.   int           FontNum;        // Internal Data - do not modify!
  2501.  
  2502.   char          Data[];
  2503. } UNIT_OBJECT;
  2504.  
  2505. typedef struct {
  2506.   UNIT_MEMORY   Memory;
  2507.   UNIT_HEADER   Header;         // UnitType = 2
  2508.  
  2509.   XPROPERTY     XProperty;
  2510.   STR64         BlockName;
  2511.   DRECT         BlockRect;
  2512.  
  2513.   OBJPTR        BlockFirst,     // Internal Data - do not modify!
  2514.                 BlockLast;      // Internal Data - do not modify!
  2515.  
  2516.   char          Data[];
  2517. } UNIT_BLOCK;
  2518.  
  2519. typedef struct {
  2520.   UNIT_MEMORY   Memory;
  2521.   UNIT_HEADER   Header;         // UnitType = 3
  2522.  
  2523.   XPROPERTY     XProperty;
  2524.   STR64         LibraryName,
  2525.                 BlockName;
  2526.   MATRIX        DisplayMatrix;
  2527.  
  2528.   int           LibraryNum,     // Internal Data - do not modify!
  2529.                 BlockNum;       // Internal Data - do not modify!
  2530.   BOOL          NotFound;       // Internal Data - do not modify!
  2531.  
  2532.   char          Data[];
  2533. } UNIT_INSTANCE;
  2534.  
  2535. typedef struct {
  2536.   UNIT_MEMORY   Memory;
  2537.   UNIT_HEADER   Header;         // UnitType = 9
  2538.  
  2539.   XPROPERTY     XProperty;
  2540.   STR64         LibraryName,
  2541.                 BlockName;
  2542.   MATRIX        DisplayMatrix;
  2543.   int           UserType;
  2544.  
  2545.   int           LibraryNum,     // Internal Data - do not modify!
  2546.                 BlockNum;       // Internal Data - do not modify!
  2547.   BOOL          NotFound;       // Internal Data - do not modify!
  2548.  
  2549.   char          Data[];
  2550. } UNIT_USER;
  2551.  
  2552. typedef UNIT_ANY        *UNIT_PTR;
  2553. typedef UNIT_OBJECT     *UNIT_OBJECT_PTR;
  2554. typedef UNIT_BLOCK      *UNIT_BLOCK_PTR;
  2555. typedef UNIT_INSTANCE   *UNIT_INSTANCE_PTR;
  2556. typedef UNIT_USER       *UNIT_USER_PTR;
  2557.  
  2558. //------ Definitions for Unit Enumeration --------------------------------------------------------------
  2559.  
  2560. typedef struct {
  2561.   DPOINT        p1,
  2562.                 p2,
  2563.                 p3,
  2564.                 p4,
  2565.                 p5;
  2566.  
  2567.   int           Pen,
  2568.                 Layer;
  2569.  
  2570.   double        Len,
  2571.                 Start,
  2572.                 Bogen;
  2573.  
  2574.   DRECT         Rect;
  2575.  
  2576.   int           Type,
  2577.                 Flag,
  2578.                 Count;
  2579.  
  2580.   BOOL          Orient,
  2581.                 Valid;
  2582. } GEO_OBJECT;
  2583.  
  2584. typedef struct {
  2585.   int                   EnumData,
  2586.                         EnumCount,
  2587.  
  2588.                         EnumFlag1,
  2589.                         EnumFlag2,
  2590.                         EnumMode;
  2591.  
  2592.   BOOL                  EnumStopped;
  2593.  
  2594.   XPROPERTY             XProperty;
  2595.  
  2596.   FONTDEF               Font;
  2597.   double                CharDistance,
  2598.                         TabDistance,
  2599.                         LineDistance;
  2600.   int                   TextMode;
  2601.  
  2602.   DPOINT*               PointPtr;
  2603.   int*                  TypePtr;
  2604.   MATRIX*               MatrixPtr;
  2605.   LPSTR                 TextPtr,
  2606.                         NamePtr;
  2607.  
  2608.   UNIT_OBJECT_PTR       ObjPtr;
  2609.   UNIT_INSTANCE_PTR     InstPtr;
  2610.   UNIT_BLOCK_PTR        BlockPtr;
  2611.   UNIT_USER_PTR         UserPtr;
  2612. } ENUMDEF_DATA;
  2613.  
  2614. typedef BOOL (*TOSOENUMOBJECT_PROC)( const ENUMDEF_DATA* EnumData );
  2615.  
  2616. typedef BOOL (*TOSOENUMATTRIB_PROC)( int AttribType, const LPSTR AttribName, const LPSTR AttribValue );
  2617.  
  2618. typedef BOOL (*TOSOENUMIDENT_PROC) ( UNIT_PTR UnitPtr );
  2619.  
  2620. typedef BOOL (*TOSOENUMPOINTS_PROC) ( UNIT_PTR UnitPtr, BLOCK_PTR BlockPtr );
  2621.  
  2622. //------ Definitions for Hooks -------------------------------------------------------------------------
  2623.  
  2624. typedef void (*TOSOHOOKPOSITION_PROC)( int WindowNum, DPOINT* Position );
  2625.  
  2626. typedef void (*TOSOHOOKMOUSE_PROC)( int WindowNum, UINT Message, UINT Buttons, int XPos, int YPos );
  2627.  
  2628. typedef void (*TOSOHOOKKEY_PROC)( int WindowNum, UINT Message, int Key, long Data );
  2629.  
  2630. //------ Definitions for Module-To-Server Communication ------------------------------------------------
  2631.  
  2632. typedef BOOL (*TOSOMODULECOMMAND_PROC)( int CommandID, int ExecMode );
  2633.  
  2634. typedef BOOL (*TOSOMODULEMODIFY_PROC)( UNIT_USER_PTR UserObj, int ModifyMode, const MATRIX* Matrix );
  2635.  
  2636. typedef int (*TOSOINPUTPOINTINIT_PROC)( int CommandID, int PointIndex, double XPos, double YPos );
  2637.  
  2638. typedef BOOL (*TOSOINPUTPOINTMOVE_PROC)( int CommandID, int PointIndex, double XPos, double YPos );
  2639.  
  2640. typedef int (*TOSOINPUTPOINTEXIT_PROC)( int CommandID, int PointIndex, double XPos, double YPos );
  2641.  
  2642. typedef void (*TOSOINPUTDISPLAY_PROC)( int CommandID, int PointIndex, HDC hDrawDC, BOOL DrawFixed, BOOL DrawVariable );
  2643.  
  2644. typedef BOOL (*TOSOINPUTPARAMETER_PROC)( int CommandID );
  2645.  
  2646. typedef int (*TOSOINPUTCANCEL_PROC)( int CommandID, int PointCount );
  2647.  
  2648. typedef void (*TOSOINPUTFINISH_PROC)( int CommandID, int PointCount );
  2649.  
  2650. typedef struct {                                // Menu entry and its description
  2651.   LPSTR                 Description,
  2652.                         MenuEntry;
  2653. } MENU_DATA;
  2654.  
  2655. typedef struct {                                // Input Information for indirect command
  2656.   int                   CommandMode,
  2657.                         PointNumber,
  2658.                         PointTypes   [TVG_INPUT_DEF_MAX],
  2659.                         PointRelative[TVG_INPUT_DEF_MAX];
  2660.   LPSTR                 PointNames   [TVG_INPUT_DEF_MAX];
  2661. } COMMAND_DATA;
  2662.  
  2663. typedef struct {                                // Icon definition for a command
  2664.   int                   Type;
  2665.   MENU_DATA             MenuData;
  2666.   COMMAND_DATA          InputData;
  2667.   HBITMAP               IconHandle;
  2668.   int                   IconXOffset,
  2669.                         IconYOffset,
  2670.                         IconMode;
  2671. } MODULE_COMMAND_DATA;
  2672.  
  2673. typedef struct {                                // Module-internal callback procedures
  2674.   TOSOINPUTPOINTINIT_PROC       InputPointInitProc;
  2675.   TOSOINPUTPOINTMOVE_PROC       InputPointMoveProc;
  2676.   TOSOINPUTPOINTEXIT_PROC       InputPointExitProc;
  2677.   TOSOINPUTDISPLAY_PROC         InputDisplayProc;
  2678.   TOSOINPUTPARAMETER_PROC       InputParameterProc;
  2679.   TOSOINPUTCANCEL_PROC          InputCancelProc;
  2680.   TOSOINPUTFINISH_PROC          InputFinishProc;
  2681. } MODULE_PROC;
  2682.  
  2683. typedef struct {                                // Module identification structure
  2684.   short                 OwnerID,
  2685.                         ModuleID;
  2686.   int                   ModuleCTRL;
  2687.   MODULE_PROC           ModuleProc;
  2688.   MODULE_COMMAND_DATA   ModuleData;
  2689.   MODULE_COMMAND_DATA*  CommandData;
  2690. } MODULE_ID;
  2691.  
  2692. typedef struct {                                // Module data
  2693.   MODULE_ID                     ID;
  2694.   HINSTANCE                     Handle;
  2695.   TOSOMODULECOMMAND_PROC        ProcCommand;
  2696.   TOSOMODULEMODIFY_PROC         ProcModify;
  2697. } MODULE_DATA;
  2698.  
  2699. typedef BOOL (*TOSOMODULEINIT_PROC)( const LPSTR SerialNumber, HINSTANCE hMainInst, HWND hMainWnd,
  2700.                                                                int InterfaceVersion, MODULE_ID* ModuleID );
  2701.  
  2702. typedef BOOL (*TOSOMODULEEXIT_PROC)( void );
  2703.  
  2704. //------ Toso Interface Prototypes ---------------------------------------------------------------------
  2705.  
  2706. #ifndef TOSO_SERVER                             // Only visible outside the serving application!
  2707.  
  2708. DLL_IMPORT BOOL TosoCreationStart( void );
  2709.  
  2710. DLL_IMPORT void TosoCreationEnd( void );
  2711.  
  2712. //------------------------------------------------------------------------------------------------------
  2713.  
  2714. DLL_IMPORT UNIT_OBJECT_PTR TosoObjectOpen( int Type );
  2715.  
  2716. DLL_IMPORT UNIT_OBJECT_PTR TosoObjectGetAddress( void );
  2717.  
  2718. DLL_IMPORT BOOL TosoObjectAddPoint( int Type, double x, double y );
  2719.  
  2720. DLL_IMPORT BOOL TosoObjectAddConstant( double Value );
  2721.  
  2722. DLL_IMPORT BOOL TosoObjectAddOrient( double Orient );
  2723.  
  2724. DLL_IMPORT BOOL TosoObjectAddCurve( double Orient, double Curve );
  2725.  
  2726. DLL_IMPORT BOOL TosoObjectAddTextShort( const LPSTR Text, BOOL StaticLength );
  2727.  
  2728. DLL_IMPORT BOOL TosoObjectAddTextLong( const LPSTR Text, BOOL StaticLength );
  2729.  
  2730. DLL_IMPORT XPROPERTY* TosoObjectAddDimLine( const DIMLINE* Data );
  2731.  
  2732. DLL_IMPORT XPROPERTY* TosoObjectAddDimSmall( const DIMSMALL* Data, BOOL UseGlobal );
  2733.  
  2734. DLL_IMPORT XPROPERTY* TosoObjectAddDimLarge( const DIMLARGE* Data, BOOL UseGlobal );
  2735.  
  2736. DLL_IMPORT XPROPERTY* TosoObjectAddTextStandard( const TEXTSTANDARD* Data );
  2737.  
  2738. DLL_IMPORT XPROPERTY* TosoObjectAddTextFrame( const TEXTFRAME* Data );
  2739.  
  2740. DLL_IMPORT BOOL TosoObjectAddTextReference( const TEXTREFERENCE* Data );
  2741.  
  2742. DLL_IMPORT XPROPERTY* TosoObjectAddClipSurface( const CLIPSURFACE* Data );
  2743.  
  2744. DLL_IMPORT BOOL TosoObjectAddBitmapRef( const BITMAPREF* Data );
  2745.  
  2746. DLL_IMPORT BOOL TosoObjectAddEnd( void );
  2747.  
  2748. DLL_IMPORT BOOL TosoObjectCopyDataBlocks( const UNIT_OBJECT_PTR RefObj );
  2749.  
  2750. DLL_IMPORT UNIT_OBJECT_PTR TosoObjectInsert( int DrawingNum, const UNIT_PTR RefObj );
  2751.  
  2752. DLL_IMPORT void TosoObjectClose( void );
  2753.  
  2754. DLL_IMPORT BOOL TosoObjectFastInsert( void );
  2755.  
  2756. DLL_IMPORT UNIT_USER_PTR TosoUserOpen( int OwnerID, int Type );
  2757.  
  2758. DLL_IMPORT UNIT_USER_PTR TosoUserGetAddress( void );
  2759.  
  2760. DLL_IMPORT BOOL TosoUserAddDataBlock( int Type, int ElemType, int ElemCount, const LPVOID Data, int Bytes );
  2761.  
  2762. DLL_IMPORT BOOL TosoUserAddEnd( void );
  2763.  
  2764. DLL_IMPORT UNIT_USER_PTR TosoUserInsert( int DrawingNum, const UNIT_PTR RefObj );
  2765.  
  2766. DLL_IMPORT void TosoUserClose( void );
  2767.  
  2768. DLL_IMPORT BOOL TosoUserFastInsert( void );
  2769.  
  2770. DLL_IMPORT UNIT_INSTANCE_PTR TosoInstanceOpen( void );
  2771.  
  2772. DLL_IMPORT UNIT_INSTANCE_PTR TosoInstanceGetAddress( void );
  2773.  
  2774. DLL_IMPORT BOOL TosoInstanceAddAttribute( int Type, const LPSTR Name, const LPSTR Text );
  2775.  
  2776. DLL_IMPORT BOOL TosoInstanceAddEnd( void );
  2777.  
  2778. DLL_IMPORT UNIT_INSTANCE_PTR TosoInstanceInsert( int DrawingNum, const UNIT_PTR RefObj );
  2779.  
  2780. DLL_IMPORT void TosoInstanceClose( void );
  2781.  
  2782. DLL_IMPORT BOOL TosoInstanceFastInsert( void );
  2783.  
  2784. DLL_IMPORT UNIT_BLOCK_PTR TosoBlockOpen( void );
  2785.  
  2786. DLL_IMPORT UNIT_BLOCK_PTR TosoBlockGetAddress( void );
  2787.  
  2788. DLL_IMPORT BOOL TosoBlockAddAttribute( int Type, const LPSTR Name, const LPSTR Text );
  2789.  
  2790. DLL_IMPORT BOOL TosoBlockAddEnd( void );
  2791.  
  2792. DLL_IMPORT UNIT_BLOCK_PTR TosoBlockInsert( int DrawingNum, const LPSTR LibraryName );
  2793.  
  2794. DLL_IMPORT void TosoBlockClose( void );
  2795.  
  2796. DLL_IMPORT XPROPERTY* TosoBlockFastInsert( BOOL CreateInstance, const MATRIX* Matrix );
  2797.  
  2798. DLL_IMPORT UNIT_BLOCK_PTR TosoGroupOpen( void );
  2799.  
  2800. DLL_IMPORT UNIT_BLOCK_PTR TosoGroupGetAddress( void );
  2801.  
  2802. DLL_IMPORT BOOL TosoGroupAddEnd( void );
  2803.  
  2804. DLL_IMPORT UNIT_BLOCK_PTR TosoGroupInsert( int DrawingNum );
  2805.  
  2806. DLL_IMPORT void TosoGroupClose( void );
  2807.  
  2808. DLL_IMPORT XPROPERTY* TosoGroupFastInsert( BOOL CreateInstance, const MATRIX* Matrix );
  2809.  
  2810. //------------------------------------------------------------------------------------------------------
  2811.  
  2812. DLL_IMPORT BOOL TosoPageGetDef( int DrawingNum, PAGEDEF* Data );
  2813.  
  2814. DLL_IMPORT BOOL TosoPageSetDef( int DrawingNum, const PAGEDEF* Data );
  2815.  
  2816. DLL_IMPORT BOOL TosoHatchGetCurrentDef( HATCHDEF* Data );
  2817.  
  2818. DLL_IMPORT BOOL TosoHatchGetOrigin( int DrawingNum, DPOINT* Data );
  2819.  
  2820. DLL_IMPORT BOOL TosoHatchGetDef( int DrawingNum, int Index, HATCHDEF* Data );
  2821.  
  2822. DLL_IMPORT BOOL TosoHatchSetDef( int DrawingNum, int Index, const HATCHDEF* Data );
  2823.  
  2824. DLL_IMPORT int TosoHatchGetActive( int DrawingNum );
  2825.  
  2826. DLL_IMPORT BOOL TosoHatchSetActive( int DrawingNum, int Index );
  2827.  
  2828. DLL_IMPORT BOOL TosoMultiLineGetDef( int DrawingNum, int Index, MULTILINEDEF* Data );
  2829.  
  2830. DLL_IMPORT BOOL TosoMultiLineSetDef( int DrawingNum, int Index, const MULTILINEDEF* Data );
  2831.  
  2832. DLL_IMPORT BOOL TosoSystemGetCurrentDef( SYSTEMDEF* Data );
  2833.  
  2834. DLL_IMPORT BOOL TosoSystemGetDef( int DrawingNum, int Index, SYSTEMDEF* Data );
  2835.  
  2836. DLL_IMPORT BOOL TosoSystemSetDef( int DrawingNum, int Index, const SYSTEMDEF* Data );
  2837.  
  2838. DLL_IMPORT int TosoSystemGetActive( int DrawingNum, int WindowNum );
  2839.  
  2840. DLL_IMPORT BOOL TosoSystemSetActive( int DrawingNum, int WindowNum, int Index );
  2841.  
  2842. DLL_IMPORT BOOL TosoPenGetCurrentDef( PENDEF* Data );
  2843.  
  2844. DLL_IMPORT BOOL TosoPenGetDef( int DrawingNum, int Index, PENDEF* Data );
  2845.  
  2846. DLL_IMPORT BOOL TosoPenSetDef( int DrawingNum, int Index, const PENDEF* Data );
  2847.  
  2848. DLL_IMPORT int TosoPenGetActive( int DrawingNum );
  2849.  
  2850. DLL_IMPORT BOOL TosoPenSetActive( int DrawingNum, int Index );
  2851.  
  2852. DLL_IMPORT BOOL TosoLineGetDef( int DrawingNum, int Index, LINEDEF* Data );
  2853.  
  2854. DLL_IMPORT BOOL TosoLineSetDef( int DrawingNum, int Index, const LINEDEF* Data );
  2855.  
  2856. DLL_IMPORT BOOL TosoLayerGetCurrentDef( LAYERDEF* Data );
  2857.  
  2858. DLL_IMPORT BOOL TosoLayerGetDef( int DrawingNum, int Index, LAYERDEF* Data );
  2859.  
  2860. DLL_IMPORT BOOL TosoLayerSetDef( int DrawingNum, int Index, const LAYERDEF* Data );
  2861.  
  2862. DLL_IMPORT int TosoLayerGetActive( int DrawingNum );
  2863.  
  2864. DLL_IMPORT BOOL TosoLayerSetActive( int DrawingNum, int Index );
  2865.  
  2866. //------------------------------------------------------------------------------------------------------
  2867.  
  2868. DLL_IMPORT int TosoImportGetNumber( void );
  2869.  
  2870. DLL_IMPORT BOOL TosoImportGetData( int Index, MODULE_DATA* ModuleData );
  2871.  
  2872. DLL_IMPORT int TosoExportGetNumber( void );
  2873.  
  2874. DLL_IMPORT BOOL TosoExportGetData( int Index, MODULE_DATA* ModuleData );
  2875.  
  2876. DLL_IMPORT int TosoModuleGetNumber( void );
  2877.  
  2878. DLL_IMPORT BOOL TosoModuleGetData( int Index, MODULE_DATA* ModuleData );
  2879.  
  2880. DLL_IMPORT void TosoCommandInternal( int CommandID );
  2881.  
  2882. DLL_IMPORT void TosoUndoInitProcess( void );
  2883.  
  2884. DLL_IMPORT void TosoUndoCancelProcess( void );
  2885.  
  2886. DLL_IMPORT void TosoUndoFinishProcess( void );
  2887.  
  2888. DLL_IMPORT void TosoUndoUpdateLinks( void );
  2889.  
  2890. DLL_IMPORT void TosoUndoSetPrevious( void );
  2891.  
  2892. DLL_IMPORT BOOL TosoHookPositionStart( TOSOHOOKPOSITION_PROC CallBack );
  2893.  
  2894. DLL_IMPORT void TosoHookPositionEnd( TOSOHOOKPOSITION_PROC CallBack );
  2895.  
  2896. DLL_IMPORT BOOL TosoHookMouseStart( TOSOHOOKMOUSE_PROC CallBack );
  2897.  
  2898. DLL_IMPORT void TosoHookMouseEnd( TOSOHOOKMOUSE_PROC CallBack );
  2899.  
  2900. DLL_IMPORT BOOL TosoHookKeyStart( TOSOHOOKKEY_PROC CallBack );
  2901.  
  2902. DLL_IMPORT void TosoHookKeyEnd( TOSOHOOKKEY_PROC CallBack );
  2903.  
  2904. //------------------------------------------------------------------------------------------------------
  2905.  
  2906. DLL_IMPORT BOOL TosoProfileReadKeyOpen( const LPSTR KeyName, BOOL Common );
  2907.  
  2908. DLL_IMPORT BOOL TosoProfileReadInt( const LPSTR ValueName, int* Value );
  2909.  
  2910. DLL_IMPORT BOOL TosoProfileReadString( const LPSTR ValueName, LPSTR Value );
  2911.  
  2912. DLL_IMPORT BOOL TosoProfileReadData( const LPSTR ValueName, LPBYTE Value, int Size );
  2913.  
  2914. DLL_IMPORT void TosoProfileReadKeyClose( void );
  2915.  
  2916. DLL_IMPORT BOOL TosoProfileWriteKeyOpen( const LPSTR KeyName, BOOL Common );
  2917.  
  2918. DLL_IMPORT BOOL TosoProfileWriteInt( const LPSTR ValueName, int Value );
  2919.  
  2920. DLL_IMPORT BOOL TosoProfileWriteString( const LPSTR ValueName, const LPSTR Value );
  2921.  
  2922. DLL_IMPORT BOOL TosoProfileWriteData( const LPSTR ValueName, const LPBYTE Value, int Size );
  2923.  
  2924. DLL_IMPORT void TosoProfileWriteKeyClose( void );
  2925.  
  2926. DLL_IMPORT BOOL TosoProfileDeleteKey( const LPSTR KeyName, BOOL Common );
  2927.  
  2928. DLL_IMPORT int TosoProfileGetDrawing( int DrawingNum, short OwnerID, int ProfileID, LPVOID ProfileData, int Size );
  2929.  
  2930. DLL_IMPORT BOOL TosoProfileSetDrawing( int DrawingNum, short OwnerID, int ProfileID, const LPVOID ProfileData, int Size );
  2931.  
  2932. //------------------------------------------------------------------------------------------------------
  2933.  
  2934. DLL_IMPORT int TosoSettingGet( int Mode );
  2935.  
  2936. DLL_IMPORT void TosoSettingSet( int Mode, int Value );
  2937.  
  2938. DLL_IMPORT BOOL TosoDrawingNewFile( int DrawingNum, BOOL Prompt );
  2939.  
  2940. DLL_IMPORT BOOL TosoDrawingOpenFile( int DrawingNum, const LPSTR FileName, LONG OpenFlags, BOOL Prompt );
  2941.  
  2942. DLL_IMPORT BOOL TosoDrawingSaveFile( int DrawingNum, const LPSTR FileName, LONG SaveFlags, BOOL Prompt );
  2943.  
  2944. DLL_IMPORT int TosoDrawingGetActive( void );
  2945.  
  2946. DLL_IMPORT BOOL TosoDrawingSetActive( int DrawingNum );
  2947.  
  2948. DLL_IMPORT int TosoDrawingGetNumber( void );
  2949.  
  2950. DLL_IMPORT BOOL TosoDrawingGetInfo( int DrawingNum, LPSTR FileName, FILE_HEADER* FileHeader );
  2951.  
  2952. DLL_IMPORT int TosoLibraryGetNumber( void );
  2953.  
  2954. DLL_IMPORT BOOL TosoLibraryGetInfo( int LibraryNum, LPSTR FileName, FILE_HEADER* FileHeader );
  2955.  
  2956. DLL_IMPORT int TosoWindowGetMode( int DrawingNum );
  2957.  
  2958. DLL_IMPORT BOOL TosoWindowSetMode( int DrawingNum, int Mode );
  2959.  
  2960. DLL_IMPORT int TosoWindowGetActive( int DrawingNum );
  2961.  
  2962. DLL_IMPORT BOOL TosoWindowSetActive( int DrawingNum, int WindowNum );
  2963.  
  2964. DLL_IMPORT BOOL TosoWindowGetView( int DrawingNum, int WindowNum, DPOINT* Center, double* Zoom );
  2965.  
  2966. DLL_IMPORT BOOL TosoWindowSetViewAll( int DrawingNum, int WindowNum );
  2967.  
  2968. DLL_IMPORT BOOL TosoWindowSetViewPage( int DrawingNum, int WindowNum );
  2969.  
  2970. DLL_IMPORT BOOL TosoWindowSetViewScale( int DrawingNum, int WindowNum, const DPOINT* Center, double Zoom );
  2971.  
  2972. DLL_IMPORT BOOL TosoWindowSetViewArea( int DrawingNum, int WindowNum, const DPOINT* Point1, const DPOINT* Point2 );
  2973.  
  2974. DLL_IMPORT void TosoDrawWindowAll( void );
  2975.  
  2976. DLL_IMPORT void TosoDrawWindowArea( const DRECT* Data );
  2977.  
  2978. DLL_IMPORT void TosoDrawWindowSelection( BOOL ClearFlag );
  2979.  
  2980. DLL_IMPORT void TosoDrawNewObjects( void );
  2981.  
  2982. DLL_IMPORT void TosoDrawBlock( HWND hWindow, int DrawingNum, const LPSTR BlockName, const LPSTR LibraryName );
  2983.  
  2984. DLL_IMPORT void TosoDrawLineDef( HWND hWindow, LINEDEF* LineDef );
  2985.  
  2986. //------------------------------------------------------------------------------------------------------
  2987.  
  2988. DLL_IMPORT void TosoInitProperty( PROPERTY* Data );
  2989.  
  2990. DLL_IMPORT void TosoInitXProperty( XPROPERTY* Data );
  2991.  
  2992. DLL_IMPORT void TosoInitFontDef( FONTDEF* Data );
  2993.  
  2994. DLL_IMPORT void TosoInitDimLine( DIMLINE* Data );
  2995.  
  2996. DLL_IMPORT void TosoInitDimSmall( DIMSMALL* Data, BOOL UseGlobal );
  2997.  
  2998. DLL_IMPORT void TosoInitDimLarge( DIMLARGE* Data, BOOL UseGlobal );
  2999.  
  3000. DLL_IMPORT void TosoInitTextStandard( TEXTSTANDARD* Data1, TEXTREFERENCE* Data2 );
  3001.  
  3002. DLL_IMPORT void TosoInitTextFrame( TEXTFRAME* Data );
  3003.  
  3004. //------------------------------------------------------------------------------------------------------
  3005.  
  3006. DLL_IMPORT UINT TosoDialogHelpMessage( void );
  3007.  
  3008. DLL_IMPORT BOOL TosoDialogEnterIdle( HWND hDlg, WPARAM wParam, LPARAM lParam );
  3009.  
  3010. DLL_IMPORT void TosoDialogComboboxAdjust( HWND hDlg, int CtlID );
  3011.  
  3012. DLL_IMPORT void TosoDialogCustomButtonColor( const LPDRAWITEMSTRUCT DrawItem, COLORREF Color, BOOL Active );
  3013.  
  3014. DLL_IMPORT void TosoDialogCustomButtonText( const LPDRAWITEMSTRUCT DrawItem, const LPSTR Text, BOOL Active );
  3015.  
  3016. DLL_IMPORT void TosoDialogCustomButtonIcon( const LPDRAWITEMSTRUCT DrawItem, HICON hIcon, BOOL Active );
  3017.  
  3018. DLL_IMPORT void TosoDialogCustomListboxColor( const LPDRAWITEMSTRUCT DrawItem, COLORREF Color, const LPSTR Text );
  3019.  
  3020. DLL_IMPORT void TosoDialogCenter( HWND hWindow );
  3021.  
  3022. DLL_IMPORT BOOL TosoDialogSelection( HWND hWindow, const LPSTR Caption );
  3023.  
  3024. DLL_IMPORT BOOL TosoDialogColor( HWND hWindow, const LPSTR Caption, COLORREF* Data );
  3025.  
  3026. DLL_IMPORT BOOL TosoDialogProperty( HWND hWindow, const LPSTR Caption, PROPERTY* Data );
  3027.  
  3028. DLL_IMPORT BOOL TosoDialogXProperty( HWND hWindow, const LPSTR Caption, XPROPERTY* Data );
  3029.  
  3030. DLL_IMPORT BOOL TosoDialogFontDef( HWND hWindow, const LPSTR Caption, FONTDEF* Data );
  3031.  
  3032. DLL_IMPORT BOOL TosoDialogDimLine( HWND hWindow, const LPSTR Caption, DIMLINE* Data, int UseFlag );
  3033.  
  3034. DLL_IMPORT BOOL TosoDialogDimSmall( HWND hWindow, const LPSTR Caption, DIMSMALL* Data, BOOL UseGlobal, int UseFlag );
  3035.  
  3036. DLL_IMPORT BOOL TosoDialogDimLarge( HWND hWindow, const LPSTR Caption, DIMLARGE* Data, BOOL UseGlobal, int UseFlag );
  3037.  
  3038. DLL_IMPORT BOOL TosoDialogTextStandard( HWND hWindow, const LPSTR Caption,
  3039.                                         TEXTSTANDARD* Data1, TEXTREFERENCE* Data2, LPSTR EditText );
  3040.  
  3041. DLL_IMPORT BOOL TosoDialogTextFrame( HWND hWindow, const LPSTR Caption, TEXTFRAME* Data, LPSTR EditText );
  3042.  
  3043. DLL_IMPORT BOOL TosoDialogBlock( HWND hWindow, const LPSTR Caption,
  3044.                                  LPSTR BlockName, LPSTR LibraryName, BOOL LibChangePossible );
  3045.  
  3046. DLL_IMPORT void TosoDialogSelectLine( HWND hWnd, const RECT* ButtonRect,
  3047.                                       int Current, int BasicID, int ExtraID, int EditID );
  3048.  
  3049. DLL_IMPORT void TosoDialogSelectMultiLine( HWND hWnd, const RECT* ButtonRect,
  3050.                                            int Current, int BasicID, int ExtraID, int EditID );
  3051.  
  3052. DLL_IMPORT void TosoDialogSelectSystem( HWND hWnd, const RECT* ButtonRect,
  3053.                                         int Current, int BasicID, int ExtraID, int EditID );
  3054.  
  3055. DLL_IMPORT void TosoDialogSelectHatch( HWND hWnd, const RECT* ButtonRect,
  3056.                                        int Current, int BasicID, int ExtraID, int EditID );
  3057.  
  3058. DLL_IMPORT void TosoDialogSelectLayer( HWND hWnd, const RECT* ButtonRect,
  3059.                                       int Current, int BasicID, int ExtraID, int EditID );
  3060.  
  3061. DLL_IMPORT void TosoDialogSelectPen( HWND hWnd, const RECT* ButtonRect,
  3062.                                      int Current, int BasicID, int ExtraID, int EditID );
  3063.  
  3064. DLL_IMPORT void TosoDialogUpdateGuide( int GuideMode, LPSTR GuideText );
  3065.  
  3066. DLL_IMPORT BOOL TosoDialogShowProgress( const LPSTR Title, const LPSTR Text, BOOL HasPercentBar );
  3067.  
  3068. DLL_IMPORT void TosoDialogUpdateProgress( const LPSTR Text1, const LPSTR Text2, long Done, long Total );
  3069.  
  3070. DLL_IMPORT void TosoDialogHideProgress( void );
  3071.  
  3072. DLL_IMPORT BOOL TosoDialogIsCanceled( void );
  3073.  
  3074. //------------------------------------------------------------------------------------------------------
  3075.  
  3076. DLL_IMPORT BOOL TosoConvertIntString( LPSTR Text, int Value );
  3077.  
  3078. DLL_IMPORT BOOL TosoConvertDoubleString( LPSTR Text, double Value );
  3079.  
  3080. DLL_IMPORT BOOL TosoConvertDoubleStringEx( LPSTR Text, double Value, int TotalLen, int FractionLen );
  3081.  
  3082. DLL_IMPORT BOOL TosoConvertLengthString( LPSTR Text, double Value, LPSTR Unit );
  3083.  
  3084. DLL_IMPORT BOOL TosoConvertWidthString( LPSTR Text, double Value, LPSTR Unit );
  3085.  
  3086. DLL_IMPORT BOOL TosoConvertAngleString( LPSTR Text, double Value, LPSTR Unit );
  3087.  
  3088. DLL_IMPORT BOOL TosoConvertStringInt( int* Value, const LPSTR Text );
  3089.  
  3090. DLL_IMPORT BOOL TosoConvertStringDouble( double* Value, const LPSTR Text, HWND hParentWindow );
  3091.  
  3092. DLL_IMPORT BOOL TosoConvertStringDoubleEx( double* Value, const LPSTR Text, HWND hParentWindow,
  3093.                                            double LenMMPerUnit, double AngleRadPerUnit );
  3094.  
  3095. DLL_IMPORT BOOL TosoConvertStringLength( double* Value, const LPSTR Text, HWND hParentWindow );
  3096.  
  3097. DLL_IMPORT BOOL TosoConvertStringWidth( double* Value, const LPSTR Text, HWND hParentWindow );
  3098.  
  3099. DLL_IMPORT BOOL TosoConvertStringAngle( double* Value, const LPSTR Text, HWND hParentWindow );
  3100.  
  3101. //------------------------------------------------------------------------------------------------------
  3102.  
  3103. DLL_IMPORT BOOL TosoGetCommandTitle( LPSTR Text, int CommandID );
  3104.  
  3105. DLL_IMPORT HBITMAP TosoGetCommandIcon( int CommandID );
  3106.  
  3107. DLL_IMPORT HICON TosoGetStandardIcon( const LPSTR IconID );
  3108.  
  3109. //------------------------------------------------------------------------------------------------------
  3110.  
  3111. DLL_IMPORT BOOL TosoMatrixSeparate( const MATRIX* Matrix, double* ScaleX,   double* ScaleY,
  3112.                                                           double* Rotation, double* Distortion,
  3113.                                                           double* MoveX,    double* MoveY );
  3114.  
  3115. DLL_IMPORT BOOL TosoMatrixAssemble( MATRIX* Matrix, double ScaleX,   double ScaleY,
  3116.                                                     double Rotation, double Distortion,
  3117.                                                     double MoveX,    double MoveY );
  3118.  
  3119. DLL_IMPORT BOOL TosoMatrixInvert( const MATRIX* Matrix, MATRIX* InvertMatrix );
  3120.  
  3121. DLL_IMPORT void TosoMatrixInit( MATRIX* Matrix );
  3122.  
  3123. DLL_IMPORT void TosoMatrixRotate( MATRIX* Matrix, double Angle );
  3124.  
  3125. DLL_IMPORT void TosoMatrixMove( MATRIX* Matrix, double OffsetX, double OffsetY );
  3126.  
  3127. DLL_IMPORT void TosoMatrixScale( MATRIX* Matrix, double FactorX, double FactorY );
  3128.  
  3129. DLL_IMPORT void TosoMatrixSheer( MATRIX* Matrix, double FactorX, double FactorY );
  3130.  
  3131. DLL_IMPORT void TosoMatrixMultiply( MATRIX* Matrix, const MATRIX* Factor );
  3132.  
  3133. //------------------------------------------------------------------------------------------------------
  3134.  
  3135. DLL_IMPORT BOOL TosoCalcTextFrame( const TEXTSTANDARD* Data, const LPSTR Text, DRECT* Frame );
  3136.  
  3137. DLL_IMPORT BOOL TosoCalcBlockFrame( int DrawingNum, const LPSTR BlockName, const LPSTR LibraryName,
  3138.                                     const MATRIX* Matrix, DRECT* Frame, BOOL AutoLoad );
  3139.  
  3140. DLL_IMPORT BOOL TosoCalcCurvature( double x1, double y1,
  3141.                                    double x2, double y2, double x3, double y3, double* Result );
  3142.  
  3143. //------------------------------------------------------------------------------------------------------
  3144.  
  3145. DLL_IMPORT BOOL TosoGeoDistance( const GEO_OBJECT* GeoObj, double x, double y, double* Result );
  3146.  
  3147. DLL_IMPORT int TosoGeoIntersection( const GEO_OBJECT* GeoObj1, const GEO_OBJECT* GeoObj2, DPOINT* Result );
  3148.  
  3149. DLL_IMPORT int TosoGeoPerpendicular( const GEO_OBJECT* GeoObj, double x, double y, DPOINT* Result );
  3150.  
  3151. DLL_IMPORT int TosoGeoTangent( const GEO_OBJECT* GeoObj1, const GEO_OBJECT* GeoObj2, DPOINT* Result );
  3152.  
  3153. DLL_IMPORT int TosoGeoRadiusFit( const GEO_OBJECT* GeoObj1,
  3154.                                  const GEO_OBJECT* GeoObj2, double Radius, int ObjType, GEO_OBJECT* Result );
  3155.  
  3156. DLL_IMPORT int TosoGeoIncircle( const DPOINT* Point1, const DPOINT* Point2,
  3157.                                 const DPOINT* Point3, DPOINT* Result );
  3158.  
  3159. DLL_IMPORT int TosoGeoCircumcircle( const DPOINT* Point1, const DPOINT* Point2,
  3160.                                     const DPOINT* Point3, DPOINT* Result );
  3161.  
  3162. //------------------------------------------------------------------------------------------------------
  3163.  
  3164. DLL_IMPORT BOOL TosoEnumerateAll( int DrawingNum, int EnumFlag1, int EnumFlag2,
  3165.                                   int EnumMode, TOSOENUMOBJECT_PROC CallBack );
  3166.  
  3167. DLL_IMPORT BOOL TosoEnumerateLibrary( int DrawingNum, const LPSTR LibraryName,
  3168.                                       int EnumMode, TOSOENUMOBJECT_PROC CallBack );
  3169.  
  3170. DLL_IMPORT BOOL TosoEnumerateUnit( int DrawingNum, const UNIT_PTR UnitPtr,
  3171.                                    int EnumMode, TOSOENUMOBJECT_PROC CallBack );
  3172.  
  3173. DLL_IMPORT BOOL TosoEnumerateBlock( int DrawingNum, const LPSTR BlockName, const LPSTR LibraryName,
  3174.                                     int EnumMode, TOSOENUMOBJECT_PROC CallBack );
  3175.  
  3176. DLL_IMPORT BOOL TosoEnumerateChar( int DrawingNum, const FONTDEF* Font, int CharIndex, const MATRIX* Matrix,
  3177.                                    int EnumMode, TOSOENUMOBJECT_PROC CallBack );
  3178.  
  3179. DLL_IMPORT int TosoEnumerateInstanceAttrib( int DrawingNum, const UNIT_INSTANCE_PTR InstObj,
  3180.                                             TOSOENUMATTRIB_PROC CallBack );
  3181.  
  3182. DLL_IMPORT int TosoEnumerateBlockAttrib( int DrawingNum, const LPSTR BlockName, const LPSTR LibraryName,
  3183.                                          TOSOENUMATTRIB_PROC CallBack );
  3184.  
  3185. DLL_IMPORT BOOL TosoEnumerateIdent( int DrawingNum, TOSOENUMIDENT_PROC CallBack );
  3186.  
  3187. DLL_IMPORT BOOL TosoEnumeratePoints( int DrawingNum, TOSOENUMPOINTS_PROC CallBack );
  3188.  
  3189. //------------------------------------------------------------------------------------------------------
  3190.  
  3191. DLL_IMPORT void TosoInputDrawPoint( HDC hDrawDC, double x, double y );
  3192.  
  3193. DLL_IMPORT void TosoInputDrawLine( HDC hDrawDC, double x1, double y1, double x2, double y2 );
  3194.  
  3195. DLL_IMPORT void TosoInputDrawEndless( HDC hDrawDC, double x1, double y1, double x2, double y2 );
  3196.  
  3197. DLL_IMPORT void TosoInputDrawBezier( HDC hDrawDC, double x1, double y1, double x2, double y2,
  3198.                                                   double x3, double y3, double x4, double y4 );
  3199.  
  3200. DLL_IMPORT void TosoInputDrawFrame( HDC hDrawDC, double x1, double y1, double x2, double y2,
  3201.                                                  double x3, double y3, double x4, double y4 );
  3202.  
  3203. DLL_IMPORT void TosoInputDrawCircle( HDC hDrawDC, double x1, double y1, double x2, double y2 );
  3204.  
  3205. DLL_IMPORT void TosoInputDrawCircleArc( HDC hDrawDC, double x1, double y1, double x2, double y2,
  3206.                                                      double x3, double y3, double x4, double y4, BOOL Positive );
  3207.  
  3208. DLL_IMPORT void TosoInputDrawEllipse( HDC hDrawDC, double x1, double y1,
  3209.                                                    double x2, double y2, double x3, double y3 );
  3210.  
  3211. DLL_IMPORT void TosoInputDrawEllipseArc( HDC hDrawDC, double x1, double y1,
  3212.                                                       double x2, double y2, double x3, double y3,
  3213.                                                       double x4, double y4, double x5, double y5, BOOL Positive );
  3214.  
  3215. DLL_IMPORT void TosoInputDrawReference( HDC hDrawDC, const GEO_OBJECT* GeoObject );
  3216.  
  3217. DLL_IMPORT int TosoInputGetIdentData( int DrawingNum, int PointIndex, GEO_OBJECT* GeoObject );
  3218.  
  3219. DLL_IMPORT int TosoInputGetIdentObject( int DrawingNum, int PointIndex, GEO_OBJECT* GeoObject );
  3220.  
  3221. DLL_IMPORT UNIT_PTR TosoInputGetIdentAddress( int DrawingNum, int PointIndex );
  3222.  
  3223. DLL_IMPORT int TosoInputGetGeneratedSurface( int DrawingNum, int PointIndex, int PointCount,
  3224.                                              UNIT_PTR ResultObj, int Bytes );
  3225.  
  3226. //------------------------------------------------------------------------------------------------------
  3227.  
  3228. DLL_IMPORT long TosoEditIdentCount( int DrawingNum, DRECT* Frame );
  3229.  
  3230. DLL_IMPORT BOOL TosoEditIdentMatrix( int DrawingNum, const MATRIX* Matrix, BOOL Duplicate );
  3231.  
  3232. DLL_IMPORT BOOL TosoEditIdentEnumModify( int DrawingNum, TOSOENUMOBJECT_PROC CallBack, BOOL Duplicate );
  3233.  
  3234. DLL_IMPORT void TosoEditDelete( int DrawingNum, UNIT_PTR UnitPtr );
  3235.  
  3236. DLL_IMPORT long TosoEditPointsCount( int DrawingNum, DRECT* Frame );
  3237.  
  3238. DLL_IMPORT BOOL TosoEditPointsMatrix( int DrawingNum, const MATRIX* Matrix, BOOL Duplicate );
  3239.  
  3240. //------------------------------------------------------------------------------------------------------
  3241.  
  3242. DLL_IMPORT BOOL TosoFileSetExtension( const LPSTR OldName, LPSTR NewName, const LPSTR Extension );
  3243.  
  3244. DLL_IMPORT BOOL TosoFileGetExtension( const LPSTR FullName, LPSTR Extension );
  3245.  
  3246. DLL_IMPORT BOOL TosoFileShortName( const LPSTR FullName, LPSTR ShortName );
  3247.  
  3248. DLL_IMPORT BOOL TosoFileSplitName( const LPSTR FullName, LPSTR Path, LPSTR Name );
  3249.  
  3250. DLL_IMPORT BOOL TosoFileFullPath( const LPSTR OldName, LPSTR NewName );
  3251.  
  3252. //------------------------------------------------------------------------------------------------------
  3253.  
  3254. DLL_IMPORT BOOL TosoFileExist( const LPSTR FileName );
  3255.  
  3256. DLL_IMPORT BOOL TosoFileDelete( const LPSTR FileName );
  3257.  
  3258. DLL_IMPORT BOOL TosoFileOpen( HANDLE* FileHandle, const LPSTR FileName );
  3259.  
  3260. DLL_IMPORT BOOL TosoFileCreate( HANDLE* FileHandle, const LPSTR FileName );
  3261.  
  3262. DLL_IMPORT long TosoFileSize( HANDLE FileHandle );
  3263.  
  3264. DLL_IMPORT long TosoFileRead( HANDLE FileHandle, LPVOID Data, long Size );
  3265.  
  3266. DLL_IMPORT long TosoFileWrite( HANDLE FileHandle, const LPVOID Data, long Size );
  3267.  
  3268. DLL_IMPORT BOOL TosoFileSetPointer( HANDLE FileHandle, long Offset, DWORD Mode );
  3269.  
  3270. DLL_IMPORT BOOL TosoFileClose( HANDLE FileHandle );
  3271.  
  3272. DLL_IMPORT BOOL TosoFileCopy( const LPSTR SourceName, const LPSTR DestinName );
  3273.  
  3274. //------------------------------------------------------------------------------------------------------
  3275.  
  3276. DLL_IMPORT BOOL TosoFileWriteInitNull( void );
  3277.  
  3278. DLL_IMPORT BOOL TosoFileWriteInitDisk( HANDLE FileHandle );
  3279.  
  3280. DLL_IMPORT BOOL TosoFileWriteInitMemory( HGLOBAL hMemory, long MemorySize );
  3281.  
  3282. DLL_IMPORT BOOL TosoFileWriteData( const LPVOID Data, int Size );
  3283.  
  3284. DLL_IMPORT BOOL TosoFileWriteTextData( const LPSTR Data );
  3285.  
  3286. DLL_IMPORT BOOL TosoFileWriteFlush( void );
  3287.  
  3288. DLL_IMPORT void TosoFileWriteExit( void );
  3289.  
  3290. //------------------------------------------------------------------------------------------------------
  3291.  
  3292. DLL_IMPORT void TosoFileWriteNewline( void );
  3293.  
  3294. DLL_IMPORT void TosoFileWriteComma( void );
  3295.  
  3296. DLL_IMPORT void TosoFileWriteSemi( void );
  3297.  
  3298. DLL_IMPORT void TosoFileWriteComment( const LPSTR Value );
  3299.  
  3300. DLL_IMPORT void TosoFileWriteKeyword( int KeyNum );
  3301.  
  3302. //------------------------------------------------------------------------------------------------------
  3303.  
  3304. DLL_IMPORT void TosoFileWriteString( const LPSTR Value );
  3305. DLL_IMPORT void TosoFileWriteCommaString( const LPSTR Value );
  3306.  
  3307. DLL_IMPORT void TosoFileWriteBinary( const LPVOID Value, int Size );
  3308. DLL_IMPORT void TosoFileWriteCommaBinary( const LPVOID Value, int Size );
  3309.  
  3310. DLL_IMPORT void TosoFileWriteBool( BOOL Value );
  3311. DLL_IMPORT void TosoFileWriteCommaBool( BOOL Value );
  3312.  
  3313. DLL_IMPORT void TosoFileWriteShort( short Value );
  3314. DLL_IMPORT void TosoFileWriteCommaShort( short Value );
  3315.  
  3316. DLL_IMPORT void TosoFileWriteInt( int Value );
  3317. DLL_IMPORT void TosoFileWriteCommaInt( int Value );
  3318.  
  3319. DLL_IMPORT void TosoFileWriteDouble( double Value );
  3320. DLL_IMPORT void TosoFileWriteCommaDouble( double Value );
  3321.  
  3322. DLL_IMPORT void TosoFileWriteColorref( COLORREF Color );
  3323. DLL_IMPORT void TosoFileWriteCommaColorref( COLORREF Color );
  3324.  
  3325. DLL_IMPORT void TosoFileWriteFontdef( const FONTDEF* Font );
  3326. DLL_IMPORT void TosoFileWriteCommaFontdef( const FONTDEF* Font );
  3327.  
  3328. DLL_IMPORT void TosoFileWriteXProperty( const XPROPERTY* XProperty );
  3329. DLL_IMPORT void TosoFileWriteCommaXProperty( const XPROPERTY* XProperty );
  3330.  
  3331. DLL_IMPORT void TosoFileWriteProperty( const PROPERTY* Property );
  3332. DLL_IMPORT void TosoFileWriteCommaProperty( const PROPERTY* Property );
  3333.  
  3334. DLL_IMPORT void TosoFileWriteDimLine( const DIMLINE* DimLine );
  3335. DLL_IMPORT void TosoFileWriteCommaDimLine( const DIMLINE* DimLine );
  3336.  
  3337. DLL_IMPORT void TosoFileWriteDimSmall( const DIMSMALL* DimSmall );
  3338. DLL_IMPORT void TosoFileWriteCommaDimSmall( const DIMSMALL* DimSmall );
  3339.  
  3340. DLL_IMPORT void TosoFileWriteDimLarge( const DIMLARGE* DimLarge );
  3341. DLL_IMPORT void TosoFileWriteCommaDimLarge( const DIMLARGE* DimLarge );
  3342.  
  3343. DLL_IMPORT void TosoFileWriteTextStandard( const TEXTSTANDARD* TextStandard );
  3344. DLL_IMPORT void TosoFileWriteCommaTextStandard( const TEXTSTANDARD* TextStandard );
  3345.  
  3346. DLL_IMPORT void TosoFileWriteTextFrame( const TEXTFRAME* TextFrame );
  3347. DLL_IMPORT void TosoFileWriteCommaTextFrame( const TEXTFRAME* TextFrame );
  3348.  
  3349. DLL_IMPORT void TosoFileWriteTextReference( const TEXTREFERENCE* TextReference );
  3350. DLL_IMPORT void TosoFileWriteCommaTextReference( const TEXTREFERENCE* TextReference );
  3351.  
  3352. DLL_IMPORT void TosoFileWriteClipSurface( const CLIPSURFACE* ClipSurface );
  3353. DLL_IMPORT void TosoFileWriteCommaClipSurface( const CLIPSURFACE* ClipSurface );
  3354.  
  3355. DLL_IMPORT void TosoFileWriteBitmapRef( const BITMAPREF* BitmapRef );
  3356. DLL_IMPORT void TosoFileWriteCommaBitmapRef( const BITMAPREF* BitmapRef );
  3357.  
  3358. //------------------------------------------------------------------------------------------------------
  3359.  
  3360. DLL_IMPORT BOOL TosoFileWriteHeader( const LPSTR Header );
  3361.  
  3362. DLL_IMPORT BOOL TosoFileWriteEndOfFile( void );
  3363.  
  3364. DLL_IMPORT void TosoFileWriteZeros( BOOL Value );
  3365.  
  3366. DLL_IMPORT void TosoFileWriteDelimiters( const TOKEN_DATA* Data );
  3367.  
  3368. DLL_IMPORT BOOL TosoFileWriteError( void );
  3369.  
  3370. DLL_IMPORT long TosoFileWriteCurrentSize( void );
  3371.  
  3372. DLL_IMPORT long TosoFileWriteCurrentLine( void );
  3373.  
  3374. //------------------------------------------------------------------------------------------------------
  3375.  
  3376. DLL_IMPORT BOOL TosoFileReadInitDisk( HANDLE FileHandle );
  3377.  
  3378. DLL_IMPORT BOOL TosoFileReadInitMemory( HGLOBAL hMemory );
  3379.  
  3380. DLL_IMPORT BOOL TosoFileReadData( LPVOID Data, int Size );
  3381.  
  3382. DLL_IMPORT int TosoFileReadChar( void );
  3383.  
  3384. DLL_IMPORT BOOL TosoFileReadLine( LPSTR Data, int Size );
  3385.  
  3386. DLL_IMPORT void TosoFileReadExit( void );
  3387.  
  3388. //------------------------------------------------------------------------------------------------------
  3389.  
  3390. DLL_IMPORT void TosoFileReadSemi( void );
  3391.  
  3392. DLL_IMPORT void TosoFileReadComma( void );
  3393.  
  3394. DLL_IMPORT BOOL TosoFileReadContinue( void );
  3395.  
  3396. DLL_IMPORT int TosoFileReadLastKeyword( void );
  3397.  
  3398. DLL_IMPORT void TosoFileReadKeyword( void );
  3399.  
  3400. DLL_IMPORT void TosoFileReadNextKeyword( void );
  3401.  
  3402. DLL_IMPORT void TosoFileReadNextSection( void );
  3403.  
  3404. //------------------------------------------------------------------------------------------------------
  3405.  
  3406. DLL_IMPORT void TosoFileReadString( LPSTR Value, int Size );
  3407. DLL_IMPORT void TosoFileReadCommaString( LPSTR Value, int Size );
  3408.  
  3409. DLL_IMPORT void TosoFileReadBinary( LPVOID Value, int Size );
  3410. DLL_IMPORT void TosoFileReadCommaBinary( LPVOID Value, int Size );
  3411.  
  3412. DLL_IMPORT void TosoFileReadBool( BOOL* Value );
  3413. DLL_IMPORT void TosoFileReadCommaBool( BOOL* Value );
  3414.  
  3415. DLL_IMPORT void TosoFileReadShort( short* Value );
  3416. DLL_IMPORT void TosoFileReadCommaShort( short* Value );
  3417.  
  3418. DLL_IMPORT void TosoFileReadInt( int* Value );
  3419. DLL_IMPORT void TosoFileReadCommaInt( int* Value );
  3420.  
  3421. DLL_IMPORT void TosoFileReadDouble( double* Value );
  3422. DLL_IMPORT void TosoFileReadCommaDouble( double* Value );
  3423.  
  3424. DLL_IMPORT void TosoFileReadColorref( COLORREF* Color );
  3425. DLL_IMPORT void TosoFileReadCommaColorref( COLORREF* Color );
  3426.  
  3427. DLL_IMPORT void TosoFileReadFontdef( FONTDEF* Font );
  3428. DLL_IMPORT void TosoFileReadCommaFontdef( FONTDEF* Font );
  3429.  
  3430. DLL_IMPORT void TosoFileReadXProperty( XPROPERTY* XProperty );
  3431. DLL_IMPORT void TosoFileReadCommaXProperty( XPROPERTY* XProperty );
  3432.  
  3433. DLL_IMPORT void TosoFileReadProperty( PROPERTY* Property );
  3434. DLL_IMPORT void TosoFileReadCommaProperty( PROPERTY* Property );
  3435.  
  3436. DLL_IMPORT void TosoFileReadDimLine( DIMLINE* DimLine );
  3437. DLL_IMPORT void TosoFileReadCommaDimLine( DIMLINE* DimLine );
  3438.  
  3439. DLL_IMPORT void TosoFileReadDimSmall( DIMSMALL* DimSmall );
  3440. DLL_IMPORT void TosoFileReadCommaDimSmall( DIMSMALL* DimSmall );
  3441.  
  3442. DLL_IMPORT void TosoFileReadDimLarge( DIMLARGE* DimLarge );
  3443. DLL_IMPORT void TosoFileReadCommaDimLarge( DIMLARGE* DimLarge );
  3444.  
  3445. DLL_IMPORT void TosoFileReadTextStandard( TEXTSTANDARD* TextStandard );
  3446. DLL_IMPORT void TosoFileReadCommaTextStandard( TEXTSTANDARD* TextStandard );
  3447.  
  3448. DLL_IMPORT void TosoFileReadTextFrame( TEXTFRAME* TextFrame );
  3449. DLL_IMPORT void TosoFileReadCommaTextFrame( TEXTFRAME* TextFrame );
  3450.  
  3451. DLL_IMPORT void TosoFileReadTextReference( TEXTREFERENCE* TextReference );
  3452. DLL_IMPORT void TosoFileReadCommaTextReference( TEXTREFERENCE* TextReference );
  3453.  
  3454. DLL_IMPORT void TosoFileReadClipSurface( CLIPSURFACE* ClipSurface );
  3455. DLL_IMPORT void TosoFileReadCommaClipSurface( CLIPSURFACE* ClipSurface );
  3456.  
  3457. DLL_IMPORT void TosoFileReadBitmapRef( BITMAPREF* BitmapRef );
  3458. DLL_IMPORT void TosoFileReadCommaBitmapRef( BITMAPREF* BitmapRef );
  3459.  
  3460. //------------------------------------------------------------------------------------------------------
  3461.  
  3462. DLL_IMPORT BOOL TosoFileReadHeader( const LPSTR Header );
  3463.  
  3464. DLL_IMPORT BOOL TosoFileReadEndOfFile( void );
  3465.  
  3466. DLL_IMPORT void TosoFileReadDelimiters( const TOKEN_DATA* Data );
  3467.  
  3468. DLL_IMPORT BOOL TosoFileReadError( void );
  3469.  
  3470. DLL_IMPORT long TosoFileReadTotalSize( void );
  3471.  
  3472. DLL_IMPORT long TosoFileReadCurrentSize( void );
  3473.  
  3474. DLL_IMPORT long TosoFileReadCurrentLine( void );
  3475.  
  3476. #endif
  3477.  
  3478. //------------------------------------------------------------------------------------------------------
  3479.  
  3480. #endif
  3481.