/* gsurf.h
Bill Brown, UI GMSL - USACERL
*/
#define GS_UNIT_SIZE 1000.
#define BETWEEN(x, a, b) (((x) > (a) && (x) < (b)) || ((x) > (b) && (x) < (a)))
#define GS_NEAR_EQUAL(x, y, ratio) ((x) == (y) || ((x) == 0.0? \
GS_BETWEEN((x), (y)+(y)*(ratio), (y)-(y)*(ratio)):\
GS_BETWEEN((y), (x)+(x)*(ratio), (x)-(x)*(ratio))))
/* current maximums */
#define MAX_SURFS 12
#define MAX_VECTS 12
#define MAX_SITES 12
#define MAX_VOLS 12
#define MAX_DSP 12
#define MAX_ATTS 7
#define MAX_LIGHTS 3
#define MAX_CPLANES 6
/* surface display modes */
#define DM_GOURAUD 0x00000100
#define DM_FLAT 0x00000200 /* defined for symmetry */
#define DM_FRINGE 0x00000010
#define DM_WIRE 0x00000001
#define DM_COL_WIRE 0x00000002
#define DM_POLY 0x00000004
#define DM_WIRE_POLY 0x00000008
#define WC_COLOR_ATT 0xFF000000
#define IFLAG unsigned int
/* surface attribute ***descriptors*** */
#define ATT_NORM 0 /* library use only */
#define ATT_TOPO 1
#define ATT_COLOR 2
#define ATT_MASK 3
#define ATT_TRANSP 4
#define ATT_SHINE 5
#define ATT_EMIT 6
#define LEGAL_ATT(a) (a >= 0 && a < MAX_ATTS)
/* surface attribute **sources** */
#define NOTSET_ATT 0
#define MAP_ATT 1
#define CONST_ATT 2
#define FUNC_ATT 3
#define LEGAL_SRC(s) (s==NOTSET_ATT||s==MAP_ATT||s==CONST_ATT||s==FUNC_ATT)
/* site markers */
#define ST_X 1
#define ST_BOX 2
#define ST_SPHERE 3
#define ST_CUBE 4
#define ST_DIAMOND 5
#define ST_DEC_TREE 6
#define ST_CON_TREE 7
#define ST_ASTER 8
#define ST_GYRO 9
/* site attribute modes (what attribute of marker category is used for) */
/* TODO: may want to make these OR'able */
#define ST_ATT_NONE 0x00000000
#define ST_ATT_COLOR 0x00000001
#define ST_ATT_SIZE 0x00000002
#define ST_ATT_MARKER 0x00000004
/* Buffer modes */
#define GSD_FRONT 1
#define GSD_BACK 2
#define GSD_BOTH 3
/* fence colormodes */
#define FC_OFF 0
#define FC_ABOVE 1
#define FC_BELOW 2
#define FC_BLEND 3
#define FC_GREY 4
/* legend types */
#define LT_DISCRETE 0x00000100
#define LT_CONTINUOUS 0x00000200
#define LT_LIST 0x00000010
/* list automatically discrete */
#define LT_RANGE_LOWSET 0x00000001
#define LT_RANGE_HISET 0x00000002
#define LT_RANGE_LOW_HI 0x00000003
#define LT_INVERTED 0x00000008
#define LT_SHOW_VALS 0x00001000
#define LT_SHOW_LABELS 0x00002000
extern float GS_global_exag();
extern int *GS_get_surf_list();
extern int *GV_get_vect_list();
extern int *GP_get_site_list();
extern void *GS_Get_ClientData();