//	ＡＩＧライブラリ　基本関数：画面関数
//		Copyright (C) 1989-1994,97,2001 by AIG-SOFT

#ifndef	__AIG_SCREEN__
#define	__AIG_SCREEN__	1

#include "deftype.h"

/* 色文字列コンバート表用構造体 */
typedef struct COLCNV {
	unchar	*mes;
	unsint	num;
} _COLCNV;

#define NCOLCNV	15	/* 色＋属性種類数（defines.hの色定数が変わったらここも変更すること）*/

extern _COLCNV ColCnv[NCOLCNV];	/* 色文字列コンバートテーブル */


#ifdef	__cplusplus
// 95/11 : G++対応
extern	"C" {
#endif
#ifdef	__PROTO_TYPE	/* プロトタイプ宣言 */
	int	EX_COLOR(int);
	int	cursor(int *,int *);
	int	curx(short);
	int	cury(short);
	int	B_LOCATE_SC(int,int,int);
	int	calc_text_size(int,int,int,int);
	int	curmode(int);
	int	TWIDTH(int *);
	int	TXONOFF(int);
	int	xfkey(int);
	int	dispmode(void);
	int	gxy(int *);
	int	CRTC(int,int);
	void	CRTC768x512G(int);
	int	VSOP(int,int);
	int	textadrs0(int,int);
	int	cwidth(int );
	void	txcls(int);
	void	text_all_sub(int,int,int);
	void	gettext(int,int,int,int,unchar *);
	void	puttext(int,int,unchar *);
	void	gettext0(int,int,int,int,unchar *,int);
	void	puttext0(int,int,unchar *,int);
	void	sysline(int);
	
	void	gettext3(int,int,int,int,unchar *,unchar *);
	void	puttext3(int,int,unchar *,unchar *);
	void	counttext3(int ,int ,int ,int ,unint *);
	void	calctext3(int ,int ,int ,int ,unint *,int *,int *);
	void	gettext3s(int ,int ,int ,int ,unint *,unchar *,unchar *);
	void	_calctext3(int ,unchar *);
	void	_gettext3(int ,unchar *,unchar *);
	void	_puttext3(int ,unchar *,unchar *);
	void	Tcount(void *,int ,int ,int );
	
	void	text_scroll(int,int,int,int,int,int);
	void	_upscroll(int,int,int,int);
	void	_downscroll(int,int,int,int);
	void	_dma_upscroll(int,int,int,int);
	void	_dma_downscroll(int,int,int,int);
	void	_scroll_erase(int,int,int);
	void	_dma_scroll_erase(int,int,int);
	void	TextScrollJ(void (*)(),void (*)(),int,int,int,int,int,int);
	void	TextScrollS(void (*)(),void (*)(),int,int,int,int,int,int);
	void	textcopy(int,int,int,int,int,int);
	void	_tgsub(int,unchar *,int,int);
	void	_tpsub(int,unchar *,int,int);
	void	_txcopy(int,int,int,int);
	void	_txcopy2(int,int,int,int);
	void	_rtxcopy(int,int,int,int);
	void	_rtxcopy2(int,int,int,int);

	void	INITSCREEN(void);
	void	CurBlink(int ,int ,int ,int ,int (*)());
	unchar	*gettext2(int,int,int,int);
	unsint	ReadCol1(unchar *);
	unchar	*ColorMesMake(int,int);
#else	/* フォーワード宣言 */
	int	EX_COLOR();
	int	cursor();
	int	curx();
	int	cury();
	int	B_LOCATE_SC();
	int	calc_text_size();
	int	curmode();
	int	TWIDTH();
	int	TXONOFF();
	int	xfkey();
	int	dispmode();
	int	gxy();
	int	CRTC();
	void	CRTC768x512G();
	int	VSOP();
	int	textadrs0();
	int	cwidth();
	void	txcls();
	void	text_all_sub();
	void	gettext();
	void	puttext();
	void	gettext0();
	void	puttext0();
	void	sysline();
	
	void	gettext3();
	void	puttext3();
	void	counttext3();
	void	calctext3();
	void	gettext3s();
	void	_calctext3();
	void	_gettext3();
	void	_puttext3();
	void	Tcount();
	
	void	text_scroll();
	void	textcopy();
	void	_upscroll();
	void	_downscroll();
	void	_dma_upscroll();
	void	_dma_downscroll();
	void	_scroll_erase();
	void	_dma_scroll_erase();
	void	TextScrollJ();
	void	TextScrollS();
	void	_tgsub();
	void	_tpsub();
	void	_txcopy();
	void	_txcopy2();
	void	_rtxcopy();
	void	_rtxcopy2();

	void	INITSCREEN();
	void	CurBlink();
	unchar	*gettext2();
	unsint	ReadCol1();
	unchar	*ColorMesMake();
#endif
#ifdef	__cplusplus
}
#endif

/* マクロ関数 */
#define textadrs0(x,y)	(0xe00000+(x)+((y)*16)*128)

// counttext3()用定数(g\getput3.hにも定義されている)
#define CMAX	256		/* ８ビットコード種類数（固定）*/

#endif
