/*
	usrlib.h
*/

typedef	struct {
	int		x,y;
	int		dx,dy;
	char	btn1,btn2;
} MSDAT;

typedef struct {
	int		year,mon,day, hour,min,sec;
} TIME;

#define	OFF		(char)0
#define	ON		(char)1
#define	OFFON	(char)2
#define	ONOFF	(char)3

#define	DrawNORMAL	(int)0
#define	DrawXOR		(int)4

#define	NOFNCvoid	((void(*)())0)
#define	NOFNCint	((int(*)())0)

void	setds(unsigned int ds);

void	ginit(void);
void	gscreen(int mode);
void	gpset(int x, int y, int col, int mode);
void	gline(int x1,int y1,int x2,int y2,int col,int mode);
void	gscrzoom(int xrate, int yrate);
void	gdsparea(int xsize, int ysize);
void	gdsploc(int x,int y);
void	ghline(int x1, int x2, int y, int col, int logop);
void	gvline(int x,  int y1, int y2,int col, int logop);
void	gboxfill(int x1,int y1,int x2,int y2,int col,int logop);
void	grboxfill(int x1,int y1,int xlen,int ylen,int col,int logop);
void	gboxline(int x1,int y1,int x2,int y2,int col,int logop);
void	grboxline(int x1,int y1,int xlen,int ylen,int col,int logop);
void	gwrtpage(int page);
void	gdsppage(int pri, int dspsw);
int		gpoint(int x,int y);

int 	extwildcard(char *wildcard, char *namebuf[], int maxnames);

void	grp_getblk(int x1, int y1, int xlen, int ylen, char *buf);
void	grp_putblk(char *data, int x1, int y1);
void	grgetblk(char *buf, int x1, int y1, int xlen, int ylen);
void	grputblk(int x1, int y1, int xlen, int ylen, char *data);
void	grp_boxfill(int x1, int y1, int xlen, int ylen, int col, int mode);
void	grp_boxline(int x1, int y1, int xlen, int ylen, int col, int mode);
void	grp_cls(void);
void	grp_copy(int sx1, int sy1, int sxlen, int sylen, int sp,
				 int dx1, int dy1, int dp, int mode );
void	grp_dispPos(int x, int y);
int		grp_getMode(void);
void	grp_init(void);
void	grp_line(int x1, int y1, int x2, int y2, int col, int mode);
void	grp_setplt(int plt, int rgb /* bit23-16:赤 bit15-8:緑 bit7-0:青 */);
int		grp_getplt(int plt); /* ret: bit23-16:赤 bit15-8:緑 bit7-0:青 */
int		grp_point(int x, int y);
void	grp_pset(int x, int y, int col, int mode);
void	grp_mode ( int mode );
void	grp_mode2 ( int mode );
void	grp_scrZoom( int xrate, int yrate );
void	grp_putstr(int x, int y, char *str, int col );
int		grp_getWrtpage(void);
void	grp_setWrtpage(int page);

// sprlib.c

void sp_init(int dispnum), sp_end();
void sp_16colspr(int n);
void sp_def(int patn, char *pattern);
void sp_pltblk(int pltblkn, char *pltblk);
void sp_put(int index, int x, int y, int patn, int pltblk);
void sp_erase(int index, int num);

void	key_init(void);
char	key_get(void);
int		key_chk(void);
char	key_read(void);
void	key_clrbuf(void);

void	text_init(void);
void	text_end(void);

void	minit(),mend();
void	rdmos(MSDAT *msdat);

/*--------------------------------------------------------------------------
	ＴＩＦＦ形式 画像セーブ・ロード関数
	
	putimagefunc, getimagefunc:
		int func(char *buf, int yofs, int ylen)   の形式にすること
--------------------------------------------------------------------------*/

typedef struct {
	int	xlen,ylen;
} TIFFinfo;

int		TIFFload(char *fname, int x0, int y0);
void	TIFFload_putimagefunc(int (*func)());
int		TIFFsave(char *fname, int x1, int y1, int x2, int y2, bool compress);
void	TIFFsave_getimagefunc(int (*func)());
void	TIFFgetinfo(TIFFinfo *info);

extern	char	_egbwork[];
extern	char	*EGB_work;
extern	int		_scrmod[];
extern	int		_nowscrmod;
extern	int		_wrtpage;


int		getftime(char *fname, TIME *timebuf);	// 成功すれば 0
void	getnowtime(TIME *timebuf);

/* end of usrlib.h */
