1*16553Sslatteng /* @(#)gremlin.h 1.3 05/29/84 211965Sslatteng * 311965Sslatteng * 411965Sslatteng * This file contains standard definitions used by the gremlin program. 511965Sslatteng * 611965Sslatteng * (modified from software written by John Ousterhout for the caesar 711965Sslatteng * program) 811965Sslatteng */ 911965Sslatteng 1011965Sslatteng #include <stdio.h> 1111965Sslatteng #include <math.h> 1211965Sslatteng 1311965Sslatteng #define TRUE 1 1411965Sslatteng #define FALSE 0 1511965Sslatteng 1611965Sslatteng #define nullelt -1 1711965Sslatteng #define nullpt -1 1811965Sslatteng #define nullun NULL 1911965Sslatteng 2011965Sslatteng #define rmask1 00 2111965Sslatteng #define rmask2 00 2211965Sslatteng #define rmask3 00 2311965Sslatteng 2411965Sslatteng #define bordstyle 5 2511965Sslatteng #define gridstyle 9 2611965Sslatteng #define pointstyle 10 2711965Sslatteng #define eraseany 0 2811965Sslatteng 2911965Sslatteng #define gridmask 0200 3011965Sslatteng #define pointmask 0100 3111965Sslatteng #define setmask 040 3211965Sslatteng #define textmask 07 3311965Sslatteng #define linemask 07 3411965Sslatteng 3511965Sslatteng #define pointchar 1 3611965Sslatteng #define halfpoint 3 3711965Sslatteng #define numspace 6 3811965Sslatteng 3911965Sslatteng #define BOTLEFT 0 4011965Sslatteng #define BOTRIGHT 1 4111965Sslatteng #define CENTCENT 2 4211965Sslatteng #define VECTOR 3 4311965Sslatteng #define ARC 4 4411965Sslatteng #define CURVE 5 45*16553Sslatteng #define POLYGON 6 4611965Sslatteng #define TOPLEFT 10 4711965Sslatteng #define TOPCENT 11 4811965Sslatteng #define TOPRIGHT 12 4911965Sslatteng #define CENTLEFT 13 5011965Sslatteng #define CENTRIGHT 14 5111965Sslatteng #define BOTCENT 15 5211965Sslatteng #define TEXT(t) ( (t <= CENTCENT) || (t >= TOPLEFT) ) 5311965Sslatteng /* WARNING * WARNING * WARNING * WARNING * WARNING * WARNING * WARNING 5411965Sslatteng * The above (TEXT) test is dependent on the relative values of the 5511965Sslatteng * constants and will have to change if these values change or if new 5611965Sslatteng * commands are added with value greater than BOTCENT 5711965Sslatteng */ 5811965Sslatteng 5911965Sslatteng #define NOADJ 0 6011965Sslatteng #define HORZ 1 6111965Sslatteng #define VERT 2 6211965Sslatteng #define MAN 3 6311965Sslatteng 6411965Sslatteng #define NUSER 4 6511965Sslatteng #define NFONTS 4 6611965Sslatteng #define NBRUSHES 6 6711965Sslatteng #define NSIZES 4 6811965Sslatteng #define NJUSTS 9 6911965Sslatteng 7011965Sslatteng #define himask linemask 7111965Sslatteng #define hicolor 6 7211965Sslatteng 7311965Sslatteng #define ADD 1 7411965Sslatteng #define DELETE 2 7511965Sslatteng #define MOD 3 7611965Sslatteng 7711965Sslatteng /* The following represents the maximum distance a point may be from another 7811965Sslatteng * and still be affected by gravity. The distance is represented as the 7911965Sslatteng * square of the number of pixels (32) of the actual distance. 8011965Sslatteng */ 8111965Sslatteng 8211965Sslatteng #define MAXGDIST 32*32 8311965Sslatteng 8411965Sslatteng typedef struct point 8511965Sslatteng { 8611965Sslatteng float x, y; 8711965Sslatteng struct point *nextpt; 8811965Sslatteng } POINT; 8911965Sslatteng 9011965Sslatteng typedef struct elmt 9111965Sslatteng { 9211965Sslatteng int type, brushf, size, textlength; 9311965Sslatteng char *textpt; 9411965Sslatteng POINT *ptlist; 9511965Sslatteng struct elmt *nextelt, *setnext; 9611965Sslatteng } ELT; 9711965Sslatteng 9811965Sslatteng 9911965Sslatteng typedef struct unlt 10011965Sslatteng { 10111965Sslatteng int action; 10211965Sslatteng ELT *(*dbase), *oldelt, *newelt; 10311965Sslatteng struct unlt *nextun; 10411965Sslatteng } UNELT; 10511965Sslatteng 10611965Sslatteng typedef struct { 10711965Sslatteng int tx_x; /* First column of field */ 10811965Sslatteng int tx_y; /* Row containing field */ 10911965Sslatteng int tx_size; /* Size of field in characters */ 11011965Sslatteng } TXFIELD; 11111965Sslatteng 112