00001
00019 #ifndef SBGTYPES_H
00020 #define SBGTYPES_H
00021
00022
00023
00024
00025 #include "sbgconst.h"
00026 #ifdef __UNIX__
00027 #include <sys/types.h>
00028 #endif
00029
00030 #define CHECK_TIME 1000
00031 #define AWAIT_TIME 999999
00032 #define INFD 0
00033 #define OUTFD 1
00034 #define EVENTSIZE 16 //event buffer
00035 #define PRIMITIVES (*(INT32*)((char*)shminfo.shmstart+shminfo.shmsize))
00036 #define EVENT_TAIL (*(INT32*)((char*)shminfo.shmstart+shminfo.shmsize+sizeof(INT32)))
00037 #define EVENT_HEAD (*(INT32*)((char*)shminfo.shmstart+shminfo.shmsize+2*sizeof(INT32)))
00038 #define EVENT_INDEX(index) (((SBD_GRAPHICS_EVENT*)((char*)shminfo.shmstart+shminfo.shmsize+3*sizeof(INT32)))[index])
00039
00046 typedef enum {
00047 LINECOLOUR,
00048 PERIMETERCOLOUR,
00049 FILLCOLOUR,
00050 MARKERCOLOUR,
00051 TEXTCOLOUR,
00052 TEXTFONT,
00053 CHARHEIGHT,
00054 LINETYPE,
00055 MARKERTYPE,
00056 MARKERSIZE,
00057 MARKERMODE,
00058 INTERIORSTYLE,
00059 EDGESTYLE,
00060
00061 MOVE2D,
00062 DRAW2D,
00063 RECTANGLE,
00064 TEXT_ALIGNMENT,
00065 POLYLINE2D,
00066 POLYGON2D,
00067 POLYMARKER2D,
00068 TEXT2D,
00069 APPENDTEXT,
00070 ELLIPSE,
00071 ARC,
00072
00073 SHOWIMAGE,
00074 SHOWLINE,
00075
00076 CREATE,
00077 DESTROY,
00078 CLEAR,
00079 VDCEXTENT,
00080 MAKECURRENT,
00081 SETSIGNALS,
00082 SETECHO,
00083 SYNCWIN,
00084 RE_COMP_COLMAP
00085 } CALL_TYPE;
00086
00093 typedef union
00094 {
00095 INT16 fd;
00096 void *next;
00097 } HEADUNION;
00098
00103 typedef union
00104 {
00105 float f;
00106 INT32 i;
00107 } PARAMUNION;
00108
00113 typedef struct
00114 {
00115 PARAMUNION p;
00116 } ONEPARAM;
00117
00122 typedef struct
00123 {
00124 PARAMUNION p[2];
00125 } TWOPARAMS;
00126
00131 typedef struct
00132 {
00133 PARAMUNION p[4];
00134 } FOURPARAMS;
00135
00140 typedef struct
00141 {
00142 PARAMUNION p[8];
00143 } EIGHTPARAMS;
00144
00149 typedef struct
00150 {
00151 HEADUNION header;
00152 CALL_TYPE type;
00153 ONEPARAM param;
00154 } ONEOP;
00155
00160 typedef struct
00161 {
00162 HEADUNION header;
00163 CALL_TYPE type;
00164 TWOPARAMS param;
00165 } TWOOP;
00166
00171 typedef struct
00172 {
00173 HEADUNION header;
00174 CALL_TYPE type;
00175 FOURPARAMS param;
00176 } FOUROP;
00177
00182 typedef struct
00183 {
00184 HEADUNION header;
00185 CALL_TYPE type;
00186 EIGHTPARAMS param;
00187 } EIGHTOP;
00188
00195 typedef struct
00196 {
00197 float *clist;
00198 INT32 numpts;
00199 INT32 flags;
00200 } POLYPARAM;
00201
00208 typedef struct
00209 {
00210 HEADUNION header;
00211 CALL_TYPE type;
00212 POLYPARAM param;
00213 float polyxmin, polyxmax;
00214 float polyymin, polyymax;
00215 float clist[1];
00216 } POLYOP;
00217
00224 typedef struct
00225 {
00226 float x, y;
00227 char *string;
00228 INT32 xform;
00229 INT32 more;
00230 } TEXTPARAM;
00231
00238 typedef struct
00239 {
00240 char *string;
00241 INT32 xform;
00242 INT32 more;
00243 } APPENDPARAM;
00244
00251 typedef struct
00252 {
00253 HEADUNION header;
00254 CALL_TYPE type;
00255 TEXTPARAM param;
00256 char chars[4];
00257 } TEXTOP;
00258
00265 typedef struct
00266 {
00267 HEADUNION header;
00268 CALL_TYPE type;
00269 APPENDPARAM param;
00270 char chars[4];
00271 } APPENDOP;
00272
00279 typedef struct
00280 {
00281 HEADUNION header;
00282 CALL_TYPE type;
00283 INT32 size;
00284 UINT8 line[2];
00285 } IMAGEOP;
00286
00291 typedef struct
00292 {
00293 HEADUNION header;
00294 CALL_TYPE type;
00295 INT16 xpos, ypos;
00296 INT16 xsize, ysize;
00297 float xmin, xmax;
00298 float ymin, ymax;
00299 BOOL8 downon;
00300 BOOL8 moveon;
00301 BOOL8 upon;
00302 BOOL8 keyon;
00303 INT32 window_type;
00304 char name[MAXWINDOWNAME];
00305 } CREATEOP;
00306
00313 typedef struct
00314 {
00315 #ifdef __UNIX__
00316 int fds[2];
00317 int shmid;
00318 #else
00319 #ifdef __PCDEMON__
00320 int fds[2];
00321 #else
00322 HANDLE fds[2];
00323 #endif
00324 HANDLE shmid;
00325 #endif
00326 void *shmstart;
00327 INT32 usedsize;
00328 INT32 shmsize;
00329 #ifdef __UNIX
00330 pid_t pid;
00331 #endif
00332 } SHMINFO;
00333
00342 typedef struct sbdgraphicsevent
00343 {
00344 struct sbdgraphicsevent *next;
00345 INT16 fd;
00346 INT8 type;
00347 char key;
00348 float x, y;
00349 } SBD_GRAPHICS_EVENT;
00350
00351
00352
00353 typedef void (*DELFUNC) (void *, INT32);
00354
00359 typedef INT16 SBDWINDOW;
00360 #endif