📄 generalpage.cpp
字号:
// GeneralPage.cpp : implementation file
//
#include "stdafx.h"
#include "RSIP.h"
#include "GeneralPage.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGeneralPage property page
IMPLEMENT_DYNCREATE(CGeneralPage, CPropertyPage)
CGeneralPage::CGeneralPage() : CPropertyPage(CGeneralPage::IDD)
{
//{{AFX_DATA_INIT(CGeneralPage)
m_nDay = 0;
m_nYear = 0;
m_nMonth = 0;
m_dHResolution = 1.0;
m_dVResolution = 1.0;
m_nImgWidth = 0;
m_nImgHeight = 0;
m_szImgName = _T("");
m_nImgType = 0;
//}}AFX_DATA_INIT
m_dwImageSize = 0;
m_MinWaveLength = 0;
m_MaxWaveLength = 0;
m_dwDate = 0;
}
CGeneralPage::~CGeneralPage()
{
}
void CGeneralPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGeneralPage)
DDX_Control(pDX, IDC_MINWAVELENGTH, m_cMinWaveLength);
DDX_Control(pDX, IDC_MAXWAVELENGTH, m_cMaxWaveLength);
DDX_Text(pDX, IDC_DAY, m_nDay);
DDX_Text(pDX, IDC_YEAR, m_nYear);
DDX_Text(pDX, IDC_MONTH, m_nMonth);
DDX_Text(pDX, IDC_HRESOLUTION, m_dHResolution);
DDX_Text(pDX, IDC_VRESOLUTION, m_dVResolution);
DDX_Text(pDX, IDC_IMGWIDTH, m_nImgWidth);
DDX_Text(pDX, IDC_IMGHEIGHT, m_nImgHeight);
DDX_Text(pDX, IDC_IMGNAME, m_szImgName);
DDX_Radio(pDX, IDC_SINGLEBAND_RADIO, m_nImgType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGeneralPage, CPropertyPage)
//{{AFX_MSG_MAP(CGeneralPage)
ON_BN_CLICKED(IDC_INCHEIGHT, OnIncHeight)
ON_BN_CLICKED(IDC_INCWIDTH, OnIncWidth)
ON_BN_CLICKED(IDC_SINGLEBAND_RADIO, OnSinglebandRadio)
ON_BN_CLICKED(IDC_THEMATIC_RADIO, OnThematicRadio)
ON_BN_CLICKED(IDC_COMBINE_RADIO, OnCombineRadio)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGeneralPage message handlers
BOOL CGeneralPage::GetHeightAndWidth(DWORD Size,int *Height,int *Width,int BegSearch,BOOL Up)
{
if(Size == 0) return FALSE;
DWORD Guess;
DWORD i;
if(Up==TRUE)
{
for(i=BegSearch+1; i<=Size; i++)
{
Guess = Size/i;
if((DWORD)Guess*i==Size)
break;
}
}
else
{
for(i=BegSearch-1; i>0; i--)
{
Guess = Size/i;
if((DWORD)Guess*i==Size)
break;
}
}
if((int)Guess<=0 || (int)i<=0)
return FALSE;
*Width = (int)Guess;
*Height = (int)i;
if(Guess*i != Size)
return FALSE;
return TRUE;
}
void CGeneralPage::SetWaveLengthValue()
{
if(m_cMinWaveLength.GetCount()!=0)
m_cMinWaveLength.ResetContent();
if(m_cMaxWaveLength.GetCount()!=0)
m_cMaxWaveLength.ResetContent();
m_cMinWaveLength.AddString("0.0微米(缺省)");
m_cMinWaveLength.AddString("0.45微米(TM1)");
m_cMinWaveLength.AddString("0.52微米(TM2)");
m_cMinWaveLength.AddString("0.63微米(TM3)");
m_cMinWaveLength.AddString("0.76微米(TM4)");
m_cMinWaveLength.AddString("1.55微米(TM5)");
m_cMinWaveLength.AddString("2.08微米(TM7)");
m_cMinWaveLength.AddString("10.40微米(TM6)");
m_cMaxWaveLength.AddString("0.0微米(缺省)");
m_cMaxWaveLength.AddString("0.50微米(TM1)");
m_cMaxWaveLength.AddString("0.60微米(TM2)");
m_cMaxWaveLength.AddString("0.69微米(TM3)");
m_cMaxWaveLength.AddString("0.94微米(TM4)");
m_cMaxWaveLength.AddString("1.75微米(TM5)");
m_cMaxWaveLength.AddString("2.35微米(TM7)");
m_cMaxWaveLength.AddString("12.50微米(TM6)");
}
BOOL CGeneralPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// Set wavelength value
SetWaveLengthValue();
// set the image type and wavelength
DWORD dwSize;
if(m_nImgType == 2) //Combined image
{
dwSize = m_dwImageSize/3;
m_cMinWaveLength.EnableWindow(FALSE);
m_cMaxWaveLength.EnableWindow(FALSE);
CheckDlgButton(IDC_COMBINE_RADIO,1);
}
else if(m_nImgType ==1)
{
dwSize = m_dwImageSize;
m_cMinWaveLength.EnableWindow(FALSE);
m_cMaxWaveLength.EnableWindow(FALSE);
CheckDlgButton(IDC_THEMATIC_RADIO,1);
}
else
{
dwSize = m_dwImageSize;
m_cMinWaveLength.EnableWindow(TRUE);
m_cMaxWaveLength.EnableWindow(TRUE);
CheckDlgButton(IDC_SINGLEBAND_RADIO,1);
m_cMinWaveLength.SetCurSel(m_MinWaveLength);
m_cMaxWaveLength.SetCurSel(m_MaxWaveLength);
}
// Set the height and width
if(m_nImgWidth!=0 && m_nImgHeight!=0)
{
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
else
{
int sqrtSize = (int)sqrt(dwSize)+1;
if(GetHeightAndWidth(dwSize,&m_nImgHeight,&m_nImgWidth,sqrtSize,FALSE))
{
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
}
// Set the resolution
if(m_dHResolution!=0.0 && m_dVResolution!=0.0)
{
char szTemp[20];
sprintf(szTemp,"%.2f",m_dHResolution);
SetDlgItemText(IDC_HRESOLUTION,szTemp);
sprintf(szTemp,"%.2f",m_dVResolution);
SetDlgItemText(IDC_VRESOLUTION,szTemp);
}
// set the image name and date
if(m_szImgName != _T(""))
{
SetDlgItemText(IDC_IMGNAME,m_szImgName);
}
if(m_dwDate != 0)
{
int temp;
m_nYear = m_dwDate/10000;
temp = m_dwDate%10000;
m_nMonth = temp/100;
m_nDay = temp%100;
SetDlgItemInt(IDC_YEAR,m_nYear);
SetDlgItemInt(IDC_MONTH,m_nMonth);
SetDlgItemInt(IDC_DAY,m_nDay);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGeneralPage::OnSinglebandRadio()
{
if(m_nImgType == 0)
return;
m_nImgType = 0;
GetDlgItem(IDC_MINWAVELENGTH)->EnableWindow(TRUE);
GetDlgItem(IDC_MAXWAVELENGTH)->EnableWindow(TRUE);
m_cMinWaveLength.SetCurSel(m_MinWaveLength);
m_cMaxWaveLength.SetCurSel(m_MaxWaveLength);
DWORD dwSize;
dwSize = m_dwImageSize;
int SqrtSize = (int)sqrt(dwSize)+1;
if(GetHeightAndWidth(dwSize,&m_nImgHeight,&m_nImgWidth,SqrtSize,FALSE))
{
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
}
void CGeneralPage::OnThematicRadio()
{
if(m_nImgType == 1)
return;
m_nImgType = 1;
GetDlgItem(IDC_MINWAVELENGTH)->EnableWindow(FALSE);
GetDlgItem(IDC_MAXWAVELENGTH)->EnableWindow(FALSE);
//m_cMinWaveLength.SetCurSel(0);
//m_cMaxWaveLength.SetCurSel(0);
DWORD dwSize;
dwSize = m_dwImageSize;
int SqrtSize = (int)sqrt(dwSize)+1;
if(GetHeightAndWidth(dwSize,&m_nImgHeight,&m_nImgWidth,SqrtSize,FALSE))
{
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
}
void CGeneralPage::OnCombineRadio()
{
if(m_nImgType == 2)
return;
m_nImgType = 2;
GetDlgItem(IDC_MINWAVELENGTH)->EnableWindow(FALSE);
GetDlgItem(IDC_MAXWAVELENGTH)->EnableWindow(FALSE);
//m_cMinWaveLength.SetCurSel(0);
//m_cMaxWaveLength.SetCurSel(0);
DWORD dwSize;
dwSize = m_dwImageSize/3;
int SqrtSize = (int)sqrt(dwSize)+1;
if(GetHeightAndWidth(dwSize,&m_nImgHeight,&m_nImgWidth,SqrtSize,FALSE))
{
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
}
void CGeneralPage::OnIncHeight()
{
if(m_dwImageSize == 0)
return;
int TempCol = m_nImgWidth;
int TempRow = m_nImgHeight;
DWORD dwSize;
if(m_nImgType == 2) //Combined image
dwSize = m_dwImageSize/3;
else
dwSize = m_dwImageSize;
if(GetHeightAndWidth(dwSize,&TempRow,&TempCol,m_nImgHeight,1))
{
m_nImgHeight = TempRow;
m_nImgWidth = TempCol;
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
}
void CGeneralPage::OnIncWidth()
{
if(m_dwImageSize == 0)
return;
int TempCol = m_nImgWidth;
int TempRow = m_nImgHeight;
DWORD dwSize;
if(m_nImgType == 2) //Combined image
dwSize = m_dwImageSize/3;
else
dwSize = m_dwImageSize;
if(GetHeightAndWidth(dwSize,&TempRow,&TempCol,m_nImgHeight,0))
{
m_nImgHeight = TempRow;
m_nImgWidth = TempCol;
SetDlgItemInt(IDC_IMGWIDTH,m_nImgWidth);
SetDlgItemInt(IDC_IMGHEIGHT,m_nImgHeight);
}
}
BOOL CGeneralPage::OnKillActive()
{
UpdateData();
if(m_dHResolution<0 || m_dVResolution<0)
{
MessageBox("分辨率输入值错误!");
return FALSE;
}
if(m_nYear!=0 && m_nMonth!=0 && m_nDay!=0)
{
if(m_nYear<1960 || m_nYear>2050 ||
m_nMonth<=0 || m_nMonth>12 ||
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -