/*
 DSP_EGBライブラリ   マクロパッケージ  Y.Tsuzi
*/

#ifndef		_EGBDEF
#define		_EGBDEF

#define	DSP_resolution(page, mode)	EGB_resolution(DSP_work.EGB, page, mode)
#define	DSP_resolutionRAM(page, pixel, width, height, ram) \
	EGB_resolutionRAM(DSP_work.EGB, page, pixel, width, height, ram)
/*
 DSP_resolution - 仮想画面の設定
  page - 設定するページ
  mode - 画面モード
         画面モード 仮想画面 表示画面 同時表示色
	 1           640x819  640x400         16
	 2                    640x200         16
         3	    1024x512  640x480         16
	 4                    640x400         16
	 5           256x512  256x256      32768
	 6                    256x256      32768
	 7                    256x240      32768
	 8                    256x240      32768
	 9           512x256  360x240      32768
	 10                   320x240      32768
	 11                   320x240      32768
	 12         1024x512  640x480        256
	 13                   640x400        256
	 14                   720x480        256
	 15          512x512  320x480      32768
         16                   320x480      32768
	 17                   512x480      32768
	 18                   512x480      32768
*/
#define	DSP_displayStart(mode, x, y)	\
	EGB_displayStart(DSP_work.EGB, mode, x, y)
/*
  DSP_displayStart - 表示開始位置の設定
   mode - モード
          0 画面の表示開始位置の設定
          1 仮想画面中の移動
          2 画面の拡大
	  3 表示画面の大きさ
*/

#define	DSP_palette(syncf,param) EGB_palette(DSP_work.EGB, syncf, param)
#define	DSP_setPalette(num, r, g, b) \
				EGB_setPalette(DSP_work.EGB, num, b, r, g)
#define	DSP_writePage(page)	EGB_writePage(DSP_work.EGB, page)
#define	DSP_displayPage(page0, page1) \
EGB_displayPage(DSP_work.EGB, 0, (page1 == ON ? 1 : 0) + (page1 == ON ? 2 : 0))

#define	DSP_color(c1, c2) \
{							\
	EGB_color(DSP_work.EGB, 0, c1);			\
	EGB_color(DSP_work.EGB, 2, c2);			\
}
#define	DSP_backColor(c)	EGB_color(DSP_work.EGB, 1, c)
#define	DSP_colorIGRB(c1, c2) \
{							\
    EGB_colorIGRB(DSP_work.EGB, 0, c1);			\
    EGB_colorIGRB(DSP_work.EGB, 2, c2);			\
}
#define DSP_backColorIGRB(c)	EGB_colorIGRB(DSP_work.EGB, 1, c)
#define DSP_foreColorIGRB(c)	EGB_foreColorIGRB(DSP_work.EGB, c)
#define DSP_transColorIGRB(c)	EGB_transColorIGRB(DSP_work.EGB, c)
#define	DSP_writeMode(mode)	EGB_writeMode(DSP_work.EGB, mode)
#define	DSP_pastel(level)	EGB_pastel(DSP_work.EGB, level)

#define	DSP_paintMode(mode)	EGB_paintMode(DSP_work.EGB, mode)

#define DSP_point(mode, x, y) \
({ \
    int	_a; \
    EGB_point(DSP_work.EGB, mode, x, y, &_a); \
    _a; \
})

#define	DSP_pen(penmode)	EGB_pen(DSP_work.EGB, penmode)
#define	DSP_penSize(pensize)	EGB_penSize(DSP_work.EGB, pensize)
#define	DSP_penStyle(pattern)	EGB_penStyle(DSP_work.EGB, pattern)

#define	DSP_textZoom(mode, x, y) EGB_textZoom(DSP_work.EGB, mode, x, y)
#define DSP_textDirection(dir)	EGB_textDirection(DSP_work.EGB, dir)
#define	DSP_fontStyle(style)	EGB_fontStyle(DSP_work.EGB, style)
#define	DSP_superImpose(mode)	EGB_superImpose(DSP_work.EGB, mode)
#define	DSP_digitize(mode)	EGB_digitize(DSP_work.EGB, mode)

#define	DSP_clearScreen(page) \
{ \
    int _a = DSP_getWritePage(); \
    DSP_writePage(page); \
    EGB_clearScreen(DSP_work.EGB); \
    DSP_writePage(_a); \
}

#define	DSP_partClearScreen()	EGB_partClearScreen(DSP_work.EGB)

#define	DSP_getBlockColor(param) EGB_getBlockColor(DSP_work.EGB, param)
#define	DSP_putBlockColor(clip, param)	\
EGB_putBlockColor(DSP_work.EGB, clip, param)
#define	DSP_getBlock(param)	EGB_getBlock(DSP_work.EGB, param)
#define	DSP_putBlock(clip, param) EGB_putBlock(DSP_work.EGB, clip, param)
#define DSP_get_color(buf, b, color) \
EGB_getRectColor(DSP_work.EGB, buf, b.x, b.y , b.mx, b.my, color)
#define DSP_put_color(buf, b) \
EGB_putRectColor(DSP_work.EGB, 1, buf, b.x, b.y, b.mx, b.my)

#define DSP_scroll(mode, dx, dy) EGB_scroll(DSP_work.EGB, mode, dx, dy) 
#define DSP_partScroll(mode, dx, dy, sx, sy, ex, ey) \
{ \
    signed short int _para[4] = {sx, sy, ex, ey}; \
    EGB_partScroll(DSP_work.EGB, mode, dx, dy, _para); \
}

#define DSP_pset(x, y)	EGB_singlePset(DSP_work.EGB, x, y) 
#define	DSP_maru(x, y, r) \
{ \
    EGB_paintMode(DSP_work.EGB, 0x02);	\
    EGB_maru(DSP_work.EGB, x, y, r); 	\
}
#define DSP_maruf(x, y, r) \
{ \
    EGB_paintMode(DSP_work.EGB, 0x20);	\
    EGB_maru(DSP_work.EGB, x, y, r); 	\
}
#define	DSP_line(sx, sy, ex, ey) \
{ \
    EGB_paintMode(DSP_work.EGB, 0x02);	\
    EGB_singleLine(DSP_work.EGB, sx, sy, ex, ey); \
}
#define DSP_ellipse(x, y, xlen, ylen) \
{ \
    signed short int _para[4] = {x, y, xlen, ylen}; \
    EGB_paintMode(DSP_work.EGB, 0x02);	\
    EGB_ellipse(DSP_work.EGB, _para); \
}

#endif		/* _EGBDEF */
