//
//	ToolLib_DxLib.h
//
//	エディター共通処理 - DxLib用のバックエンド
//
//	* Wed Apr 19 22:11:14 JST 2017 Naoyuki Sawa
//	- 1st リリース。
//	* Tue May 02 22:54:46 JST 2017 Naoyuki Sawa
//	- 各モジュール内のサイズ定義の倍率を一律で調整出来るように、ToolLib.hにTOOL_SCALEの定義を追加しました。
//	  詳細は、ToolLib.hの同日のコメントを参照して下さい。
//
#ifndef __TOOLLIB_DXLIB_H__
#define __TOOLLIB_DXLIB_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
//*****************************************************************************
//	アプリケーション用関数
//*****************************************************************************
void ToolDxLib_GetDefault(SToolInfo* pToolInfo);
/****************************************************************************
 *	使用例
 ****************************************************************************/
#if 0
SToolVisible *v1, *v2;
SToolSpaceManage* s1;
SToolWindow* w1;
SToolList* l1;
SToolButton *b1, *b2;
SToolStringInput* i1;
SToolParamBar* p1;
SToolFileSelect* f1;
static int fnGetDrawScreenSize(int* XBuf, int* YBuf) { *XBuf = DISP_X; *YBuf = DISP_Y; return 0; }
static int fnGetMousePoint(int* XBuf, int* YBuf) { *XBuf = mousePosX; *YBuf = mousePosY; return 0; }
int cpp_main(int argc, char* argv[]) {
	SToolInfo ToolInfo;
	ToolDxLib_GetDefault(&ToolInfo);
	ToolInfo.fnGetDrawScreenSize = fnGetDrawScreenSize;	//┬裏画面とウインドウサイズが同じでなかったりスケーリングしている場合は、
	ToolInfo.fnGetMousePoint = fnGetMousePoint;		//┘このようにアプリケーション定義の関数を置き換えて対応する事が出来ます。
	Tool_Initialize(&ToolInfo);
	v1 = ToolVisible_Create();
	v2 = ToolVisible_Create();
	ToolVisible_SetParent(v2, v1);
	s1 = ToolSpaceManage_Create(DISP_Y);
	w1 = ToolWindow_Create(s1, 1, 0, 0, "Window 1", 0, 0, 300, 200, 400, 400);
	ToolWindow_SetVisibleHandle(w1, v2);
	l1 = ToolList_Create();		//┬リストの作成時はToolList_Initialize()も必須です。
	ToolList_Initialize(l1, w1);	//┘リストはウィンドウと組み合わせずに使用する事は出来ません。
	{
		int i;
		for(i = 1; i <= 100; i++) {
			ToolList_AddObj(l1, "<%d> (%d) [%d] <%d> (%d) [%d] <%d> (%d) [%d]", i,i,i, i,i,i, i,i,i);
		}
	}
	b1 = ToolButton_Create(1, "Button 1", 500,  0, 100, 30);
	ToolButton_SetOnOffFlag(b1, ToolVisible_GetVisible(v1));
	b2 = ToolButton_Create(1, "Button 2", 500, 30, 100, 30);
	ToolButton_SetOnOffFlag(b2, ToolVisible_GetVisible(v2));
	i1 = ToolStringInput_Create("StringInput 1", 500, 100, 0, 0, 200);
	p1 = ToolParamBar_Create("ParamBar 1", 500, 150, 100, 150, 10, 0, 10000, 5000);
	f1 = ToolFileSelect_Create("FileSelect 1", 500, 200);
	if(!setjmp(env_exit)) {
		for(;;) {
			schedule();
			Tool_Draw();
			Tool_Step(1.0 / FPS);
			ToolVisible_SetVisible(v1, ToolButton_GetOnOffFlag(b1));
			ToolVisible_SetVisible(v2, ToolButton_GetOnOffFlag(b2));
		}
	}
	Tool_Terminate();
	return EXIT_SUCCESS;
}
#endif
//*****************************************************************************
//	
//*****************************************************************************
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__TOOLLIB_DXLIB_H__
