//	ＡＩＧライブラリ　テキスト画面関数定義
//	Copyright (C) 1992-1994,99 by AIG-SOFT

#ifndef	__AIG_ATEXT__
#define	__AIG_ATEXT__	1

#include <iocslib.h>
#include <time.h>
#include "defines.h"

/* アニメーション構造体 */
typedef struct {	/* アニメーション構造体（サブ）*/
	unchar	name[MAXFILEEXT];	/* パターンファイル名 */
	short	x;			/* パターン表示ｘ座標 */
	short	y;			/* パターン表示ｙ座標 */
	short	clr;			/* パターンクリアフラグ */
	short	tm;			/* パターン表示時間 */
	unchar	*buff;			/* パターンバッファー */
} ANIMES;

#define	ANIME_MAX	30		/* スケジュール最大数 */

typedef struct {	/* アニメーション構造体（メイン）*/
	int	(*getchs)();		/* キー入力関数 */
	int	(*kbhits)();		/* キー入力判定関数 */
	short	finit;			/* 初期化フラグ（未使用）*/
	short	ptrns;			/* パターン数 */
	time_t	stim;			/* 開始時間 */
	time_t	etim;			/* 終了 */
	short	sx,sy,ex,ey;		/* 下画面退避エリア */
	unchar	*under;			/* 下画面退避バッファー */
	ANIMES	sc[ANIME_MAX];		/* アニメーションパターン */
} ANIME;

#ifndef XYSFT
#define	XYSFT	(sizeof(int)*8/2)	/* xyカーソル座標のうち半分を
					   取り出すに必要なシフト回数 */
#endif

#ifdef	__cplusplus
// 95/11 : G++対応
extern	"C" {
#endif

#ifdef	__PROTO_TYPE	/* プロトタイプ宣言 */
	void	txxline(int,int,int,int,int);
	void	txyline(int,int,int,int,int);
	void	txbox(int,int,int,int,int,int);
	void	txfill(int,int,int,int,int,int);
	void	txami(int,int,int,int,int,int);
	void	txrev(int,int,int,int,int);
	void	txline(int,int,int,int,int,int);
	void	tcircle(int,int,int,int,int);
	void	_tpset(int,int,int,int);
	void	tpset(int,int,int,int);
	void	_tpset2(int,int,int,int,int);
	void	tpset2(int,int,int,int,int);
	void	_tpset3(int,int,int,int,int);
	void	tpset3(int,int,int,int,int);
	void	txline3(int ,int ,int ,int ,int ,int ,int );
	void	txline3_set(void (*)(int,int,int,int,int));
	
	void	waku3(int,int,int,int,int,unsint);
	void	waku2(int,int,int,int,int,unsint);
	void	rev_waku2(int,int,int,int,int);
	void	fill_area(int,int,int,int,int);
	void	reverse_area(int,int,int,int,int);
	
	void	popup3(int,int,int,int,int,int,int,int,int,int);
	void	popdown3(int,int,int,int,int,int,int,int,int,int);
	void	popud3s(int,int,int,int,int,int,int,void (*)());
	
	int	telop(int);
	int	set_telop(int,unchar *,int,int);
	void	close_telop(int);
	
	int	ArtImgXor(unchar *);
	int	load_ptrn(unchar *,unchar *(*),int );
	
	int	AnimeOpen(unchar *,int (*)(),int (*)(),ANIME *);
	int	AnimeClose(ANIME *);
	void	Anime(ANIME *,int);
	int	AnimeGetch(ANIME *);
	int	TelopAnimeGetch(ANIME *,unint);
	
	void	shcls(int ,int ,int ,int );
	void	TXSHR(int ,int );
	void	TXSHL(int ,int );
	void	ColorTextGraph(void (*)(),int ,int ,int ,int ,int ,int );

#else	/* フォーワード宣言 */
	void	txxline();
	void	txyline();
	void	txbox();
	void	txfill();
	void	txami();
	void	txrev();
	void	txline();
	void	tcircle();
	void	_tpset();
	void	tpset();
	void	_tpset2();
	void	tpset2();
	void	_tpset3();
	void	tpset3();
	void	txline3();
	void	txline3_set();
	
	void	waku3();
	void	waku2();
	void	rev_waku2();
	void	fill_area();
	void	reverse_area();
	
	void	popup3();
	void	popdown3();
	void	popud3s();
	
	int	telop();
	int	set_telop();
	void	close_telop();
	
	int	ArtImgXor();
	int	load_ptrn();
	
	int	AnimeOpen();
	int	AnimeClose();
	void	Anime();
	int	AnimeGetch();
	int	TelopAnimeGetch();
	
	void	shcls();
	void	TXSHR();
	void	TXSHL();
	void	ColorTextGraph();
#endif
#ifdef	__cplusplus
}
#endif

/* マクロ関数 */
#define	popup3s(sx,sy,ex,ey,cl,wt,md)	popud3s(sx,sy,ex,ey,cl,wt,md,popup3)
#define	popdown3s(sx,sy,ex,ey,cl,wt,md) popud3s(sx,sy,ex,ey,cl,wt,md,popdown3)
#define	ImgPut(x,y,fnt,col)		TEXTPUT2(x,y,fnt,col)

#endif
