/*
 *	clipcqrd.h
 *
 *	コールバックキューを用いた優先度付き描画
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2017 Naoyuki Sawa
 *
 *	* Sat Jan 30 21:30:05 JST 2016 Naoyuki Sawa
 *	- 1st リリース。
 *	- 特に良く使う描画関数の、優先度付きバージョンを定義しました。
 *	  他にも優先度付き描画を行いたい描画関数が有れば、このモジュールに追加して下さい。
 *	- 当モジュールには特に良く使う描画関数だけを定義したので、当モジュールの関数は既存の描画関数とほぼ1:1に対応しています。
 *	  しかし、コールバックキューによる描画は、必ずしもそのように使う必要は有りません。
 *	  例えば、特定の優先度でコールバックを行い、その時点のフレームバッファに対して、アプリケーション定義のフィルタを掛けるような使い方も出来ます。
 *	  具体例としては、優先度マイナスを背景,優先度プラスを前景として、優先度0でコールバックを掛けて、背景だけにラスタスクロールを掛けたり出来ます。
 *	  上記のような、アプリケーション特有の処理を行う場合は、当モジュール内に機能を追加するよりも、個々のアプリケーションのソース内で定義する方が良いでしょう
 *	* Sun Jan 31 21:43:46 JST 2016 Naoyuki Sawa
 *	- CbkQue_render_set_draw_area()を追加しました。
 *	* Wed Jan 11 21:35:35 JST 2017 Naoyuki Sawa
 *	- CbkQue_render_set_draw_area_full()を追加しました。
 *	* Fri Jan 27 21:01:42 JST 2017 Naoyuki Sawa
 *	- CbkQue_render_rectangle_shadow()を追加しました。
 */
#ifndef __CLIP_CQRD_H__
#define __CLIP_CQRD_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
/****************************************************************************
 *	
 ****************************************************************************/
void CbkQue_surface_clear(ST_CbkQue* pCbkQue, int pri, SURFACE* surface, int color);
void CbkQue_render_set_draw_area(ST_CbkQue* pCbkQue, int pri, RENDER* render, int left, int top, int right, int bottom);
void CbkQue_render_set_draw_area_full(ST_CbkQue* pCbkQue, int pri, RENDER* render);
void CbkQue_render_point(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x, int y, int color);
void CbkQue_render_line(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x0, int y0, int x1, int y1, int color);
void CbkQue_render_rectangle(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x, int y, int w, int h, int color);
void CbkQue_render_rectangle_fill(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x, int y, int w, int h, int color);
void CbkQue_render_rectangle_shadow(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x, int y, int w, int h, int adjust, int limit);
void CbkQue_render_printf(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x, int y, int type, int color, const char* fmt, ...);
void CbkQue_render_printf_framed(ST_CbkQue* pCbkQue, int pri, RENDER* render, int x, int y, int type, int color, const char* fmt, ...);
void CbkQue_sprite_draw(ST_CbkQue* pCbkQue, int pri, int x, int y, int sprno, int param);
void CbkQue_sprite_draw2(ST_CbkQue* pCbkQue, int pri, int x, int y, int sprno, int param, fixed scale_x, fixed scale_y, fixed rot);
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_CQRD_H__
