/*
  ======================================================================

						ウィンドウ

  ======================================================================
*/

#ifndef _WINDOW_H_
#define _WINDOW_H_

/* ====================================================================== */
/*
	コンパイルスイッチ
*/

#ifdef ROM_FLAG
/* --- ロムバージョン --- */

#else
/* --- デバッグバージョン --- */

#endif	/* ROM_FLAG */

/* ====================================================================== */
/*
	定数
*/

/* メニューウインドウ */
enum MenuWinSeq {
  	MENUWIN_SEQ_INIT=0,
  	MENUWIN_SEQ_OPEN_H,
  	MENUWIN_SEQ_OPEN_V,
  	MENUWIN_SEQ_STOP,
  	MENUWIN_SEQ_CLOSE_V,
  	MENUWIN_SEQ_CLOSE_H
};
typedef enum MenuWinSeq MenuWinSeq;

/* ウィンドウステータスチェック */
enum MenuWinCheckMode {
	MENUWIN_CHKMODE_EXIST=0,	/* 存在するかどうか？ */
	MENUWIN_CHKMODE_OPEN		/* 開ききったかどうか？ */
};
typedef enum MenuWinCheckMode MenuWinCheckMode;

/* ====================================================================== */
/*
	構造体
*/

/* ウィンドウ */
struct MenuWindow {
  	MenuWinSeq	seq;
	short		id, count,
				x, y, toX, toY,
				wd, ht, toWd, toHt;
	ushort		colorWin, colorFrame;
	Gfx			*(*func)( Gfx *pGfx, int x, int y );
};
typedef struct MenuWindow MenuWindow;

/* ====================================================================== */
/*
	関数
*/

extern void 		initMenuWindow( void );
extern void	 		getMenuWindow( MenuWindow **ppMenuWindow );
extern MenuWindow 	*openMenuWindow( short id, short x, short y, short wd, short ht, ushort colorFrame, void *func );
extern void 		closeMenuWindow( MenuWindow *pWindow );
extern void 		moveMenuWindow( void );
extern Gfx			*makeMenuWindowGlist( Gfx *pGfx );
extern int			checkMenuWindow( MenuWindow *pWindow, MenuWinCheckMode mode );

#endif	/* !_WINDOW_H_ */
