mirror of
https://github.com/leozide/leocad
synced 2025-01-01 06:19:55 +01:00
119 lines
3.5 KiB
C++
119 lines
3.5 KiB
C++
#include "lc_global.h"
|
|
#include "leocad.h"
|
|
#include "TerOpDlg.h"
|
|
#include "Terrain.h"
|
|
#include "Tools.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTerrainOptionsDlg dialog
|
|
|
|
|
|
CTerrainOptionsDlg::CTerrainOptionsDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CTerrainOptionsDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CTerrainOptionsDlg)
|
|
m_nXPatches = 0;
|
|
m_nYPatches = 0;
|
|
m_fXSize = 0.0f;
|
|
m_fYSize = 0.0f;
|
|
m_bFlat = FALSE;
|
|
m_bTexture = FALSE;
|
|
m_strTexture = _T("");
|
|
m_bSmooth = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CTerrainOptionsDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CTerrainOptionsDlg)
|
|
DDX_Control(pDX, IDC_TEROPT_COLOR, m_btnColor);
|
|
DDX_Text(pDX, IDC_TEROPT_XPAT, m_nXPatches);
|
|
DDV_MinMaxInt(pDX, m_nXPatches, 1, 1024);
|
|
DDX_Text(pDX, IDC_TEROPT_YPAT, m_nYPatches);
|
|
DDV_MinMaxInt(pDX, m_nYPatches, 1, 1024);
|
|
DDX_Text(pDX, IDC_TEROPT_XSIZE, m_fXSize);
|
|
DDV_MinMaxFloat(pDX, m_fXSize, 1.f, 1024.f);
|
|
DDX_Text(pDX, IDC_TEROPT_YSIZE, m_fYSize);
|
|
DDV_MinMaxFloat(pDX, m_fYSize, 1.f, 1024.f);
|
|
DDX_Check(pDX, IDC_TEROPT_FLAT, m_bFlat);
|
|
DDX_Check(pDX, IDC_TEROPT_TEXTURE, m_bTexture);
|
|
DDX_Text(pDX, IDC_TEROPT_TEXTURENAME, m_strTexture);
|
|
DDX_Check(pDX, IDC_TEROPT_SMOOTH, m_bSmooth);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CTerrainOptionsDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CTerrainOptionsDlg)
|
|
ON_BN_CLICKED(IDC_TEROPT_COLOR, OnTeroptColor)
|
|
ON_BN_CLICKED(IDC_TEROPT_TEXTUREBROWSE, OnTeroptTexturebrowse)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTerrainOptionsDlg message handlers
|
|
|
|
void CTerrainOptionsDlg::OnTeroptColor()
|
|
{
|
|
CColorDialog dlg(m_crTerrain);
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
m_crTerrain = dlg.GetColor();
|
|
DeleteObject(m_btnColor.SetBitmap(CreateColorBitmap (20, 10, m_crTerrain)));
|
|
}
|
|
}
|
|
|
|
void CTerrainOptionsDlg::OnTeroptTexturebrowse()
|
|
{
|
|
CFileDialog dlg(TRUE, NULL, m_strTexture, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
|
|
"All Image Files|*.bmp;*.gif;*.jpg;*.png|JPEG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|BMP Files (*.bmp)|*.bmp|PNG Files (*.png)|*.png|All Files (*.*)|*.*||", this);
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
UpdateData(TRUE);
|
|
m_strTexture = dlg.GetPathName();
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
void CTerrainOptionsDlg::SetOptions(Terrain* pTerrain)
|
|
{
|
|
pTerrain->GetPatchCount(&m_nXPatches, &m_nYPatches);
|
|
pTerrain->GetSize(&m_fXSize, &m_fYSize);
|
|
m_crTerrain = RGB(pTerrain->m_fColor[0]*255, pTerrain->m_fColor[1]*255, pTerrain->m_fColor[2]*255);
|
|
m_strTexture = pTerrain->m_strTexture;
|
|
m_bFlat = (pTerrain->m_nOptions & LC_TERRAIN_FLAT) != 0;
|
|
m_bTexture = (pTerrain->m_nOptions & LC_TERRAIN_TEXTURE) != 0;
|
|
m_bSmooth = (pTerrain->m_nOptions & LC_TERRAIN_SMOOTH) != 0;
|
|
}
|
|
|
|
void CTerrainOptionsDlg::GetOptions(Terrain* pTerrain)
|
|
{
|
|
pTerrain->SetSize(m_fXSize, m_fYSize);
|
|
pTerrain->SetPatchCount(m_nXPatches, m_nYPatches);
|
|
pTerrain->m_fColor[0] = (float)GetRValue(m_crTerrain)/255;
|
|
pTerrain->m_fColor[1] = (float)GetGValue(m_crTerrain)/255;
|
|
pTerrain->m_fColor[2] = (float)GetBValue(m_crTerrain)/255;
|
|
pTerrain->m_nOptions = 0;
|
|
strcpy(pTerrain->m_strTexture, m_strTexture);
|
|
|
|
if (m_bFlat) pTerrain->m_nOptions |= LC_TERRAIN_FLAT;
|
|
if (m_bTexture) pTerrain->m_nOptions |= LC_TERRAIN_TEXTURE;
|
|
if (m_bSmooth) pTerrain->m_nOptions |= LC_TERRAIN_SMOOTH;
|
|
}
|
|
|
|
BOOL CTerrainOptionsDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
DeleteObject(m_btnColor.SetBitmap(CreateColorBitmap (20, 10, m_crTerrain)));
|
|
|
|
return TRUE;
|
|
}
|