#include <egb.h>

char	para[80]; 
char	cpara[80];
struct	{
	char *bp ;
	short sel ;
	short sx,sy,ex,ey ;
	}_pp;			/*  EGB_putBlockのパラメータ	*/
 

/*  関数のプロトタイプ宣言  */
void g_palette16(char *,int,int,int,int);	/*  16色用パレット設定	*/
void g_palette256(char *,int,int,int,int);	/*  256色用パレット設定	*/
void g_pset(char *,int,int);			/*  点を描く		*/
void g_line(char *,int,int,int,int);		/*  線を描く		*/
void g_box(char *,int,int,int,int);		/*  四角を描く		*/
void g_arc(char *,int,int,int,int,int,int,int);	/*  弧を描く		*/
void g_fan(char *,int,int,int,int,int,int,int);	/*  扇形を描く		*/
void g_bow(char *,int,int,int,int,int,int);	/*  弓形を描く		*/
void g_circle(char *,int,int,int);		/*  円を描く		*/
void g_ellipse(char *,int,int,int,int);		/*  楕円を描く		*/
void g_get(char *,int,int,int,int,char *);	/*  グラフィックを取る	*/
void g_put(char *,int,int,int,int,char *);	/*  グラフィックを描く	*/
void g_print(char *,int,int,char *);		/*  文字を書く		*/


void g_palette16(char *_work,int _no,int _r,int _g,int _b){
	DWORD(para + 0) = 1;
	DWORD(para + 4) = _no;
	BYTE(para + 8) = (_b<<4);
	BYTE(para + 9) = (_r<<4);
	BYTE(para +10) = (_g<<4);
	BYTE(para +11) = 0;
	EGB_palette(_work,1, para ); } 

void g_palette256(char *_work,int _no,int _r,int _g,int _b){
	DWORD(para + 0) = 1;
	DWORD(para + 4) = _no;
	BYTE(para + 8) = _b;
	BYTE(para + 9) = _r;
	BYTE(para +10) = _g;
	BYTE(para +11) = 0;
	EGB_palette(_work,1, para ); } 

void g_pset(char *_work,int _x,int _y){
	WORD(para + 0) = 1;
	WORD(para + 2) = _x;
	WORD(para + 4) = _y;
	EGB_pset(_work, para ); } 

void g_line(char *_work,int _x1,int _y1,int _x2,int _y2){
	WORD(para + 0) = 2;
	WORD(para + 2) = _x1;
	WORD(para + 4) = _y1;
	WORD(para + 6) = _x2;
	WORD(para + 8) = _y2;
	EGB_connect(_work, para ); }

void g_box(char *_work,int _x1,int _y1,int _x2,int _y2){
	WORD(para + 0) = _x1;
	WORD(para + 2) = _y1;
	WORD(para + 4) = _x2;
	WORD(para + 6) = _y2;
	EGB_rectangle(_work, para ); }

void g_arc(char *_work,int _cx,int _cy,int _sx,int _sy,int _ex,int _ey,int _r){
	WORD(para + 0) = _cx;
	WORD(para + 2) = _cy;
	WORD(para + 4) = _sx;
	WORD(para + 6) = _sy;
	WORD(para + 8) = _ex;
	WORD(para +10) = _ey;
	WORD(para +11) = _r;
	EGB_arc(_work, para ); }

void g_fan(char *_work,int _cx,int _cy,int _sx,int _sy,int _ex,int _ey,int _r){
	WORD(para + 0) = _cx;
	WORD(para + 2) = _cy;
	WORD(para + 4) = _sx;
	WORD(para + 6) = _sy;
	WORD(para + 8) = _ex;
	WORD(para +10) = _ey;
	WORD(para +11) = _r;
	EGB_fan(_work, para ); }

void g_bow(char *_work,int _x1,int _y1,int _x2,int _y2,int _x3,int _y3){
	WORD(para + 0) = _x1;
	WORD(para + 2) = _y1;
	WORD(para + 4) = _x2;
	WORD(para + 6) = _y2;
	WORD(para + 8) = _x3;
	WORD(para +10) = _y3;
	EGB_bow(_work, para ); }

void g_circle(char *_work,int _cx,int _cy,int _r){
	WORD(para + 0) = _cx;
	WORD(para + 2) = _cy;
	WORD(para + 4) = _r;
	EGB_circle(_work, para ); }

void g_ellipse(char *_work,int _cx,int _cy,int _rx,int _ry){
	WORD(para + 0) = _cx;
	WORD(para + 2) = _cy;
	WORD(para + 4) = _rx;
	WORD(para + 6) = _ry;
	EGB_ellipse(_work, para ); }

void g_get(char *_work,int _sx,int _sy,int _ex,int _ey,char *_buf){
	_pp.bp = _buf;
	_pp.sel= getds();
	_pp.sx = _sx;
	_pp.sy = _sy;
	_pp.ex = _ex;
	_pp.ey = _ey;
	EGB_getBlock(_work,(char *)&_pp); }

void g_put(char *_work,int _sx,int _sy,int _ex,int _ey,char *_buf){
	_pp.bp = _buf;
	_pp.sel= getds();
	_pp.sx = _sx;
	_pp.sy = _sy;
	_pp.ex = _ex;
	_pp.ey = _ey;
	EGB_putBlock(_work,0,(char *)&_pp); }

void g_print(char *_work,int _x,int _y,char *_str){
	WORD(para + 0) = _x;
	WORD(para + 2) = _y;
	WORD(para + 4) = strlen(_str);
	strcpy(para+6,_str);
	EGB_sjisString(_work,para); }