/*//////////////////////////////////////////////////////////////////////////////////////*/
/* File        : Altimap3D.hpp: interface for the ITSphere3D class.*/
/* Author      : Cristi Petrescu*/
/* Date        : 98.02.05*/
/* Description :*/
/*//////////////////////////////////////////////////////////////////////////////////////*/
#ifndef __Altimap3D_HPP__
#define __Altimap3D_HPP__
 
#ifdef USE_ALTIMAPS
 
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
 
class Altimap3D;
 
class CPA_EXPORT AltimapUndo : public CPA_Modif
{
	/* the altimap object*/
	Altimap3D					*m_pAltimap3D;
	/* the undo info*/
	GEO_tdstElementAltimap		*m_p_stAltimapUndo;
	
public:
	AltimapUndo(Altimap3D *pAltimap3D);
	BOOL Do () {return Undo ();};
	BOOL Undo ();
	~AltimapUndo (void);
};
 
class CPA_EXPORT Altimap3D : public Shape3D
{
friend class AltimapUndo;
 
private:
	/*BOOL			m_bNewAltimap;		// if this is false, then try to adjust the old altimap*/
	AltimapUndo		*m_pAltimapUndo;
 
	void CommonAltimap3D (ACP_tdxIndex xWidth = 10, ACP_tdxIndex xDepth = 10, MTH_tdxReal xSquareDimX = 1, MTH_tdxReal xSquareDimY = 1);
 
public:
	/*Set the global parameters*/
	void                SetOrigin (MTH3D_tdstVector st3DPoint);
	void                SetWidth (ACP_tdxIndex xWidth);
	void                SetDepth (ACP_tdxIndex xDepth);
	void                SetSquareDimX (MTH_tdxReal xSquareDimX);
	void                SetSquareDimY (MTH_tdxReal xSquareDimY);
	/*Get the global parameters*/
	MTH3D_tdstVector    GetOrigin (void);
	ACP_tdxIndex        GetWidth (void);
	ACP_tdxIndex        GetDepth (void);
	MTH_tdxReal         GetSquareDimX (void);
	MTH_tdxReal         GetSquareDimY (void);
 
	BOOL _OnLButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo);
 
	/* constructors & destructors*/
	Altimap3D (CPA_EditorBase *_p_oEditor, const CString _csName = "", tdeSaveStatus _eStatus = E_ss_NoSave);
	Altimap3D (CPA_EditorBase *_p_oEditor, ACP_tdxIndex xWidth = 10, ACP_tdxIndex xDepth = 10, MTH_tdxReal xSquareDimX = 1, MTH_tdxReal xSquareDimY = 1, const CString _csName = "", tdeSaveStatus _eStatus = E_ss_NoSave);
	~Altimap3D();
	CPA_Modif *GetUndoData() {return m_pAltimapUndo = new AltimapUndo (this);};
};
 
#endif  /* USE_ALTIMAPS*/
 
#endif /* */
