#ifndef _PARTIVIEW_C_H
#define _PARTIVIEW_C_H


#ifdef __cplusplus
extern "C" {
#endif

#ifndef CONST
# ifdef __cplusplus
# define CONST const
# else
# define CONST
# endif
#endif

struct stuff ;

#define MAXSTUFF 24
extern struct stuff *stuffs[MAXSTUFF];

extern int parti_readpath( struct stuff *st, CONST char *fname );
extern void parti_play( struct stuff *st, CONST char *rate );
extern int parti_frame( struct stuff *st, CONST char *frameno, CONST struct wfpath **pp );
extern int parti_setframe( struct stuff *st, int fno );
extern float parti_focal( char *newfocal );
extern float parti_fovy( char *newfovy );
extern int   parti_ortho( char *newortho );
extern char *parti_clip( CONST char *znear, CONST char *zfar );
extern char *parti_bgcolor( CONST char *rgb );
extern char *parti_stereo( CONST char *stereosep );
extern float parti_getcensize();
extern void parti_censize( float v );
extern void parti_getcenter( Point *center );
extern void parti_center( CONST Point * );
extern void parti_getc2w( Matrix *c2w );
extern void parti_setc2w( CONST Matrix *c2w );
extern void parti_geto2w( struct stuff *st, int objno, Matrix *obj2world );
extern void parti_seto2w( struct stuff *st, int objno, CONST Matrix *obj2world );
extern int  parti_object( CONST char *objname, struct stuff **newst );
extern int  parti_move( CONST char *onoffobj, struct stuff **newst );
extern void parti_redraw(void);
extern void parti_update(void);

#ifndef CAVEMENU
extern void parti_asyncfd( int fd );
extern void parti_unasyncfd( int fd );
extern int  parti_snapset( char *basename, char *frameno );
extern int  parti_snapshot( char *snapinfo );
#endif

extern int msg( CONST char *fmt, ... );

#ifdef __cplusplus
};
#endif

#endif /*!_PARTIVIEW_C_H*/