#define MAXSTR 512

#define MAXPRIMITIVES 10
#define POLYGON 0
#define SPHERE 1
#define BUBBLE 2
#define CYLINDER 3
#define TUBE 4
#define CONE 5
#define CUP 6
#define RING 7
#define SOURCE 8
#define INSTANCE 9

#define MAXMATERIALS 15
#define LIGHT 0
#define ILLUM 1
#define GLOW 2
#define SPOTLIGHT 3
#define PLASTIC 4
#define MIRROR 5
#define METAL 6
#define TRANS 7
#define DIELECTRIC 8
#define INTERFACE 9
#define GLASS 10
#define PLASFUNC 11
#define METFUNH 12
#define PLASDATA 13
#define METDATA 14

#define MAXTEXTURES 2
#define MAXPATTERNS 7
#define MAXMIXTURES 3
#define MaxObjects 1000
#define MAXMODIFIERS 100
typedef struct {
        short nsargs;
        char **sarg;
        short niargs;
        long *iarg;
        short nfargs;
        double *farg;
}FUNARGS;
typedef struct {
        short omod[MAXMODIFIERS];
        short otyp[MAXMODIFIERS];
        char *mnames[MAXMODIFIERS];
        FUNARGS margs[MAXMODIFIERS];
}MTable;
typedef struct{
        short omod;
        short otyp;
        char *onam;
        FUNARGS oargs;
#if defined(RADFILTER)
	float area;
#endif
} OBJ;

extern char *surface_table[];
extern char *material_table[];
extern MTable modifier_table;
extern int nmodifiers;
extern OBJ obj[];
extern int nobjects;
extern float bound_min_x,bound_min_y,bound_min_z;
extern float bound_max_x,bound_max_y,bound_max_z;
#if defined(RADFILTER)
extern float cum_area;
#endif
/*
 * standard colour indices
 */
#define	BLACK		0
#define	RED		1
#define	GREEN		2
#define	YELLOW		3
#define	BLUE		4
#define	MAGENTA		5
#define	CYAN		6
#define	WHITE		7

/*
 * miscellaneous typedefs and type defines
 */
typedef float	Vector[4];
typedef float	Matrix[4][4];
typedef struct Point3Struct {   /* 3d point */
        double x, y, z;
        } Point3;
typedef Point3 Vector3;
#define DTOR		0.017453	/* convert degrees to radians */
#define PI		3.141592

#define Large		1e+30
#define Small		1e-30

/*
 * view types
 */
#define ONE 1
#define FOUR 4

#define Maxviews 5
#define MaxviewsX2 10

#define FRONT 0
#define SIDE 1
#define TOP 2
#define ISO 3
#define PER 4

#define ON 1
#define TRUE 1
#define OFF 0
#define ON 1

#define MAXSIZE 248
#define LARGE 1e30
