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