// TCTb.h : main header file for the TCTB application
//

#if !defined(AFX_TCTB_H__D9E64DD0_5915_11D2_8408_00A0C933BCAC__INCLUDED_)
#define AFX_TCTB_H__D9E64DD0_5915_11D2_8408_00A0C933BCAC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"       // main symbols
#include"FinalBitmapWnd.h"
#include"RenderedViewWnd.h"
#include"TCTTerrainData.h"

#define EDCPOINTS 8			//ConTol Pointson Spline

/////////////////////////////////////////////////////////////////////////////
// CTCTbApp:
// See TCTb.cpp for the implementation of this class
//

#include <ElementRenderer\ElementRenderer.hpp>
#include <ElementRenderer\GroupElement.hpp>
#include <ElementRenderer\ListElement.hpp>
#include <ElementRenderer\SwitchElement.hpp>
#include <ElementRenderer\ShapeElement.hpp>
#include <ElementProxies\ElementProxyHeaders.hpp>
#include <gosFX\gosFX.hpp>
#include <MLR\MLR.hpp>
#include <MLR\MLRHeaders.hpp>
#include "UndoQueue.h"
#include "LayerDlg.h"
#include "CameraInfo.h"
//#include "CamInfoDlg.h"
#include "CamInfoTabDlg.h"
#include "ExportInfo.h"
#include "FeatureDlg.h"

enum FBDMODE {DM_HFIELD,DM_DEPTHCOMPLEX,DM_BASETEXTURE};

class CTCTbApp : public CWinApp
{
public:
	CTCTbApp();
	~CTCTbApp();
	// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTCTbApp)
public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	virtual BOOL OnIdle(LONG lCount);
	//}}AFX_VIRTUAL
	UndoQueue undoqueue;
	int UndoLevels;
	ExportInfo EInfo;
	
	// Implementation
protected:
	HMENU m_hMDIMenu;
	HACCEL m_hMDIAccel;
	
	
public:
	bool GOSActive;
	void PutSavedState();
	void GetSavedState();
	void NewTexturePath();
	void SetTextureDir();
	void SetStates();
	void LoadTextureLayer(TextureLayer *lay);
	void LoadBTexture();
	void LoadDTexture();
	
	void ResetViewLoop();
	void GOSCleanUp();
	void DrawRView();
	void UpdateScreen();
	void UpdateActiveHField();
	
	Stuff::Scalar		Last_Frame;
	CFinalBitmapWnd		*FBmpWnd;
	CRenderedViewWnd	*RVWnd;
	TCTTerrainData		TData;
	
	//Camerra Control Dlg
	CameraInfo			CamInfo;
    CCamInfoTabDlg		*CInfDlg;
	CFeatureDlg			*FDlg;
	CString				TexturePath;
	CLayerDlg			*LWnd;
	
	FBDMODE				DMode;					
	
	bool ImportBitmap(CString &str, int=-1, int=0, int=0);
	bool ImportBitmap(Image   &timg, int=-1, int=0, int=0);
	bool ImportBitmap(CBitmap &bmp, int=-1, int=0, int=0);

	void PostGOSInit();
	//{{AFX_MSG(CTCTbApp)
	afx_msg void OnAppAbout();
	afx_msg void OnFileNew();
	afx_msg void OnFileImportHeightfield();
	afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);
	afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
	afx_msg void OnEditRedo();
	afx_msg void OnEditUndo();
	afx_msg void OnLayerShowall();
	afx_msg void OnLayerDelete();
	afx_msg void OnLayerAdd();
	afx_msg void OnLayerShowheightfield();
	afx_msg void OnUpdateViewCameraFreemode(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewCameraTrackmode(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewCameraUsetarget(CCmdUI* pCmdUI);
	afx_msg void OnViewCameraFreemode();
	afx_msg void OnViewCameraTrackmode();
	afx_msg void OnViewCameraUsetarget();
	afx_msg void OnViewRcurve();
	afx_msg void OnOptionsSettexturepath();
	afx_msg void OnLayerShowbasetexture();
	afx_msg void OnLayerShowdepthcomplexity();
	afx_msg void OnUpdateLayerShowheightfield(CCmdUI* pCmdUI);
	afx_msg void OnUpdateLayerShowdepthcomplexity(CCmdUI* pCmdUI);
	afx_msg void OnUpdateLayerShowbasetexture(CCmdUI* pCmdUI);
	afx_msg void OnUpdateLayerShowall(CCmdUI* pCmdUI);
	afx_msg void OnViewCameraAnimatepath();
	afx_msg void OnUpdateViewCameraAnimatepath(CCmdUI* pCmdUI);
	afx_msg void OnWindowCameracontrols();
	afx_msg void OnWindowFinalbitmap();
	afx_msg void OnWindowLayerwindow();
	afx_msg void OnWindowRenderedview();
	afx_msg void OnUpdateWindowCameracontrols(CCmdUI* pCmdUI);
	afx_msg void OnUpdateWindowFinalbitmap(CCmdUI* pCmdUI);
	afx_msg void OnUpdateWindowLayerwindow(CCmdUI* pCmdUI);
	afx_msg void OnUpdateWindowRenderedview(CCmdUI* pCmdUI);
	afx_msg void OnFileImportBasetexture();
	afx_msg void OnFileImportDetailtexture();
	afx_msg void OnOptionsExportoptions();
	afx_msg void OnWindowFeaturewindow();
	afx_msg void OnUpdateWindowFeaturewindow(CCmdUI* pCmdUI);
	afx_msg void OnFileExport();
	afx_msg void OnOptionsTerraindisplayoptions();
	afx_msg void OnFileImportMegabasetexture();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
		
		
};


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

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TCTB_H__D9E64DD0_5915_11D2_8408_00A0C933BCAC__INCLUDED_)
