#ifndef PROTO

/* prototypes of all routines for vogle */

/* source file arcs.c */

void arcprecision( int );
void circleprecision( int );
void arc( float, float, float, float, float );
void sector( float, float, float, float, float );
void circle( float, float, float );

/* source file attr.c */

void  pushattributes();
void popattributes();
#ifdef DEBUG
  void printattribs( char * );
#endif

/* source file aspect.c */

float getaspect();
void getdisplaysize( float *, float * );
void getfactors( float *, float * );

/* source file buffer.c */

int backbuffer();
void frontbuffer();
int swapbuffers();

/* source file pref.c */

void prefposition( int, int );
void prefsize( int, int );
void getprefposandsize( int *, int *, int *, int * );

/* source file clip.c */

void clip( register Vector, register Vector );
int MakeEdgeCoords( int, Vector );
void quickclip( register Vector, register Vector );
void clipping( int );

/* source file curves.c */

void curvebasis( Matrix );
void curveprecision( int );
void rcurve( Matrix );
void curve( float [4][3] );
void drcurve( int, Matrix );
void curven( int, float [][3] );

/* source file draw.c */

void setdash( float );
void linestyle( unsigned char * );
void dashline( register Vector, register Vector );

void draw( float, float, float );
void draw2( float, float );
void rdraw2( float, float );
void sdraw2( float, float );
void rsdraw2( float, float );

/* source file drivers.c */

int voutput( char * );    /* changed by dam to make it more civilized */
void verror( char * );   
void vinit( char * );
void vnewdev( char * );
char *vgetdev( char * );
int getkey();
int checkkey();
int locator( float *, float * );
int slocator( float *, float * );
void clear();
void vexit();
void color( int );
void mapcolor( int, short, short, short );
int getdepth();
void vsetflush( int );
void vflush();

/* source file valloc.c */

char *vallocate( unsigned );

/* source file viewing.c */

void polarview( float, float, float, float );
void up( float, float, float );
void normallookat( float, float, float, float, float, float );
void lookat( float, float, float, float, float, float, float );
void perspective( float, float, float, float );
void window( float, float, float, float, float, float );
void ortho( float, float, float, float, float, float );
void ortho2( float, float, float, float );

/* source file viewp.c */

void pushviewport();
void popviewport();
void viewport( float, float, float, float );
void getviewport( float *, float *, float *, float * );

/* source file mapping.c */

void VtoWxy( float, float, float *, float * );
void CalcW2Vcoeffs();
int WtoVx( float [] );
int WtoVy( float [] );

/* source file matrix.c */

void copyvector( register Vector, register Vector );
void copymatrix( register Matrix, register Matrix );
void copytranspose( register Matrix, register Matrix );
void getmatrix( Matrix );
void pushmatrix();
void popmatrix();
void loadmatrix( Matrix );
void mult4x4( register Matrix, register Matrix, register Matrix );
void multmatrix( Matrix );
void identmatrix( Matrix );
void multvector( register Vector, register Vector, register Matrix );
void premultvector( register Vector, register Vector, register Matrix );
#ifdef DEBUG
  void printmat( char *, Matrix );
  void printvect( char *, Vector );
#endif

/* source file move.c */

void move( float, float, float );
void move2( float, float );
void rmove( float, float, float );
void rmove2( float, float );
void smove2( float, float );
void rsmove2( float, float );

/* source file objects.c */

void makeobj( int );
void closeobj();
void delobj( int );
int genobj();
int getopenobj();
void loadobj( int, char * );
void saveobj( int, char * );
void callobj( int );
int isobj( int );

/* source file patches.c */

void patchbasis( Matrix, Matrix );
void patchprecision( int, int );
void patchcurves( int, int );
void patch( Matrix, Matrix, Matrix );
void rpatch( Matrix, Matrix, Matrix, Matrix );
void transformtensor( Tensor, Matrix );
void drpatch( Tensor, int, int, int, int, int, int );

/* source file points.c */

void point( float, float, float );
void point2( float, float );
void spoint2( float, float );

/* source file polygons.c */

void polyfill( int );
void polyhatch( int );
void hatchang( float );
void hatchpitch( float );
void backfacedir( int );
void backface( int );
void polyobj( int, Token [] );
void poly2( int, float [][2] );
void poly( int, float [][3] );
void pmove( float, float, float );
void pdraw( float, float, float );
void makepoly();
void closepoly();

/* source file rect.c */

void rect( float, float, float, float );

/* source file tensor.c */

void premulttensor( Tensor, Matrix, Tensor );
void multtensor( Tensor, Matrix, Tensor );
void copytensor( Tensor, Tensor );
void copytensortrans( Tensor, Tensor );

/* source file text.c */

void font( char * );
int numchars();
int hershfont( char * );
void getcharsize( char, float *, float * );
void drawchar( int );
void drawhardchar( int );
void textsize( float, float );
float getfontwidth();
float getfontheight();
void getfontsize( float *, float * );
void drawstr( char * );
float strlength( char * );
void boxtext( float, float, float, float, char * );
void boxfit( float, float, int );
void centertext( int );

void textjustify( unsigned );
void xcentertext();
void ycentertext();
void leftjustify();
void rightjustify();
void topjustify();
void bottomjustify();

void fixedwidth( int );
void textang( float );

/* source file newtoken.c */

Token *newtokens( int );

/* source file trans.c */

void translate( float, float, float );
void rotate( float, char );

/* source file scale.c */

void scale( float, float, float );

/* source file getgp.c */

void getgp( float *, float *, float * );
void getgp2( float *, float * );
void getgpt( float *, float *, float *, float * );
void sgetgp2( float *, float * );

/* source file yobbaray.c */

void yobbarays( int );

/* source file getstrin.c */

int getstring( int, char * );


/* source file /drivers/ps.c */

void _CPS_devcpy();
void _PS_devcpy();
void _PSP_devcpy();
void _PCPS_devcpy();
void _LASER_devcpy();

/* source file drivers/hpdxy.c */

void _HPGL_A2_devcpy();
void _HPGL_A3_devcpy();
void _HPGL_A4_devcpy();
void _HPGL_A1_devcpy();
void _DXY_devcpy();

/* source file drivers/ibmpc/vga.c */

int vga_init();
int vga_exit();
void _vga_devcpy();

/* source file drivers/ibmpc/vega_col.c */

void vega_color( int );
void vega_setpal();    

/* source file drivers/ibmpc/vega_dra.c */

void vega_draw( register int, register int );

/* source file drivers/ibmpc/vega_tex.c */

void vega_string( char * );
void vega_char( char );
void vegachar( int, int, int, int, int );
int vega_font( char * );

/* source file drivers/ibmpc/ega.c */

int ega_init();
int ega_exit();
void _ega_devcpy();

/* source file drivers/ibmpc/pc_text.c */

void pc_string( char * );
int pc_font( char * );

/* source file drivers/ibmpc/pc_locat.c */

void pc_locinit( int, int );     
int pc_locator( int *, int * ); 

/* source file drivers/ibmpc/pc_fill.c */

void pc_fill( int, int *, int * );  
int fill_tri( int [], int [] );

/* source file drivers/ibmpc/pc_getke.c */

int pc_getkey();         
int pc_checkkey();    

/* source file drivers/ibmpc/setmode.c    */

int setmode( int );  

/* source file drivers/ibmpc/watcom.c    */

void egaschar( int, int, int, int ); 
void egalchar( int, int, int, int );
int ismouse( int, int );
void showmouse();
int readmouse( int*,int* );
void vega_clear(); 
void vega_backbuf();  
void vega_frontbuf(); 
void vega_swapbuf(); 
void egaline( int, int, int, int, int );
int zsetup();

/* source file \drivers\ibmpc\mswin.c */



#endif
