// Obj3D.cpp : DLL アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include "Obj3D.h"
#include "Window.h"

#include "InputNumDLG.h"
//#include "ProgressBarDLG.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


using namespace jbxwl;



// 唯一のアプリケーション オブジェクトです。

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// MFC を初期化して、エラーの場合は結果を印刷します。
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {
		// TODO: 必要に応じてエラー コードを変更してください。
		_tprintf(_T("致命的なエラー: MFC の初期化ができませんでした\n"));
		nRetCode = 1;
	}
	else{
		// TODO: アプリケーションの動作を記述するコードをここに挿入してください。
	}

	return nRetCode;
}





/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

OBJ3D_API char* get_info(int n)
{
	switch(n) {
	  case 0 : 
		return "3D図形";		// ここにメニュータイトルを書く
	  case 1 :
		return "obj3d_proc";
	  case 2 :
		return "obj3d_free";
	  case 3 :
		return "obj3d_active";
	  default:
		return NULL;
	}
}




/*
	処理不能の場合：  NULL を返す
	処理失敗の場合：  xp->state=ERROR_GRAPH_NODATA にして返す．
	キャンセルの場合：xp->state=ERROR_GRAPH_CANCEL にして返す．
*/
OBJ3D_API MSGraph<sWord>* obj3d_proc(MSGraph<sWord>* vp)
{
	MSGraph<sWord>* xp = NULL;
	

    /////////////////////////////////////////
    // 以下に処理コードを書く
    //		入力 vp, 出力 xp
    /////////////////////////////////////////

	Vector<> va, vb, vt, et;
	xp = new MSGraph<sWord>(200, 200, 200);

	va.set(100, 100,  20);
	vb.set(100, 100, 180);
	MSGraph_Pool(*xp, va, vb, 10, 2000);

	vt.set(100, 100, 100);
	et.set(0, 1, 1);
	MSGraph_Torus(*xp, vt, et, 60, 10, 120);

    /////////////////////////////////////////
    // 処理コードはここまで
    /////////////////////////////////////////


	return xp;
}





/* 
	TRUEを返すと，入力データ無しでもアクティブになる．
*/
OBJ3D_API BOOL  obj3d_active(void)
{
	return TRUE;
}




OBJ3D_API void  obj3d_free(MSGraph<sWord>* vp)
{
	if (vp!=NULL) {
		vp->free();
		delete(vp);
	}
	return;
}

