/* Copyright (c) 2002-2012 Croteam Ltd. This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #if !defined(AFX_TERRAININTERFACE_H__539D0786_D5B8_4079_A285_DA2C86EC7543__INCLUDED_) #define AFX_TERRAININTERFACE_H__539D0786_D5B8_4079_A285_DA2C86EC7543__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // TerrainInterface.h : header file // #define TEM_HEIGHTMAP 0 #define TEM_LAYER 1 #define CT_EDIT_MODES 2 #define TBM_PAINT 0 #define TBM_SMOOTH 1 #define TBM_FILTER 2 #define TBM_MINIMUM 3 #define TBM_MAXIMUM 4 #define TBM_FLATTEN 5 #define TBM_POSTERIZE 6 #define TBM_RND_NOISE 7 #define TBM_CONTINOUS_NOISE 8 #define TBM_ERASE 9 #define CT_BRUSH_MODES 10 struct CTerrainEditBrush { FLOAT teb_fHotSpot; FLOAT teb_fFallOff; }; extern CTFileName GetBrushTextureName(INDEX iBrush); extern CTerrainEditBrush atebDefaultEditBrushValues[]; extern CTerrainEditBrush atebCustomEditBrushes[]; extern void InvokeTerrainTilePalette( PIX pixX, PIX pixY); extern void InvokeTerrainBrushPalette( PIX pixX, PIX pixY); extern void RenderBrushShape( INDEX iBrush, PIXaabbox2D rect, CDrawPort *pdp); extern void GetEditingModeInfo(INDEX iMode, INDEX &iIcon, CTString &strText); extern CBrushPaletteWnd *_pBrushPalette; extern void GenerateTerrainBrushTexture( INDEX iBrush, FLOAT fHotSpot, FLOAT fFallOff); extern void GenerateNonExistingTerrainEditBrushes(void); extern void ApplyImportExport(INDEX iSelectedItem); extern void DisplayHeightMapWindow(CPoint pt); void GetBrushModeInfo(INDEX iMode, INDEX &iIcon, CTString &strText); #define CT_BRUSHES 32 #define BRUSH_PALETTE_WIDTH (128-1) #define BRUSH_PALETTE_HEIGHT (256-1) #define TILE_PALETTE_WIDTH (256-1) #define TILE_PALETTE_HEIGHT (256-1) ///////////////////////////////////////////////////////////////////////////// // CTerrainInterface window struct CTIButton { FLOAT tib_fx; FLOAT tib_fy; FLOAT tib_fdx; FLOAT tib_fdy; INDEX tib_iIcon; COLOR tib_colBorderColor; COLOR tib_colFill; FLOAT tib_fDataMin; FLOAT tib_fDataMax; FLOAT tib_fDataDelta; BOOL tib_bWrapData; BOOL tib_bMouseTrapForMove; BOOL tib_bContinueTesting; FLOAT *tib_pfData1; FLOAT *tib_pfData2; INDEX tib_iLayer; CTString tib_strToolTip; void (*tib_pOnRender)(CTIButton *ptib, CDrawPort *pdp); void (*tib_pOnLeftClick)(CTIButton *ptib, CPoint pt, CDrawPort *pdp); void (*tib_pOnLeftClickMove)(CTIButton *ptib, FLOAT fdx, FLOAT fdy, CDrawPort *pdp); void (*tib_pOnRightClick)(CTIButton *ptib, CPoint pt, CDrawPort *pdp); void (*tib_pOnRightClickMove)(CTIButton *ptib, FLOAT fdx, FLOAT fdy, CDrawPort *pdp); void (*tib_pPreRender)(CTIButton *ptib, CDrawPort *pdp); // misc functions void (*tib_pOnDropFiles)(CTIButton *ptib, CPoint pt, CDrawPort *pdp, CTFileName fnFile); CTString (*tib_pGetClickMoveData)(CTIButton *ptib, CPoint pt, CDrawPort *pdp, BOOL bLmb); BOOL (*tib_pIsEnabled)(CTIButton *ptib); // construction CTIButton(); void SetData( FLOAT fDataMin, FLOAT fDataMax, FLOAT fDataDelta, BOOL bWrap=FALSE, FLOAT *pfData1=NULL, FLOAT *pfData2=NULL); void SetFunctions( void (*pOnRender)(CTIButton *ptib, CDrawPort *pdp)=NULL, void (*pOnLeftClick)(CTIButton *ptib, CPoint pt, CDrawPort *pdp)=NULL, void (*pOnLeftClickMove)(CTIButton *ptib, FLOAT fdx, FLOAT fdy, CDrawPort *pdp)=NULL, void (*pOnRightClick)(CTIButton *ptib, CPoint pt, CDrawPort *pdp)=NULL, void (*pOnRighClickMove)(CTIButton *ptib, FLOAT fdx, FLOAT fdy, CDrawPort *pdp)=NULL, void (*pPreRender)(CTIButton *ptib, CDrawPort *pdp)=NULL); }; class CTerrainInterface : public CWnd { // Construction public: CTerrainInterface(); void InitializeInterface(CDrawPort *pdp); CDrawPort *m_pDrawPort; CViewPort *m_pViewPort; COleDataSource m_DataSource; INDEX m_iBrush; INDEX m_iOpacity; INDEX m_iEditMode; CPoint m_ptMouse; CPoint m_ptMouseDown; CPoint m_ptMouseDownScreen; CPoint m_ptMouseCenter; CPoint m_ptMouseCenterScreen; CUpdateableRT m_udTerrainPage; CUpdateableRT m_udTerrainPageCanvas; // Attributes public: // Operations public: void OnIdle(void); int OnToolHitTest( CPoint point, TOOLINFO* pTI ) const; void HideCursor(void); void UnhideCursor(void); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CTerrainInterface) public: virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); virtual BOOL PreTranslateMessage(MSG* pMsg); //}}AFX_VIRTUAL // Implementation public: virtual ~CTerrainInterface(); void RenderInterface(CDrawPort *pDP); BOOL IsClicked(CTIButton &tib, CPoint pt) const; // Generated message map functions protected: //{{AFX_MSG(CTerrainInterface) afx_msg void OnPaint(); afx_msg void OnDestroy(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnDropFiles(HDROP hDropInfo); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_TERRAININTERFACE_H__539D0786_D5B8_4079_A285_DA2C86EC7543__INCLUDED_)