Filewatcher File Search
FTP Search
  
Directory 
  
Content Search 
   
pkg://vogl-1.2.8-1.i386.rpm:118525/usr/local/include/vogl.h  info  downloads

#ifndef vogl_h 

#ifdef PC	/* Stupid pox head crap */
char	*vallocate();
char	*malloc();
#endif

/*
 * VOGL is always defined if a header file is from the 
 * VOGL library. In cases where you do use some VOGL
 * initialisation routines like vinit, just put #ifdef VOGL...
 * around.
 */
#ifndef VOGL
#define	VOGL
#endif

#ifndef TRUE
#define	TRUE	1
#endif

#ifndef FALSE
#define	FALSE	0
#endif

/*
 * Misc defines...
 */
#define	FLAT	0
#define SMOOTH	1
#define GD_XPMAX 1
#define GD_YPMAX 2

/*
 * 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

/*
 * when (if ever) we need the precision
 */
#ifdef DOUBLE
#define	float	double
#endif

/*
 * How to convert degrees to radians
 */
#define	PI	3.14159265358979
#define D2R	(PI / 180.0)

/*
 * miscellaneous typedefs and type defines
 */
typedef float	Vector[4];
typedef float	Matrix[4][4];
typedef float	Tensor[4][4][4];
typedef short	Angle;
typedef float	Coord;
typedef long	Icoord;
typedef short	Scoord;
typedef long	Object;
typedef short	Screencoord;
typedef long	Boolean;
typedef unsigned short	Linestyle;

typedef unsigned short	Device;

typedef unsigned short	Colorindex;


/*
 * when register variables get us into trouble
 */
#ifdef NOREGISTER
#define	register
#endif

/*
 * max number of vertices in a ploygon
 */
#define	MAXVERTS	128

/*
 * object definitions
 */
#define MAXENTS		101		/* size of object table */
#define	MAXTOKS		100		/* num. of tokens alloced at once in
					   an object  */

/*
 * Polygon fill modes for "polymode"
 */
#define PYM_POINT	0
#define PYM_LINE	0
#define PYM_FILL	1
#define PYM_HOLLOW	1

/*
 * functions which can appear in objects
 */
#define	ARC		1
#define	CALLOBJ		3
#define	CIRCLE		5
#define	CLEAR		6
#define	COLOR		7
#define	DRAW		8
#define	DRAWSTR		10
#define	VFONT		12
#define	LOADMATRIX	15
#define	MAPCOLOR	16
#define	MOVE		17
#define	MULTMATRIX	18
#define	POLY		19
#define	POPATTRIBUTES	22
#define	POPMATRIX	23
#define	POPVIEWPORT	24
#define	PUSHATTRIBUTES	25
#define	PUSHMATRIX	26
#define	PUSHVIEWPORT	27
#define	RCURVE		28
#define	RPATCH		29
#define	SECTOR		30
#define	VIEWPORT	33
#define	BACKBUFFER	34
#define	FRONTBUFFER	35
#define	SWAPBUFFERS	36
#define	BACKFACING	37
#define	TRANSLATE	38
#define	ROTATE		39
#define	SCALE		40

#define	ARCF		41
#define	CIRCF		42
#define	POLYF		43
#define	RECTF		44
#define	POLYMODE	45
#define	CMOV		46
#define	LINESTYLE	47
#define	LINEWIDTH	48

/*
 * Non standard call...
 */
#define	VFLUSH		70

/*
 * States for bgn* and end* calls
 */
#define	NONE		0	/* Just set current spot */
#define	VPNT		1	/* Draw dots		 */
#define	VLINE		2	/* Draw lines		 */
#define	VCLINE		3	/* Draw closed lines	 */
#define	VPOLY		4	/* Draw a polygon 	 */
#define VTMESH		5       /* Draw a triangular mesh*/
#define VQSTRIP		6       /* Draw a quadralateral mesh*/

/*
 * data types for object tokens
 */
typedef union tk {
	int		i;
	float		f;
} Token;

typedef struct tls {
	int		count;
	Token		*toks;
	struct tls	*next;
} TokList;

/*
 * double buffering modes.
 */
#define	SINGLE		1

/*
 * attributes
 */
typedef struct {
	char		backface,
			mode;			/* Which mode are we in */
	int		color;
	int		fontnum;
	Linestyle	ls;			
	short		lw;			/* Linewidth */
} Attribute;

/*
 * viewport
 */
typedef struct vp {
	float	left;
	float	right;
	float	bottom;
	float	top;
} Viewport; 

/*
 * stacks
 */
typedef	struct	ms {	/* Matrix stack entries	*/
	Matrix		m;
	struct	ms	*back;
} Mstack;

typedef	struct	as {	/* Attribute stack entries */
	Attribute	a;
	struct	as	*back;
} Astack;

typedef	struct	vs {	/* Viewport stack entries */
	Viewport	v;
	struct	vs	*back;
} Vstack;

/*
 * vogle device structures
 */
typedef struct dev {
	char	*devname;		/* name of device */
	char	*large,			/* name of large font */
		*small;			/* name of small font */
	int	(*Vbackb)(),		/* Set drawing in back buffer */
		(*Vchar)(),		/* Draw a hardware character */
		(*Vcheckkey)(),		/* Ckeck if a key was hit */
		(*Vclear)(),		/* Clear the screen to current color */
		(*Vcolor)(),		/* Set current color */
		(*Vdraw)(),		/* Draw a line */
		(*Vexit)(),		/* Exit graphics */
		(*Vfill)(),		/* Fill a polygon */
		(*Vfont)(),		/* Set hardware font */
		(*Vfrontb)(),		/* Set drawing in front buffer */
		(*Vgetkey)(),		/* Wait for and get the next key hit */
		(*Vinit)(),		/* Initialise the device */
		(*Vlocator)(),		/* Get mouse/cross hair position */
		(*Vmapcolor)(),		/* Set color indicies */
		(*Vsetls)(),		/* Set linestyle */
		(*Vsetlw)(),		/* Set linewidth */
		(*Vstring)(),		/* Draw a hardware string */
		(*Vswapb)(),		/* Swap front and back buffers */
		(*Vsync)();		/* Sync display */
} DevEntry;

typedef struct vdev {
	char		initialised,
			clipoff,
			inobject,
			inpolygon,
			fill,			/* polygon filling */
			cpVvalid,		/* is the current device position valid */
			sync,			/* Do we syncronise the display */
			inbackbuffer,		/* are we in the backbuffer */
			clipplanes;		/* active clipping planes */
	void		(*pmove)(),		/* Polygon moves */
			(*pdraw)();		/* Polygon draws */
	TokList		*tokens;		/* ptr to list of tokens for current object */
	Mstack		*transmat;		/* top of transformation stack */
	Astack		*attr;			/* top of attribute stack */
	Vstack		*viewport;		/* top of viewport stack */
	float		hheight, hwidth;	/* hardware character height, width */
	Vector		cpW,			/* current postion in world coords */
			cpWtrans,		/* current world coords transformed */
			upvector;		/* world up */
	int		depth,			/* # bit planes on screen */
			maxVx, minVx,
			maxVy, minVy,
			sizeX, sizeY, 		/* size of square on screen */
			sizeSx, sizeSy,		/* side in x, side in y (# pixels) */
			cpVx, cpVy;
	DevEntry	dev;
	float		savex,			/* Where we started for v*() */
			savey,
			savez;
	char		bgnmode;		/* What to do with v*() calls */
	int		save;			/* Do we save 1st v*() point */

	char		*wintitle;		/* window title */

	char		*devname;		/* pointer to device name */

	Matrix		tbasis, ubasis, *bases; /* Patch stuff */
	
	char		*enabled;		/* pointer to enabled devices mask */
	int		maxfontnum;

	char		alreadyread;		/* queue device stuff */
	char		kbdmode;		/* are we in keyboard mode */
	char		mouseevents;		/* are mouse events enabled */
	char		kbdevents;		/* are kbd events enabled */
	int		devno, data;

	int		concave;		/* concave polygons? */
} VDevice;

extern VDevice	vdevice;		/* device structure */

#define	V_X	0			/* x axis in cpW */
#define	V_Y	1			/* y axis in cpW */
#define	V_Z	2			/* z axis in cpW */
#define	V_W	3			/* w axis in cpW */

/*
 * function definitions
 */

/*
 * arc routines
 */
extern void	arcprecision(int);
extern void	circleprecision(int);
extern void	arcprecision(int);
extern void	arc(Coord, Coord, Coord, Angle, Angle);
extern void	arcs(Scoord,Scoord,Scoord,Angle,Angle);
extern void	arci(Icoord,Icoord,Icoord,Angle,Angle);
extern void	arcf(Coord, Coord, Coord, Angle, Angle);
extern void	arcfs(Scoord,Scoord,Scoord,Angle,Angle);
extern void	arcfi(Icoord,Icoord,Icoord,Angle,Angle);
extern void	circ(Coord, Coord, Coord);
extern void	circs(Scoord,Scoord,Scoord);
extern void	circi(Icoord,Icoord,Icoord);
extern void	circf(Coord, Coord, Coord);
extern void	circfs(Scoord,Scoord,Scoord);
extern void	circfi(Icoord,Icoord,Icoord);

/*
 * attr routines
 */
extern void	popattributes(void);
extern void	pushattributes(void);

/*
 * curve routines
 */
extern void	curvebasis(short);
extern void	curveprecision(short);
extern void	rcrv(Coord[4][4]);
extern void	crv(Coord[4][3]);
extern void	crvn(long, Coord[][3]);
extern void	rcrvn(long, Coord[][4]);
extern void	curveit(short);

/*
 * draw routines
 */
extern void	draw(Coord, Coord, Coord);
extern void	draws(Scoord,Scoord,Scoord);
extern void	drawi(Icoord,Icoord,Icoord);
extern void	draw2(Coord, Coord);
extern void	draw2s(Scoord,Scoord);
extern void	draw2i(Icoord,Icoord);
extern void	rdr(Coord, Coord, Coord);
extern void	rdrs(Scoord,Scoord,Scoord);
extern void	rdri(Icoord,Icoord,Icoord);
extern void	rdr2(Coord, Coord);
extern void	rdr2s(Scoord,Scoord);
extern void	rdr2i(Icoord,Icoord);
extern void	bgnline(void);
extern void	endline(void);
extern void	bgnclosedline(void);
extern void	endclosedline(void);

/*
 * device routines
 */
extern void	qdevice();         /*  in vodevice.h auch deklariert !!?! */
extern void	unqdevice();       /*  in vodevice.h auch deklariert !!?! */
extern long	qread(short *);
extern void	qreset(void);
extern long	qtest(void);
extern Boolean	isqueued(short *);

extern void	gexit(void);
extern void	gconfig(void);
extern void	shademodel();              /*AS not in vogl.doc ??*/
extern long	getgdesc();                /*AS not in vogl.doc ?*/
extern long	winopen(char *);
extern void	ginit(void);
extern void	gconfig(void);
extern long	getvaluator(Device);
extern Boolean	getbutton(Device);
extern void	clear(void);
extern void	colorf(float);
extern void	color(Colorindex);
extern void	mapcolor(Colorindex, short, short, short);
extern long	getplanes(void);

extern void	vinit(char *);
extern void	voutput(char *);
extern void	verror();                /*AS not in vogl.doc ? */
extern void	vnewdev(char *);
extern char	*vgetdev();              /*AS not in vogl.doc ? */

/*
 * mapping routines
 */
extern int	WtoVx();               /*AS not in vogl.doc ? */
extern int	WtoVy();               /*AS not in vogl.doc ? */
extern void	CalcW2Vcoeffs();       /*AS not in vogl.doc ? */

/*
 * general matrix and vector routines
 */
extern void	mult4x4();
extern void	copymatrix();
extern void	identmatrix();
extern void	copytranspose();

extern void	multvector();
extern void	copyvector();
extern void	premultvector();

/*
 * matrix stack routines
 */
extern void	getmatrix();
extern void	popmatrix(void);
extern void	loadmatrix();
extern void	pushmatrix(void);
extern void	multmatrix();

/*
 * move routines
 */
extern void	move(Coord,Coord,Coord);
extern void	moves(Scoord,Scoord,Scoord);
extern void	movei(Icoord,Icoord,Icoord);
extern void	move2(Coord,Coord);
extern void	move2s(Scoord,Scoord);
extern void	move2i(Icoord,Icoord);
extern void	rmv(Coord,Coord,Coord);
extern void	rmvs(Scoord,Scoord,Scoord);
extern void	rmvi(Icoord,Icoord,Icoord);
extern void	rmv2(Coord,Coord);
extern void	rmv2s(Scoord,Scoord);
extern void	rmv2i(Icoord,Icoord);

/*
 * object routines
 */
extern Boolean	isobj(Object n);
extern long	genobj(void);
extern void	delobj(Object n);
extern void	makeobj(Object n);
extern void	callobj(Object n);
extern void	closeobj(void);
extern long	getopenobj();             /* AS : not in vogl.doc */
extern Token	*newtokens();             /* AS : not in vogl.doc */

/*
 * patch routines.
 */
extern void	defbasis(short, Matrix);
extern void	patchbasis(long tid, long uid);
extern void	patchcurves(long nt, long nu);
extern void	patchprecision(long tseg, long useg);
extern void	patch(Matrix gx, Matrix gy, Matrix gz);
extern void	rpatch(Matrix gx, Matrix gy, Matrix gz, Matrix gw);

/*
 * point routines
 */
extern void	pnt(Coord x, Coord y, Coord z);
extern void	pnts(Scoord x, Scoord y, Scoord z);
extern void	pnti(Icoord x, Icoord y, Icoord z);
extern void	pnt2(Coord x, Coord y);
extern void	pnt2s(Scoord x, Scoord y);
extern void	pnt2i(Icoord x, Icoord y);
extern void	bgnpoint(void);
extern void	endpoint(void);

/*
 * v routines
 */
extern void	v4f(float[4]);
extern void	v3f(float[3]);
extern void	v2f(float[2]);
extern void	v4d(double[4]);
extern void	v3d(double[3]);
extern void	v2d(double[2]);
extern void	v4i(long[4]);
extern void	v3i(long[3]);
extern void	v2i(long[2]);
extern void	v4s(short[4]);
extern void	v3s(short[3]);
extern void	v2s(short[2]);

/*
 * polygon routines.
 */
extern void	concave();
extern void	backface(Boolean);
extern void	frontface(Boolean);
extern void	polymode(long);
extern void	poly2(long n, Coord[][2]);
extern void	poly2i(long n, Icoord[][2]);
extern void	poly2s(long n, Scoord[][2]);
extern void	polyi(long n, Icoord[][3]);
extern void	polys(long n, Scoord[][3]);
extern void	polf2(long n, Coord[][2]);
extern void	polf2i(long n, Icoord[][2]);
extern void	polf2s(long n, Scoord[][2]);
extern void	polfi(long n, Icoord[][3]);
extern void	polfs(long n, Scoord[][3]);
extern void	poly(long n, Coord[][3]);
extern void	polf(long n, Coord[][3]);
extern void	pmv();
extern void	pmvi();
extern void	pmv2i();
extern void	pmvs();
extern void	pmv2s();
extern void	pmv2();
extern void	pdr();
extern void	rpdr();
extern void	rpdr2();
extern void	rpdri();
extern void	rpdr2i();
extern void	rpdrs();
extern void	rpdr2s();
extern void	rpmv();
extern void	rpmv2();
extern void	rpmvi();
extern void	rpmv2i();
extern void	rpmvs();
extern void	rpmv2s();
extern void	pdri();
extern void	pdr2i();
extern void	pdrs();
extern void	pdr2s();
extern void	pdr2();
extern void	pclos();
extern void	bgnpolygon(void);
extern void	endpolygon();

/*
 * rectangle routines
 */
extern void	rect(Coord,Coord,Coord,Coord);
extern void	recti(Icoord,Icoord,Icoord,Icoord);
extern void	rects(Scoord,Scoord,Scoord,Scoord);
extern void	rectf(Coord,Coord,Coord,Coord);
extern void	rectfi(Icoord,Icoord,Icoord,Icoord);
extern void	rectfs(Scoord,Scoord,Scoord,Scoord);

/*
 * tensor routines
 */
extern void multtensor();
extern void copytensor();
extern void premulttensor();
extern void copytensortrans();

/*
 * text routines
 */
extern void	font(short fontid);
extern void	charstr();
extern void	cmov(Coord x, Coord y, Coord z);
extern void	cmov2(Coord x, Coord y);
extern void	cmovi(Icoord,Icoord,Icoord);
extern void	cmovs(Scoord,Scoord,Scoord);
extern void	cmov2i(Icoord,Icoord);
extern void	cmov2s(Scoord,Scoord);
#ifdef OLD_GL
extern long	getwidth();
#endif
extern long	getheight(void);
extern long	strwidth(char *s);
extern void	getcpos( Scoord *ix,  Scoord *iy);

/*
 * transformation routines
 */
extern void	scale(float x, float y, float z);
extern void	translate(Coord x,Coord y, Coord z);
extern void	rotate(Angle, char axis);
extern void	rot(float angle, char axis);

/*
 * window definition routines
 */
extern void	ortho(Coord,Coord,Coord,Coord,Coord,Coord);
extern void	ortho2(Coord,Coord,Coord,Coord);
extern void	lookat(Coord,Coord,Coord,Coord,Coord,Coord,Angle);
extern void	window(Coord,Coord,Coord,Coord,Coord,Coord);
extern void	polarview(Coord,Angle,Angle,Angle);
extern void	perspective(Angle,float,Coord,Coord);

/*
 * routines for manipulating the viewport
 */
extern void	viewport(Screencoord,Screencoord,Screencoord,Screencoord);
extern void	popviewport(void);
extern void	pushviewport(void);
extern void getviewport(Screencoord*,Screencoord*,Screencoord*,Screencoord*);

/*
 * routines for retrieving the graphics position
 */
extern void	getgp();
extern void	getgpos(Coord *x, Coord *y, Coord *z, Coord *w);

/*
 * routines for handling the buffering
 */
extern void	backbuffer(Boolean yesno);
extern void	frontbuffer(Boolean yesno);
extern void	swapbuffers(void);
extern void	doublebuffer(void);
/*AS extern void singlebuffer(void);*/

/*
 * routines for window sizing and positioning
 */
extern void	prefsize(long, long);
extern void	prefposition(long, long, long, long);

/*
 * Misc control routines
 */
extern void	vsetflush(int);
extern void	vflush(void);
#endif /* vogl_h */
Results 1 - 1
Help - FTP Sites List - Software Dir.
Searching half a billion files worldwide
© 1997-2009 MARUHN Internet Solutions