/*
	rsktiff.h
*/

/*--------------------------------------------------------------------------
	ＴＩＦＦ形式 画像セーブ・ロード関数
	
	putimagefunc, getimagefunc:
		int func(char *buf, int yofs, int ylen)   の形式にすること

ロード方法：
	プログラムの最初で
		ginit();
		TIFFinitwork();
	を呼んでおく。(EGB_init は呼ばない)
	他のEGB 関数を用いたいときは、EGB_work というグローバル変数を
	用いること。
	ロードは、
		TIFFinitwork();
		TIFFload ( "a.tif", 0, 0 );
	のように行う。２つの数値はロード位置。
	
セーブ方法:
	ginit ();  TIFFinitwork();  を呼んでおく必要があるのはロードと同じ。
	セーブは、
		TIFFsave ( "a.tif" , 0,0, 319, 239, 1 );
	のように行う。最後の１は、「圧縮あり」の意味。
	最後の数値を０にすると、非圧縮セーブする。
	とちゅうの４つの数値は、セーブする範囲。
	この例では、(0,0)〜(319,239)の範囲をセーブしている。
--------------------------------------------------------------------------*/

typedef struct {
	int		xlen,ylen;
	bool	compress;
	int		pixelsize;
} TIFFinfo;

int		TIFFinitwork();
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);
// 返値	 0=成功
//		-1=画面モード/ファイル名の間違い
//		-2=メモリ不足
//		-3=ディスク領域不足
//		-4=get関数エラー
void	TIFFsave_getimagefunc(int (*func)());
int		TIFFgetinfo(char *fname, TIFFinfo *info);
// 返値  0=正常終了
//      -1=ファイルが存在しない
//      -2=TIFF形式ではない
//      -3=メモリが足りない

extern	char	_egbwork[];
extern	char	*EGB_work;
extern	int		_scrmod[];
extern	int		_nowscrmod;
extern	int		_wrtpage;




void	ginit(void);
void	gscreen(int mode);
void	gramscr(int page, int mode, char *buf);
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	gblkcpy(int sx,int sy,int xlen,int ylen,int spage,
				int dx,int dy,int dpage,int op);
void	gputblk(char *buf, int dx,int dy,int xlen,int ylen,int op);
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, int op);
#define	grp_putblk	grputblk
#define	grp_getblk	grgetblk
// 昔の grp_putblk, grp_getblk は隠滅する
void	grp_putblk_zoom(int x1, int y1, int xlen, int ylen, char *data,
						int op, int zoomx, int zoomy);
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);

void	wait_vsync();

// 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);
void	mous_setpos(MSDAT *msdat, int x,int y);
void	mous_typeRom(int type);
void	mous_type(int mode, char *pattern);

void			poked(int sel, int ofs, unsigned int dat);
unsigned int	peekd(int sel, int ofs);


int		getftime(char *fname, TIME *timebuf);	// 成功すれば 0
void	getnowtime(TIME *timebuf);

/* end of rsktiff.h */
