home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 March
/
Chip_1998-03_cd.bin
/
tema
/
jpcad
/
ADK
/
INCLUDE
/
ADK.H_
/
ADK.H
Wrap
C/C++ Source or Header
|
1998-01-21
|
17KB
|
472 lines
#ifndef _ADK_H_
#define _ADK_H_
#ifdef __cplusplus
extern "C" {
#endif
#define A_VERSION 120
/* A_EXPORT is defined only when building ADK.DLL */
#if defined(A_16BIT)
#define A_API _far _pascal _export
#define A_CALLBACK _far _pascal _export
#elif defined(A_EXPORT)
#define A_API _declspec(dllexport) __stdcall
#define A_CALLBACK __stdcall
#else
#define A_API _declspec(dllimport) __stdcall
#define A_CALLBACK __stdcall
#endif
enum A_StatusE {
A_CMD_CALL = 0,/* JPCAD calls your cmd */
A_LOAD = 1,/* load application */
A_UNLOAD = 2,/* unload application */
A_NEW = 3,/* new drawing, prototype loaded */
A_OPEN_BEFORE = 4,/* drawing will be loaded */
A_OPEN_AFTER = 5,/* drawing loaded */
A_SAVE_BEFORE = 6,/* drawing is to be saved */
A_SAVE_AFTER = 7,/* drawing was saved */
A_DISCARD = 8,/* drawing is to be discarded */
A_END = 100,/* ACC only - end application */
};
/*
general error codes from any A_ function
error codes less than -1000 are reserved for interface error, other numbers can
be used for function errors
*/
/* already initialized A_Init() */
#define A_ERROR_ALREADY_INITIALIZED -1000
/* function called without initializing */
#define A_ERROR_NOT_INITIALIZED -1001
/* function called, but JPCAD is not waiting for commands */
#define A_ERROR_NOT_REENTRANT -1002
/* any other error */
#define A_ERROR_INTERNAL -1003
/* message found in message queue - used in A_AdkMsg */
#define A_ERROR_MSG -1004
/* JPCAD terminated */
#define A_ERROR_CONNECTION_TERMINATED -1005
/* incompatible IPC interface */
#define A_ERROR_INCOMPATIBLE_IPC_INTERFACE -1006
/* incompatible DLL interface */
#define A_ERROR_INCOMPATIBLE_DLL_INTERFACE -1007
/* universal/generic thunk error */
#define A_ERROR_THUNK -1008
/* bad VARIANT argument type,
this is a ACC error, but placed here */
#define A_ERR_VARIANT_TYPE -1009
/* function parameter required A_ADK() */
#define A_ERROR_PARAMETER_REQUIRED -1010
/* float number not recognized as float - check
is done only for arguments passed to JPCAD */
#define A_ERROR_FLOAT -1011
/* no error */
#define A_ERROR_OK 0
/* use current layer, color, linetype, textstyle */
#define A_USE_CURRENT 0x80000003l
#define A_USE_CURRENT_ENT ((A_EntH)0x80000003l)
/* no entity */
#define A_NO_REF ((A_EntH)0x80000000l)
/* length of any name in database */
#define A_MAX_NAME 32
/* for type safety reasons */
#ifdef A_NOSTRICT
#define A_DECL_HANDLE(name) typedef long name
#else
#define A_DECL_HANDLE(name) struct name##__ {long _;}; typedef struct name##__ FAR*name
#endif
A_DECL_HANDLE(A_EntH);
A_DECL_HANDLE(A_ArrayH);
typedef struct
{
double x;
double y;
} A_PointS, A_VectorS;
typedef struct
{
A_PointS Min;
A_PointS Max;
} A_RectS;
typedef struct
{
double m[3][3];
} A_MatrixS;
typedef unsigned long A_COLORREF;
typedef void (A_CALLBACK A_StatusF)(long,long);
typedef void (A_CALLBACK A_ErrorF)(long);
/* basic functions */
long A_API A_Adk(long,A_StatusF*,A_ErrorF*);
long A_API A_AdkMsg(long,LPVOID FAR*,A_StatusF*,A_ErrorF*);
#ifndef A_16BIT
/* internal entry point for utadk.dll */
long A_API A_Adk16(HTASK,LPCTSTR,long,A_StatusF*,A_ErrorF*);
long A_API A_AdkMsg16(HTASK,LPCTSTR,long,void**,A_StatusF*,A_ErrorF*);
#endif
long A_API A_DefCmd(const char FAR*,long,long);
long A_API A_UnDefCmd(long);
long A_API A_CallCmd(const char FAR*);
/* input/output functions */
long A_API A_Prompt(const char FAR*);
/* ARC functions */
long A_API A_ARC_Make(A_PointS,double,double,double,A_EntH,A_COLORREF,long,double,long,A_EntH FAR*);
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*);
long A_API A_ARC_Change(A_EntH,A_PointS,double,double,double,A_EntH,A_COLORREF,long,double);
/* hidden/visible, preset/ask flags */
#define A_ATTR_HIDDEN 0x1
#define A_ATTR_PRESET 0x2
#define A_ATTR_INSERTED 0x80
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*);
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*);
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);
/* BLOCK functions */
long A_API A_BLOCK_Make(A_MatrixS,A_MatrixS,const char FAR*,A_ArrayH,A_EntH FAR*);
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*);
long A_API A_BLOCK_Change(A_EntH,A_MatrixS,A_MatrixS,const char FAR*,A_ArrayH);
long A_API A_BLOCK_GetEnt(const char FAR*,A_EntH FAR*);
long A_API A_BLOCK_Num(void);
long A_API A_BLOCK_GetNth(long,A_EntH FAR*);
/* CIRCLE functions */
long A_API A_CIRCLE_Make(A_PointS,double,A_EntH,A_COLORREF,long,double,long,A_EntH FAR*);
long A_API A_CIRCLE_Get(A_EntH,A_PointS FAR*,double FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*,double FAR*);
long A_API A_CIRCLE_Change(A_EntH,A_PointS,double,A_EntH,A_COLORREF,long,double);
/* INSERT functions */
#define A_INSERT_COLOR_BY ((COLORREF)0xFFFFFFFE)
#define A_INSERT_LINETYPE_BY -2
long A_API A_INSERT_Make(A_EntH,A_MatrixS,A_MatrixS,A_EntH,A_COLORREF,long,A_ArrayH,long,A_EntH FAR*);
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*);
long A_API A_INSERT_Change(A_EntH,A_EntH,A_MatrixS,A_MatrixS,A_EntH,A_COLORREF,long,A_ArrayH);
long A_API A_INSERT_AttrGet(A_EntH,A_MatrixS FAR*,A_ArrayH FAR*);
long A_API A_INSERT_AttrMake(A_EntH,A_MatrixS,const char FAR*,A_EntH FAR*);
/* LAYER functions */
#define A_LAYER_FREEZE 0x1
#define A_LAYER_LOCK 0x2
#define A_LAYER_SPECIAL 0x4
#define A_LAYER_COLOR_BY ((A_COLORREF)0xFFFFFFFF)
#define A_LAYER_LINETYPE_BY -1
long A_API A_LAYER_Make(const char FAR*,A_COLORREF,long,long,A_EntH FAR*);
long A_API A_LAYER_Get(A_EntH,char FAR[A_MAX_NAME + 1],A_COLORREF FAR*,long FAR*,long FAR*,long FAR*);
long A_API A_LAYER_Change(A_EntH,const char FAR*,A_COLORREF,long,long);
long A_API A_LAYER_GetCurrent(A_EntH FAR*);
long A_API A_LAYER_SetCurrent(A_EntH);
long A_API A_LAYER_GetEnt(const char FAR*,A_EntH FAR*);
long A_API A_LAYER_Num(void);
long A_API A_LAYER_GetNth(long,A_EntH FAR*);
/* LINE functions */
long A_API A_LINE_Make(A_PointS,A_PointS,A_EntH,A_COLORREF,long,double,long,A_EntH FAR*);
long A_API A_LINE_Get(A_EntH,A_PointS FAR*,A_PointS FAR*,A_EntH FAR*,A_COLORREF FAR*,long FAR*,double FAR*);
long A_API A_LINE_Change(A_EntH,A_PointS,A_PointS,A_EntH,A_COLORREF,long,double);
/* SOLID functions */
long A_API A_SOLID_Make(A_PointS,A_PointS,A_PointS,A_PointS,A_EntH,A_COLORREF,long,A_EntH FAR*);
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*);
long A_API A_SOLID_Change(A_EntH,A_PointS,A_PointS,A_PointS,A_PointS,A_EntH,A_COLORREF);
/* TEXT functions */
#define A_TEXT_ALIGN_BOTTOM 0x0
#define A_TEXT_ALIGN_TOP 0x1
#define A_TEXT_ALIGN_BASELINE 0x2
#define A_TEXT_ALIGN_VERTICAL 0x3
#define A_TEXT_ALIGN_LEFT 0x0
#define A_TEXT_ALIGN_RIGHT 0x4
#define A_TEXT_ALIGN_CENTER 0x8
#define A_TEXT_ALIGN_HORIZONTAL 0xC
long A_API A_TEXT_Make(const char FAR*,A_PointS,double,double,A_EntH,long,A_EntH,A_COLORREF,long,A_EntH FAR*);
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*);
long A_API A_TEXT_Change(A_EntH,const char FAR*,A_PointS,double,double,A_EntH,long,A_EntH,A_COLORREF);
/* TEXTSTYLE functions */
#define A_TEXTSTYLE_ITALIC 0x1
#define A_TEXTSTYLE_UNDERLINE 0x2
#define A_TEXTSTYLE_STRIKEOUT 0x4
long A_API A_TEXTSTYLE_Make(const char FAR*,double,long,long,const char FAR*,long,A_EntH FAR*);
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*);
long A_API A_TEXTSTYLE_Change(A_EntH,const char FAR*,double,long,long,const char FAR*,long);
long A_API A_TEXTSTYLE_GetCurrent(A_EntH FAR*);
long A_API A_TEXTSTYLE_SetCurrent(A_EntH);
long A_API A_TEXTSTYLE_GetEnt(const char FAR*,A_EntH FAR*);
long A_API A_TEXTSTYLE_Num(void);
long A_API A_TEXTSTYLE_GetNth(long,A_EntH FAR*);
/* general entity properties */
long A_API A_E_GetLayer(A_EntH,A_EntH FAR*);
long A_API A_E_SetLayer(A_EntH,A_EntH);
long A_API A_E_GetWidth(A_EntH,double FAR*);
long A_API A_E_SetWidth(A_EntH,double);
long A_API A_E_GetColor(A_EntH,A_COLORREF FAR*);
long A_API A_E_SetColor(A_EntH,A_COLORREF);
long A_API A_E_GetLineType(A_EntH,long FAR*);
long A_API A_E_SetLineType(A_EntH,long);
long A_API A_E_Trans(A_ArrayH,A_MatrixS,long,A_ArrayH FAR*);
/* GET functions */
#define A_GET_BAD_SEL 0
#define A_GET_CANCEL 1
#define A_GET_OK 2
#define A_GET_DEFAULT 3
#define A_GET_DRAG 4 /* only internal */
#define A_GET_KWORD 5 /* base index for keywords */
typedef long (CALLBACK A_GetDragF)(void FAR*,A_PointS,A_MatrixS FAR*);
long A_API A_GetEnt(const char FAR*,const char FAR*,const char FAR*,A_EntH FAR*,A_PointS FAR*);
long A_API A_GetSelection(A_ArrayH FAR*);
long A_API A_GetString(const char FAR*,const char FAR*,const char FAR* FAR*);
long A_API A_GetLong(const char FAR*,const char FAR*,const char FAR*,long FAR*);
long A_API A_GetDouble(const char FAR*,const char FAR*,const char FAR*,double FAR*);
long A_API A_GetPoint(const char FAR*,const char FAR*,const char FAR*,A_PointS FAR*);
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*);
long A_API A_GetAngle(const char FAR*,const char FAR*,const char FAR*,A_ArrayH,A_PointS,double FAR*,double FAR*);
long A_API A_GetKWord(const char FAR*,const char FAR*,const char FAR*);
long A_API A_DrawLine(A_PointS,A_PointS);
long A_API A_DrawArc(A_PointS,double,double,double);
long A_API A_DrawText(const char FAR*,A_PointS,double,double,long,long,long,long,const char FAR*);
long A_API A_WriteEnt(const char FAR*,A_EntH);
long A_API A_ReadEnt(const char FAR*,A_EntH FAR*);
long A_API A_DelEnt(A_EntH);
long A_API A_GetAllEnts(A_ArrayH FAR*);
enum A_DrawMethodE
{// adisplay.h A_display_methodE
A_DRAW_NORMAL = 0,
A_DRAW_ERASE = 1,
A_DRAW_HIGHLIGHT = 2,
};
long A_API A_Draw(A_EntH,A_DrawMethodE);
enum A_DisplayE
{
A_DISPLAY_STOP = 0,
A_DISPLAY_FLUSH = 1,
A_DISPLAY_REDRAW = 2
};
long A_API A_Display(A_DisplayE);
long A_API A_GetWinTrans(long,A_MatrixS FAR*);
long A_API A_SetWinTrans(long,A_MatrixS);
long A_API A_GetWinSize(long,A_PointS FAR*);
long A_API A_GetBoundRect(A_ArrayH,A_MatrixS,long,A_RectS FAR*);
long A_API A_GetMainWin(HWND FAR*);
enum A_UndoE
{
A_UNDO_STEP = 0,
A_REDO_STEP = 1,
A_UNDO_BEGIN = 2,
A_UNDO_END = 3,
A_UNDO_REMOVE_ALL = 4
};
long A_API A_Undo(A_UndoE);
enum A_EntTypeE
{
A_ENT_UNKNOWN = 0,
A_ENT_ARC = 1,
A_ENT_ATTR = 2,
A_ENT_BLOCK = 3,
A_ENT_CIRCLE = 4,
A_ENT_INSERT = 5,
A_ENT_LAYER = 6,
A_ENT_LINE = 7,
A_ENT_SOLID = 8,
A_ENT_TEXT = 9,
A_ENT_TEXTSTYLE = 10,
A_ENT_HATCH = 11,
A_ENT_HATCHSTYLE= 12,
A_ENT_DIMLIN = 13,
A_ENT_DIMANG = 14,
A_ENT_DIMRAD = 15,
A_ENT_DIMSTYLE = 16,
};
long A_API A_GetEntType(A_EntH,A_EntTypeE FAR*);
enum A_V_TypeE
{// avars.h A_varsC::TypE
A_V_STRING = 1,
A_V_DOUBLE = 2,
A_V_INTEGER = 3,
A_V_POINT = 4,
};
enum A_V_LocationE
{// avars.h A_varsC::LocationE
A_V_INI = 1,
A_V_NOUNDO = 2,
A_V_UNDO = 3
};
typedef union
{
const char FAR* pString;
double Double;
long Integer;
A_PointS Point;
} A_V_ValueU;
long A_API A_V_Registry(const char FAR*,A_V_LocationE,A_V_TypeE,A_V_ValueU);
long A_API A_V_UnRegistry(const char FAR*);
long A_API A_V_GetIndex(const char FAR*);
long A_API A_V_GetName(long,char FAR[A_MAX_NAME + 1]);
long A_API A_V_Get(const char FAR*,A_V_TypeE FAR*,A_V_ValueU FAR*);
long A_API A_V_GetByIndex(long,A_V_TypeE FAR*,A_V_ValueU FAR*);
long A_API A_V_Set(const char FAR*,A_V_TypeE,A_V_ValueU);
long A_API A_V_SetByIndex(long,A_V_TypeE,A_V_ValueU);
/* dynamic arrays */
#define A_A_EMPTY 0l
enum A_A_TypeE
{
A_A_ENTITY = 0
};
long A_API A_A_Alloc(A_A_TypeE,A_ArrayH FAR*);
long A_API A_A_Free(A_ArrayH);
long A_API A_A_Length(A_ArrayH);
long A_API A_A_InsEnt(A_ArrayH,long,A_EntH);
long A_API A_A_Del(A_ArrayH,long);
long A_API A_A_GetEnt(A_ArrayH,long,A_EntH FAR*);
/* X-data functions */
enum A_X_TypeE
{// axdata.h A_xdataC::TypeE
A_X_ARRAY = 1,
A_X_STRING = 2,
A_X_CHAR = 3,
A_X_SHORT = 4,
A_X_LONG = 5,
A_X_DOUBLE = 6,
A_X_POINT = 7,
A_X_LENGTH = 8,
A_X_ANGLE = 9,
A_X_MIRROR = 10,
A_X_POSITION = 11,
A_X_VECTOR = 12,
A_X_DIRECTION = 13,
A_X_ENTITY = 14,
A_X_VCHUNK = 15,
A_X_CCHUNK = 16
};
typedef struct
{
const void FAR* pChunk;
long nLength;
} A_X_ChunkS;
typedef union
{
const char FAR* pString;
long Long;/* also Short and Char values - no packing problems */
double Double;
A_PointS Point;
A_EntH Entity;
A_X_ChunkS Chunk;
} A_X_DataU;
A_DECL_HANDLE(A_X_StructH);
A_DECL_HANDLE(A_X_DataH);
long A_API A_X_Registry(const char FAR*,A_X_StructH FAR*);
long A_API A_X_UnRegistry(A_X_StructH);
long A_API A_X_GetIndex(const char FAR*,A_X_StructH FAR*);
long A_API A_X_GetDesc(A_X_StructH,const char FAR* FAR*);
long A_API A_X_GetStruct(A_EntH,long,A_X_StructH FAR*);
long A_API A_X_DeleteData(A_EntH,A_X_StructH);
long A_API A_X_CreateData(A_X_StructH,A_EntH,long,A_X_DataH FAR*);
long A_API A_X_SetIndex(A_X_DataH,long,long,long);
long A_API A_X_SetData(A_X_DataH,long,A_X_TypeE,A_X_DataU);
long A_API A_X_GetData(A_X_DataH,long,A_X_TypeE FAR*,A_X_DataU FAR*);
long A_API A_X_PutData(A_EntH,A_X_DataH);
long A_API A_X_FreeData(A_X_DataH);
/* select from database */
long A_API A_S_Reset(void);
long A_API A_S_PutLong(long);
long A_API A_S_PutArray(A_ArrayH);
long A_API A_S_PutDouble(double);
long A_API A_S_PutPoint(A_PointS);
long A_API A_S_PutString(const char FAR*);
long A_API A_S_Select(A_ArrayH,const char FAR*,A_ArrayH FAR*);
/* application control */
long A_API A_P_GetDirs(const char FAR* FAR*);
long A_API A_P_SetDirs(const char FAR*);
long A_API A_P_Load(const char FAR*);
long A_API A_P_UnLoad(const char FAR*);
long A_API A_P_Reset(long);
long A_API A_P_Next(const char FAR* FAR*);
long A_API A_P_FindFile(const char FAR*,const char FAR*,char FAR*,long);
long A_API A_P_SetCaption(const char FAR*);
/* geom 2D functions */
double A_API A_G_SMulVV(A_VectorS,A_VectorS);
double A_API A_G_VMulVV(A_VectorS,A_VectorS);
A_VectorS A_API A_G_AddVV(A_VectorS,A_VectorS);
A_VectorS A_API A_G_SubVV(A_VectorS,A_VectorS);
A_VectorS A_API A_G_PerpenV(A_VectorS,long);
A_VectorS A_API A_G_MulVR(A_VectorS,double);
A_VectorS A_API A_G_NormV(A_VectorS);
double A_API A_G_LenV(A_VectorS);
double A_API A_G_DistPP(A_PointS,A_PointS);
A_PointS A_API A_G_MidP(A_PointS,A_PointS);
long A_API A_G_IntersLL(A_PointS,A_VectorS,A_PointS,A_VectorS,double FAR*,double FAR*);
long A_API A_G_Colinear(A_PointS,A_PointS,A_PointS,double);
long A_API A_G_ParsA(A_PointS,A_PointS,A_PointS,A_PointS,double FAR*,double FAR*,double FAR*,double FAR*,long FAR*);
long A_API A_G_GetTA(A_PointS,A_PointS,A_PointS,long,A_PointS,double FAR*);
long A_API A_G_SetTA(A_PointS,A_PointS,A_PointS,long,double,A_PointS FAR*);
long A_API A_G_IntersLC(A_PointS,A_PointS,A_PointS,double,double FAR*,double FAR*);
long A_API A_G_IntersCC(A_PointS,double,A_PointS,double,A_PointS*,A_PointS FAR*);
A_PointS A_API A_G_Polar(double,double);
double A_API A_G_Angle(A_VectorS);
/* matrix 2D functions */
A_MatrixS A_API A_M_Ident();
A_MatrixS A_API A_M_Move(A_VectorS);
A_MatrixS A_API A_M_Scale(double);
A_MatrixS A_API A_M_Rotate(double);
A_MatrixS A_API A_M_Mirror(A_VectorS);
long A_API A_M_Inverse(A_MatrixS,A_MatrixS FAR*);
A_VectorS A_API A_M_MulMV(A_MatrixS,A_VectorS);
A_PointS A_API A_M_MulMP(A_MatrixS,A_PointS);
A_MatrixS A_API A_M_MulMM(A_MatrixS,A_MatrixS);
A_MatrixS A_API A_M_Compose(double,long,double,A_VectorS);
long A_API A_M_Decompose(A_MatrixS,double,double FAR*,long FAR*,double FAR*,A_VectorS FAR*);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif