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