188 lines
5.5 KiB
C++
188 lines
5.5 KiB
C++
// GenerationParam.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "GenerationParam.h"
|
|
#include "Noise.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CGenerationParam dialog
|
|
|
|
|
|
CGenerationParam::CGenerationParam(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CGenerationParam::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CGenerationParam)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CGenerationParam::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CGenerationParam)
|
|
DDX_Slider(pDX, IDC_PASSES, m_sldPasses);
|
|
DDX_Slider(pDX, IDC_FREQUENCY, m_sldFrequency);
|
|
DDX_Slider(pDX, IDC_FREQSTEP, m_sldFrequencyStep);
|
|
DDX_Slider(pDX, IDC_FADE, m_sldFade);
|
|
DDX_Slider(pDX, IDC_COVER, m_sldCover);
|
|
DDX_Slider(pDX, IDC_RAND, m_sldRandomBase);
|
|
DDX_Slider(pDX, IDC_SHARPNESS, m_sldSharpness);
|
|
DDX_Slider(pDX, IDC_BLUR, m_sldBlur);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGenerationParam, CDialog)
|
|
//{{AFX_MSG_MAP(CGenerationParam)
|
|
ON_WM_HSCROLL()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CGenerationParam message handlers
|
|
|
|
BOOL CGenerationParam::OnInitDialog()
|
|
{
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Set the ranges for the slider controls
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
CSliderCtrl ctrlSlider;
|
|
|
|
CLogFile::WriteLine("Opening generation parameter dialog...");
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_PASSES)->m_hWnd));
|
|
ctrlSlider.SetRange(1, 10, TRUE);
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_FREQUENCY)->m_hWnd));
|
|
ctrlSlider.SetRange(10, 100, TRUE); // Has to be divided by 10
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_FREQSTEP)->m_hWnd));
|
|
ctrlSlider.SetRange(10, 25, TRUE); // Has to be divided by 10
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_FADE)->m_hWnd));
|
|
ctrlSlider.SetRange(1, 20, TRUE); // Has to be divided by 10
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_COVER)->m_hWnd));
|
|
ctrlSlider.SetRange(0, 255, TRUE);
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_RAND)->m_hWnd));
|
|
ctrlSlider.SetRange(0, 32, TRUE);
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_SHARPNESS)->m_hWnd));
|
|
ctrlSlider.SetRange(990, 999, TRUE); // Has to be divided by 1000
|
|
ctrlSlider.Detach();
|
|
|
|
VERIFY(ctrlSlider.Attach(GetDlgItem(IDC_BLUR)->m_hWnd));
|
|
ctrlSlider.SetRange(0, 3, TRUE);
|
|
ctrlSlider.Detach();
|
|
|
|
UpdateStaticNum();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CGenerationParam::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
|
|
{
|
|
// TODO: Add your message handler code here and/or call default
|
|
|
|
UpdateStaticNum();
|
|
|
|
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
|
|
}
|
|
|
|
void CGenerationParam::UpdateStaticNum()
|
|
{
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Update the static number controls with the values from the sliders
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
char szFloatNum[32];
|
|
|
|
VERIFY(UpdateData(TRUE));
|
|
|
|
// Passes
|
|
SetDlgItemInt(IDC_PASSES_NUM, m_sldPasses, FALSE);
|
|
|
|
// Frequency
|
|
sprintf(szFloatNum, "%f", m_sldFrequency / 10.0f);
|
|
SetDlgItemText(IDC_FREQUENCY_NUM, szFloatNum);
|
|
|
|
// Frequency step
|
|
sprintf(szFloatNum, "%f", m_sldFrequencyStep / 10.0f);
|
|
SetDlgItemText(IDC_FREQSTEP_NUM, szFloatNum);
|
|
|
|
// Fade
|
|
sprintf(szFloatNum, "%f", m_sldFade / 10.0f);
|
|
SetDlgItemText(IDC_FADE_NUM, szFloatNum);
|
|
|
|
// Cover
|
|
SetDlgItemInt(IDC_COVER_NUM, m_sldCover, FALSE);
|
|
|
|
// Random base
|
|
SetDlgItemInt(IDC_RAND_NUM, m_sldRandomBase, FALSE);
|
|
|
|
// Sharpness
|
|
sprintf(szFloatNum, "%f", m_sldSharpness / 1000.0f);
|
|
SetDlgItemText(IDC_SHARPNESS_NUM, szFloatNum);
|
|
|
|
// Blurring
|
|
SetDlgItemInt(IDC_BLUR_NUM, m_sldBlur, FALSE);
|
|
}
|
|
|
|
void CGenerationParam::FillParam(SNoiseParams *pParam)
|
|
{
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Fill a SNoiseParams structure with the data from the dialog
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
pParam->bBlueSky = false;
|
|
pParam->fFade = m_sldFade / 10.0f;
|
|
pParam->fFrequency = m_sldFrequency / 10.0f;
|
|
pParam->fFrequencyStep = m_sldFrequencyStep / 10.0f;
|
|
pParam->iCover = m_sldCover;
|
|
pParam->iHeight = 512;
|
|
pParam->iPasses = m_sldPasses;
|
|
pParam->iRandom = m_sldRandomBase;
|
|
pParam->iSharpness = m_sldSharpness / 1000.0f;
|
|
pParam->iSmoothness = m_sldBlur;
|
|
pParam->iWidth = 512;
|
|
|
|
CLogFile::FormatLine("Retrieving parameters (fFade: %f, fFreq: %f, fFreqStep: %f) from dialog...",
|
|
pParam->fFade, pParam->fFrequency, pParam->fFrequencyStep);
|
|
}
|
|
|
|
void CGenerationParam::LoadParam(SNoiseParams *pParam)
|
|
{
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Fill the dialog with the data from the SNoiseParams structure
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
m_sldFade = (int) (pParam->fFade * 10.0f);
|
|
m_sldFrequency = (int) (pParam->fFrequency * 10.0f);
|
|
m_sldFrequencyStep = (int) (pParam->fFrequencyStep * 10.0f);
|
|
m_sldCover = pParam->iCover;
|
|
m_sldPasses = pParam->iPasses;
|
|
m_sldRandomBase = pParam->iRandom;
|
|
m_sldSharpness = (int) (pParam->iSharpness * 1000.0f);
|
|
m_sldBlur = pParam->iSmoothness;
|
|
|
|
CLogFile::FormatLine("Loading parameters (fFade: %f, fFreq: %f, fFreqStep: %f) to dialog...",
|
|
pParam->fFade, pParam->fFrequency, pParam->fFrequencyStep);
|
|
} |