/************************************************************************/
/* 基本グラフィックス描画ルーチン ヘッダ                                */
/************************************************************************/

#ifndef __GRAPHICS__
#define __GRAPHICS__


/* LCDパネル初期化ルーチンヘッダ */
#include "LCDpanel.h"


#define GRPH_width		320
#define GRPH_height		240

#define GRPH_window_width	320
#define GRPH_window_height	240

#define GRPH_clip_window_sx	0
#define GRPH_clip_window_sy	0
#define GRPH_clip_window_ex	320
#define GRPH_clip_window_ey	240
#define GRPH_clip_window_width  (GRPH_clip_window_ex - GRPH_clip_window_sx + 1)
#define GRPH_clip_window_height (GRPH_clip_window_ey - GRPH_clip_window_sy + 1)

#define GRPH_mode_32	0
#define GRPH_mode_16	1
#define GRPH_mode_8		2

#define GRPH_mode_use	GRPH_mode_16


#if   GRPH_mode_use == GRPH_mode_32
	typedef unsigned int		PIXEL;
#elif GRPH_mode_use == GRPH_mode_16
	typedef unsigned short int	PIXEL;
#elif GRPH_mode_use == GRPH_mode_8
	typedef unsigned char		PIXEL;
#endif


PIXEL *GRPH_Buffer;		/* フレームバッファベースアドレス */
PIXEL *GRA1_Base;		/* Graphics1 plane base address */
PIXEL *GRA2_Base;		/* Graphics2 plane base address */

/* グラフィックス初期化 */
void GRPH_Initialize(void);

#define GRPH_SelectPlane(base)		{ GRPH_Buffer = base; }


/***** 低レベルグラフィックス描画関数 *****/

/* 画面クリア */
void GRPH_Clear(PIXEL c);

/* 点描画 */
void GRPH_Pset(int x, int y, PIXEL c);

/* ライン描画 */
void GRPH_Line(int sx, int sy, int ex, int ey, PIXEL c);

/* ボックス描画(fが1ならボックスフィル) */
void GRPH_Box(int sx, int sy, int ex, int ey, PIXEL c, int f);

/* サークル描画(fが1ならサークルフィル) */
void GRPH_Circle(int x, int y, int rh, int rv, PIXEL c, int f);

/* ペイント描画 */
void GRPH_Paint(int x, int y, PIXEL c);


#endif

