home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 March / Chip_1998-03_cd.bin / tema / jpcad / ADK / INCLUDE / ADK.H_ / ADK.H
C/C++ Source or Header  |  1998-01-21  |  17KB  |  472 lines

  1. #ifndef    _ADK_H_
  2. #define    _ADK_H_
  3.  
  4. #ifdef    __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. #define    A_VERSION    120
  9.  
  10. /* A_EXPORT is defined only when building ADK.DLL */
  11. #if    defined(A_16BIT)
  12. #define    A_API        _far _pascal _export
  13. #define    A_CALLBACK    _far _pascal _export
  14. #elif    defined(A_EXPORT)
  15. #define    A_API        _declspec(dllexport) __stdcall
  16. #define    A_CALLBACK    __stdcall
  17. #else
  18. #define    A_API        _declspec(dllimport) __stdcall
  19. #define    A_CALLBACK    __stdcall
  20. #endif
  21.  
  22. enum A_StatusE    {
  23.         A_CMD_CALL    = 0,/* JPCAD calls your cmd */
  24.         A_LOAD        = 1,/* load application */
  25.         A_UNLOAD    = 2,/* unload application */
  26.         A_NEW        = 3,/* new drawing, prototype loaded */
  27.         A_OPEN_BEFORE    = 4,/* drawing will be loaded */
  28.         A_OPEN_AFTER    = 5,/* drawing loaded */
  29.         A_SAVE_BEFORE    = 6,/* drawing is to be saved */
  30.         A_SAVE_AFTER    = 7,/* drawing was saved */
  31.         A_DISCARD    = 8,/* drawing is to be discarded */
  32.         A_END        = 100,/* ACC only - end application */
  33.         };
  34. /*
  35. general error codes from any A_ function
  36. error codes less than -1000 are reserved for interface error, other numbers can
  37. be used for function errors
  38. */
  39.     /* already initialized A_Init() */
  40. #define A_ERROR_ALREADY_INITIALIZED    -1000
  41.     /* function called without initializing */
  42. #define A_ERROR_NOT_INITIALIZED        -1001
  43.     /* function called, but JPCAD is not waiting for commands */
  44. #define    A_ERROR_NOT_REENTRANT        -1002
  45.     /* any other error */
  46. #define    A_ERROR_INTERNAL        -1003
  47.     /* message found in message queue - used in A_AdkMsg */
  48. #define    A_ERROR_MSG            -1004
  49.     /* JPCAD terminated */
  50. #define    A_ERROR_CONNECTION_TERMINATED    -1005
  51.     /* incompatible IPC interface */
  52. #define    A_ERROR_INCOMPATIBLE_IPC_INTERFACE -1006
  53.     /* incompatible DLL interface */
  54. #define    A_ERROR_INCOMPATIBLE_DLL_INTERFACE -1007
  55.     /* universal/generic thunk error */
  56. #define    A_ERROR_THUNK            -1008
  57.     /* bad VARIANT argument type,
  58.     this is a ACC error, but placed here */
  59. #define    A_ERR_VARIANT_TYPE        -1009
  60.     /* function parameter required A_ADK() */
  61. #define    A_ERROR_PARAMETER_REQUIRED    -1010
  62.     /* float number not recognized as float - check
  63.     is done only for arguments passed to JPCAD */
  64. #define    A_ERROR_FLOAT            -1011
  65.     /* no error */
  66. #define    A_ERROR_OK            0
  67.  
  68. /* use current layer, color, linetype, textstyle */        
  69. #define    A_USE_CURRENT        0x80000003l
  70. #define    A_USE_CURRENT_ENT    ((A_EntH)0x80000003l)
  71.  
  72. /* no entity */
  73. #define    A_NO_REF    ((A_EntH)0x80000000l)
  74.  
  75. /* length of any name in database */
  76. #define A_MAX_NAME        32
  77.  
  78. /* for type safety reasons */
  79. #ifdef    A_NOSTRICT
  80. #define    A_DECL_HANDLE(name)    typedef long name
  81. #else
  82. #define A_DECL_HANDLE(name) struct name##__ {long _;}; typedef struct name##__ FAR*name
  83. #endif
  84.  
  85. A_DECL_HANDLE(A_EntH);
  86. A_DECL_HANDLE(A_ArrayH);
  87.  
  88. typedef struct
  89.     {
  90.     double    x;
  91.     double    y;
  92.     } A_PointS, A_VectorS;
  93.  
  94. typedef struct
  95.     {
  96.     A_PointS    Min;
  97.     A_PointS    Max;
  98.     } A_RectS;
  99.  
  100. typedef struct
  101.     {
  102.     double    m[3][3];
  103.     } A_MatrixS;
  104.  
  105. typedef unsigned long A_COLORREF;
  106.  
  107. typedef void    (A_CALLBACK A_StatusF)(long,long);
  108. typedef void    (A_CALLBACK A_ErrorF)(long);
  109.  
  110. /* basic functions */
  111. long    A_API A_Adk(long,A_StatusF*,A_ErrorF*);
  112. long    A_API A_AdkMsg(long,LPVOID FAR*,A_StatusF*,A_ErrorF*);
  113. #ifndef    A_16BIT
  114. /* internal entry point for utadk.dll */
  115. long    A_API A_Adk16(HTASK,LPCTSTR,long,A_StatusF*,A_ErrorF*);
  116. long    A_API A_AdkMsg16(HTASK,LPCTSTR,long,void**,A_StatusF*,A_ErrorF*);
  117. #endif
  118.  
  119. long    A_API A_DefCmd(const char FAR*,long,long);
  120. long    A_API A_UnDefCmd(long);
  121. long    A_API A_CallCmd(const char FAR*);
  122.  
  123. /* input/output functions */
  124. long    A_API A_Prompt(const char FAR*);
  125.  
  126. /* ARC functions */
  127. long    A_API A_ARC_Make(A_PointS,double,double,double,A_EntH,A_COLORREF,long,double,long,A_EntH FAR*);
  128. long    A_API A_ARC_Get(A_EntH,A_PointS FAR*,double FAR*,double FAR*,double FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*,double FAR*);
  129. long    A_API A_ARC_Change(A_EntH,A_PointS,double,double,double,A_EntH,A_COLORREF,long,double);
  130.  
  131. /* hidden/visible, preset/ask flags */
  132. #define A_ATTR_HIDDEN        0x1
  133. #define A_ATTR_PRESET        0x2
  134. #define A_ATTR_INSERTED        0x80
  135.  
  136. long    A_API A_ATTR_Make(const char FAR*,const char FAR*,const char FAR*,A_PointS,double,double,A_EntH,long,A_EntH,A_COLORREF,long,long,A_EntH FAR*);
  137. long    A_API A_ATTR_Get(A_EntH,char FAR[A_MAX_NAME + 1],const char FAR*FAR*,const char FAR*FAR*,A_PointS FAR*,double FAR*,double FAR*,A_EntH FAR*,long FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*);
  138. long    A_API A_ATTR_Change(A_EntH,const char FAR*,const char FAR*,const char FAR*,A_PointS,double,double,A_EntH,long,A_EntH,A_COLORREF,long);
  139.  
  140. /* BLOCK functions */
  141. long    A_API A_BLOCK_Make(A_MatrixS,A_MatrixS,const char FAR*,A_ArrayH,A_EntH FAR*);
  142. long    A_API A_BLOCK_Get(A_EntH,A_MatrixS FAR*,A_MatrixS FAR*,char FAR[A_MAX_NAME + 1],A_ArrayH FAR*,long FAR*);
  143. long    A_API A_BLOCK_Change(A_EntH,A_MatrixS,A_MatrixS,const char FAR*,A_ArrayH);
  144. long    A_API A_BLOCK_GetEnt(const char FAR*,A_EntH FAR*);
  145. long    A_API A_BLOCK_Num(void);
  146. long    A_API A_BLOCK_GetNth(long,A_EntH FAR*);
  147.  
  148. /* CIRCLE functions */
  149. long    A_API A_CIRCLE_Make(A_PointS,double,A_EntH,A_COLORREF,long,double,long,A_EntH FAR*);
  150. long    A_API A_CIRCLE_Get(A_EntH,A_PointS FAR*,double FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*,double FAR*);
  151. long    A_API A_CIRCLE_Change(A_EntH,A_PointS,double,A_EntH,A_COLORREF,long,double);
  152.  
  153. /* INSERT functions */
  154. #define A_INSERT_COLOR_BY    ((COLORREF)0xFFFFFFFE)
  155. #define A_INSERT_LINETYPE_BY    -2
  156.  
  157. long    A_API A_INSERT_Make(A_EntH,A_MatrixS,A_MatrixS,A_EntH,A_COLORREF,long,A_ArrayH,long,A_EntH FAR*);
  158. long    A_API A_INSERT_Get(A_EntH,A_EntH FAR*,A_MatrixS FAR*,A_MatrixS FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*,A_ArrayH FAR*);
  159. long    A_API A_INSERT_Change(A_EntH,A_EntH,A_MatrixS,A_MatrixS,A_EntH,A_COLORREF,long,A_ArrayH);
  160. long    A_API A_INSERT_AttrGet(A_EntH,A_MatrixS FAR*,A_ArrayH FAR*);
  161. long    A_API A_INSERT_AttrMake(A_EntH,A_MatrixS,const char FAR*,A_EntH FAR*);
  162.  
  163. /* LAYER functions */
  164. #define A_LAYER_FREEZE    0x1
  165. #define A_LAYER_LOCK    0x2
  166. #define A_LAYER_SPECIAL    0x4
  167.  
  168. #define A_LAYER_COLOR_BY    ((A_COLORREF)0xFFFFFFFF)
  169. #define A_LAYER_LINETYPE_BY    -1
  170.  
  171. long    A_API A_LAYER_Make(const char FAR*,A_COLORREF,long,long,A_EntH FAR*);
  172. long    A_API A_LAYER_Get(A_EntH,char FAR[A_MAX_NAME + 1],A_COLORREF FAR*,long FAR*,long FAR*,long FAR*);
  173. long    A_API A_LAYER_Change(A_EntH,const char FAR*,A_COLORREF,long,long);
  174. long    A_API A_LAYER_GetCurrent(A_EntH FAR*);
  175. long    A_API A_LAYER_SetCurrent(A_EntH);
  176. long    A_API A_LAYER_GetEnt(const char FAR*,A_EntH FAR*);
  177. long    A_API A_LAYER_Num(void);
  178. long    A_API A_LAYER_GetNth(long,A_EntH FAR*);
  179.  
  180. /* LINE functions */
  181. long    A_API A_LINE_Make(A_PointS,A_PointS,A_EntH,A_COLORREF,long,double,long,A_EntH FAR*);
  182. long    A_API A_LINE_Get(A_EntH,A_PointS FAR*,A_PointS FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*,double FAR*);
  183. long    A_API A_LINE_Change(A_EntH,A_PointS,A_PointS,A_EntH,A_COLORREF,long,double);
  184.  
  185. /* SOLID functions */
  186. long    A_API A_SOLID_Make(A_PointS,A_PointS,A_PointS,A_PointS,A_EntH,A_COLORREF,long,A_EntH FAR*);
  187. long    A_API A_SOLID_Get(A_EntH,A_PointS FAR*,A_PointS FAR*,A_PointS FAR*,A_PointS FAR*,A_EntH FAR*,A_COLORREF FAR*);
  188. long    A_API A_SOLID_Change(A_EntH,A_PointS,A_PointS,A_PointS,A_PointS,A_EntH,A_COLORREF);
  189.  
  190. /* TEXT functions */
  191. #define A_TEXT_ALIGN_BOTTOM    0x0
  192. #define A_TEXT_ALIGN_TOP    0x1
  193. #define A_TEXT_ALIGN_BASELINE    0x2
  194. #define A_TEXT_ALIGN_VERTICAL    0x3
  195.  
  196. #define A_TEXT_ALIGN_LEFT    0x0
  197. #define A_TEXT_ALIGN_RIGHT    0x4
  198. #define A_TEXT_ALIGN_CENTER    0x8
  199. #define A_TEXT_ALIGN_HORIZONTAL    0xC
  200.  
  201. long    A_API A_TEXT_Make(const char FAR*,A_PointS,double,double,A_EntH,long,A_EntH,A_COLORREF,long,A_EntH FAR*);
  202. long    A_API A_TEXT_Get(A_EntH,const char FAR* FAR*,A_PointS FAR*,double FAR*,double FAR*,A_EntH FAR*,long FAR*,A_EntH FAR*,A_COLORREF FAR*);
  203. long    A_API A_TEXT_Change(A_EntH,const char FAR*,A_PointS,double,double,A_EntH,long,A_EntH,A_COLORREF);
  204.  
  205. /* TEXTSTYLE functions */
  206. #define A_TEXTSTYLE_ITALIC    0x1
  207. #define A_TEXTSTYLE_UNDERLINE    0x2
  208. #define A_TEXTSTYLE_STRIKEOUT    0x4
  209.  
  210. long    A_API A_TEXTSTYLE_Make(const char FAR*,double,long,long,const char FAR*,long,A_EntH FAR*);
  211. long    A_API A_TEXTSTYLE_Get(A_EntH,char FAR[A_MAX_NAME + 1],double FAR*,long FAR*,long FAR*,char FAR[A_MAX_NAME + 1],long FAR*,long FAR*);
  212. long    A_API A_TEXTSTYLE_Change(A_EntH,const char FAR*,double,long,long,const char FAR*,long);
  213. long    A_API A_TEXTSTYLE_GetCurrent(A_EntH FAR*);
  214. long    A_API A_TEXTSTYLE_SetCurrent(A_EntH);
  215. long    A_API A_TEXTSTYLE_GetEnt(const char FAR*,A_EntH FAR*);
  216. long    A_API A_TEXTSTYLE_Num(void);
  217. long    A_API A_TEXTSTYLE_GetNth(long,A_EntH FAR*);
  218.  
  219. /* general entity properties */
  220. long    A_API A_E_GetLayer(A_EntH,A_EntH FAR*);
  221. long    A_API A_E_SetLayer(A_EntH,A_EntH);
  222. long    A_API A_E_GetWidth(A_EntH,double FAR*);
  223. long    A_API A_E_SetWidth(A_EntH,double);
  224. long    A_API A_E_GetColor(A_EntH,A_COLORREF FAR*);
  225. long    A_API A_E_SetColor(A_EntH,A_COLORREF);
  226. long    A_API A_E_GetLineType(A_EntH,long FAR*);
  227. long    A_API A_E_SetLineType(A_EntH,long);
  228. long    A_API A_E_Trans(A_ArrayH,A_MatrixS,long,A_ArrayH FAR*);
  229.  
  230. /* GET functions */
  231. #define    A_GET_BAD_SEL    0
  232. #define    A_GET_CANCEL    1
  233. #define    A_GET_OK    2
  234. #define    A_GET_DEFAULT    3
  235. #define    A_GET_DRAG    4 /* only internal */
  236. #define    A_GET_KWORD    5 /* base index for keywords */
  237.  
  238. typedef    long    (CALLBACK A_GetDragF)(void FAR*,A_PointS,A_MatrixS FAR*);
  239.  
  240. long    A_API A_GetEnt(const char FAR*,const char FAR*,const char FAR*,A_EntH FAR*,A_PointS FAR*);
  241. long    A_API A_GetSelection(A_ArrayH FAR*);
  242. long    A_API A_GetString(const char FAR*,const char FAR*,const char FAR* FAR*);
  243. long    A_API A_GetLong(const char FAR*,const char FAR*,const char FAR*,long FAR*);
  244. long    A_API A_GetDouble(const char FAR*,const char FAR*,const char FAR*,double FAR*);
  245. long    A_API A_GetPoint(const char FAR*,const char FAR*,const char FAR*,A_PointS FAR*);
  246. long    A_API A_GetPointDrag(const char FAR*,const char FAR*,const char FAR*,A_ArrayH,const A_PointS FAR*,A_GetDragF FAR*,void FAR*,A_PointS FAR*);
  247. long    A_API A_GetAngle(const char FAR*,const char FAR*,const char FAR*,A_ArrayH,A_PointS,double FAR*,double FAR*);
  248. long    A_API A_GetKWord(const char FAR*,const char FAR*,const char FAR*);
  249. long    A_API A_DrawLine(A_PointS,A_PointS);
  250. long    A_API A_DrawArc(A_PointS,double,double,double);
  251. long    A_API A_DrawText(const char FAR*,A_PointS,double,double,long,long,long,long,const char FAR*);
  252.  
  253. long    A_API A_WriteEnt(const char FAR*,A_EntH);
  254. long    A_API A_ReadEnt(const char FAR*,A_EntH FAR*);
  255. long    A_API A_DelEnt(A_EntH);
  256. long    A_API A_GetAllEnts(A_ArrayH FAR*);
  257.  
  258. enum A_DrawMethodE                         
  259.     {// adisplay.h A_display_methodE
  260.     A_DRAW_NORMAL        = 0,
  261.     A_DRAW_ERASE        = 1,
  262.     A_DRAW_HIGHLIGHT    = 2,
  263.     };
  264. long    A_API A_Draw(A_EntH,A_DrawMethodE);
  265.  
  266. enum    A_DisplayE
  267.     {
  268.     A_DISPLAY_STOP        = 0,
  269.     A_DISPLAY_FLUSH        = 1,
  270.     A_DISPLAY_REDRAW    = 2
  271.     };
  272.  
  273. long    A_API A_Display(A_DisplayE);
  274. long    A_API A_GetWinTrans(long,A_MatrixS FAR*);
  275. long    A_API A_SetWinTrans(long,A_MatrixS);
  276. long    A_API A_GetWinSize(long,A_PointS FAR*);
  277. long    A_API A_GetBoundRect(A_ArrayH,A_MatrixS,long,A_RectS FAR*);
  278. long    A_API A_GetMainWin(HWND FAR*);
  279.  
  280. enum    A_UndoE
  281.     {
  282.     A_UNDO_STEP        = 0,
  283.     A_REDO_STEP        = 1,
  284.     A_UNDO_BEGIN        = 2,
  285.     A_UNDO_END        = 3,
  286.     A_UNDO_REMOVE_ALL    = 4
  287.     };
  288.  
  289. long    A_API A_Undo(A_UndoE);
  290.  
  291. enum    A_EntTypeE
  292.     {
  293.     A_ENT_UNKNOWN    = 0,
  294.     A_ENT_ARC    = 1,
  295.     A_ENT_ATTR    = 2,
  296.     A_ENT_BLOCK    = 3,
  297.     A_ENT_CIRCLE    = 4,
  298.     A_ENT_INSERT    = 5,
  299.     A_ENT_LAYER    = 6,
  300.     A_ENT_LINE    = 7,
  301.     A_ENT_SOLID    = 8,
  302.     A_ENT_TEXT    = 9,
  303.     A_ENT_TEXTSTYLE    = 10,
  304.     A_ENT_HATCH    = 11,
  305.     A_ENT_HATCHSTYLE= 12,
  306.     A_ENT_DIMLIN    = 13,
  307.     A_ENT_DIMANG    = 14,
  308.     A_ENT_DIMRAD    = 15,
  309.     A_ENT_DIMSTYLE    = 16,
  310.     };
  311.  
  312. long    A_API A_GetEntType(A_EntH,A_EntTypeE FAR*);
  313.  
  314. enum    A_V_TypeE 
  315.     {// avars.h A_varsC::TypE
  316.     A_V_STRING    = 1,
  317.     A_V_DOUBLE    = 2,
  318.     A_V_INTEGER    = 3,
  319.     A_V_POINT    = 4,
  320.     };
  321.  
  322. enum    A_V_LocationE
  323.     {// avars.h A_varsC::LocationE
  324.     A_V_INI        = 1,
  325.     A_V_NOUNDO    = 2,
  326.     A_V_UNDO    = 3
  327.     };
  328.  
  329. typedef union
  330.     {
  331.     const char FAR*    pString;
  332.     double        Double;
  333.     long        Integer;
  334.     A_PointS    Point;
  335.     } A_V_ValueU;
  336.  
  337. long    A_API A_V_Registry(const char FAR*,A_V_LocationE,A_V_TypeE,A_V_ValueU);
  338. long    A_API A_V_UnRegistry(const char FAR*);
  339. long    A_API A_V_GetIndex(const char FAR*);
  340. long    A_API A_V_GetName(long,char FAR[A_MAX_NAME + 1]);
  341. long    A_API A_V_Get(const char FAR*,A_V_TypeE FAR*,A_V_ValueU FAR*);
  342. long    A_API A_V_GetByIndex(long,A_V_TypeE FAR*,A_V_ValueU FAR*);
  343. long    A_API A_V_Set(const char FAR*,A_V_TypeE,A_V_ValueU);
  344. long    A_API A_V_SetByIndex(long,A_V_TypeE,A_V_ValueU);
  345.  
  346. /* dynamic arrays */
  347. #define    A_A_EMPTY    0l
  348.  
  349. enum    A_A_TypeE
  350.         {
  351.         A_A_ENTITY    = 0
  352.         };
  353.  
  354. long    A_API A_A_Alloc(A_A_TypeE,A_ArrayH FAR*);
  355. long    A_API A_A_Free(A_ArrayH);
  356. long    A_API A_A_Length(A_ArrayH);
  357. long    A_API A_A_InsEnt(A_ArrayH,long,A_EntH);
  358. long    A_API A_A_Del(A_ArrayH,long);
  359. long    A_API A_A_GetEnt(A_ArrayH,long,A_EntH FAR*);
  360.  
  361. /* X-data functions */
  362. enum    A_X_TypeE
  363.     {// axdata.h A_xdataC::TypeE
  364.     A_X_ARRAY    = 1,
  365.     A_X_STRING    = 2,
  366.     A_X_CHAR    = 3,
  367.     A_X_SHORT    = 4,
  368.     A_X_LONG    = 5,
  369.     A_X_DOUBLE    = 6,
  370.     A_X_POINT    = 7,
  371.     A_X_LENGTH    = 8,
  372.     A_X_ANGLE    = 9,
  373.     A_X_MIRROR    = 10,
  374.     A_X_POSITION    = 11,
  375.     A_X_VECTOR    = 12,
  376.     A_X_DIRECTION    = 13,
  377.     A_X_ENTITY    = 14,
  378.         A_X_VCHUNK    = 15,
  379.         A_X_CCHUNK    = 16
  380.     };
  381.  
  382. typedef struct
  383.     {
  384.     const void FAR*    pChunk;
  385.     long        nLength;
  386.     } A_X_ChunkS;
  387.  
  388. typedef union
  389.     {
  390.     const char FAR*    pString;
  391.     long        Long;/* also Short and Char values - no packing problems */
  392.     double        Double;
  393.     A_PointS    Point;
  394.     A_EntH        Entity;
  395.     A_X_ChunkS    Chunk;
  396.     } A_X_DataU;
  397.  
  398. A_DECL_HANDLE(A_X_StructH);
  399. A_DECL_HANDLE(A_X_DataH);
  400.  
  401. long    A_API A_X_Registry(const char FAR*,A_X_StructH FAR*);
  402. long    A_API A_X_UnRegistry(A_X_StructH);
  403. long    A_API A_X_GetIndex(const char FAR*,A_X_StructH FAR*);
  404. long    A_API A_X_GetDesc(A_X_StructH,const char FAR* FAR*);
  405. long    A_API A_X_GetStruct(A_EntH,long,A_X_StructH FAR*);
  406. long    A_API A_X_DeleteData(A_EntH,A_X_StructH);
  407. long    A_API A_X_CreateData(A_X_StructH,A_EntH,long,A_X_DataH FAR*);
  408. long    A_API A_X_SetIndex(A_X_DataH,long,long,long);
  409. long    A_API A_X_SetData(A_X_DataH,long,A_X_TypeE,A_X_DataU);
  410. long    A_API A_X_GetData(A_X_DataH,long,A_X_TypeE FAR*,A_X_DataU FAR*);
  411. long    A_API A_X_PutData(A_EntH,A_X_DataH);
  412. long    A_API A_X_FreeData(A_X_DataH);
  413.  
  414. /* select from database */
  415. long    A_API A_S_Reset(void);
  416. long    A_API A_S_PutLong(long);
  417. long    A_API A_S_PutArray(A_ArrayH);
  418. long    A_API A_S_PutDouble(double);
  419. long    A_API A_S_PutPoint(A_PointS);
  420. long    A_API A_S_PutString(const char FAR*);
  421. long    A_API A_S_Select(A_ArrayH,const char FAR*,A_ArrayH FAR*);
  422.  
  423. /* application control */
  424. long    A_API A_P_GetDirs(const char FAR* FAR*);
  425. long    A_API A_P_SetDirs(const char FAR*);
  426. long    A_API A_P_Load(const char FAR*);
  427. long    A_API A_P_UnLoad(const char FAR*);
  428. long    A_API A_P_Reset(long);
  429. long    A_API A_P_Next(const char FAR* FAR*);
  430. long    A_API A_P_FindFile(const char FAR*,const char FAR*,char FAR*,long);
  431. long    A_API A_P_SetCaption(const char FAR*);
  432.  
  433. /* geom 2D functions */
  434. double        A_API A_G_SMulVV(A_VectorS,A_VectorS);
  435. double        A_API A_G_VMulVV(A_VectorS,A_VectorS);
  436. A_VectorS    A_API A_G_AddVV(A_VectorS,A_VectorS);
  437. A_VectorS    A_API A_G_SubVV(A_VectorS,A_VectorS);
  438. A_VectorS    A_API A_G_PerpenV(A_VectorS,long);
  439. A_VectorS    A_API A_G_MulVR(A_VectorS,double);
  440. A_VectorS    A_API A_G_NormV(A_VectorS);
  441. double        A_API A_G_LenV(A_VectorS);
  442. double        A_API A_G_DistPP(A_PointS,A_PointS);
  443. A_PointS    A_API A_G_MidP(A_PointS,A_PointS);
  444. long        A_API A_G_IntersLL(A_PointS,A_VectorS,A_PointS,A_VectorS,double FAR*,double FAR*);
  445. long        A_API A_G_Colinear(A_PointS,A_PointS,A_PointS,double);
  446. long        A_API A_G_ParsA(A_PointS,A_PointS,A_PointS,A_PointS,double FAR*,double FAR*,double FAR*,double FAR*,long FAR*);
  447. long        A_API A_G_GetTA(A_PointS,A_PointS,A_PointS,long,A_PointS,double FAR*);
  448. long        A_API A_G_SetTA(A_PointS,A_PointS,A_PointS,long,double,A_PointS FAR*);
  449. long        A_API A_G_IntersLC(A_PointS,A_PointS,A_PointS,double,double FAR*,double FAR*);
  450. long        A_API A_G_IntersCC(A_PointS,double,A_PointS,double,A_PointS*,A_PointS FAR*);
  451. A_PointS    A_API A_G_Polar(double,double);
  452. double        A_API A_G_Angle(A_VectorS);
  453.  
  454. /* matrix 2D functions */
  455. A_MatrixS    A_API A_M_Ident();
  456. A_MatrixS    A_API A_M_Move(A_VectorS);
  457. A_MatrixS    A_API A_M_Scale(double);
  458. A_MatrixS    A_API A_M_Rotate(double);
  459. A_MatrixS    A_API A_M_Mirror(A_VectorS);
  460. long        A_API A_M_Inverse(A_MatrixS,A_MatrixS FAR*);
  461. A_VectorS    A_API A_M_MulMV(A_MatrixS,A_VectorS);
  462. A_PointS    A_API A_M_MulMP(A_MatrixS,A_PointS);
  463. A_MatrixS    A_API A_M_MulMM(A_MatrixS,A_MatrixS);
  464. A_MatrixS    A_API A_M_Compose(double,long,double,A_VectorS);
  465. long        A_API A_M_Decompose(A_MatrixS,double,double FAR*,long FAR*,double FAR*,A_VectorS FAR*);
  466.  
  467. #ifdef    __cplusplus
  468. } /*extern "C"*/
  469. #endif
  470.  
  471. #endif
  472.