www.pudn.com > PKEncodeDemo.zip > EncodeDlg.cpp


// EncodeDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Sample.h" 
#include "EncodeDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CEncodeDlg dialog 
 
 
CEncodeDlg::CEncodeDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CEncodeDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CEncodeDlg) 
	m_percent = 10; 
	m_data = _T(""); 
	m_isTruncated = FALSE; 
	m_cols = 0; 
	m_aspectW = 0; 
	m_aspectH = 0; 
	m_level = 9; 
	m_radioAspect = 0; 
	m_moduleRatio = 0; 
	m_xModule = 0; 
	m_rows = 0; 
	m_bottomSpace = 0; 
	m_leftSpace = 0; 
	m_rightSpace = 0; 
	m_topSpace = 0; 
	m_fileName = _T(""); 
	m_startX = 0; 
	m_startY = 0; 
	m_isPaste = FALSE; 
	//}}AFX_DATA_INIT 
} 
 
 
void CEncodeDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CEncodeDlg) 
	DDX_Control(pDX, IDC_FILE_NAME, m_ctrFileName); 
	DDX_Control(pDX, IDC_START_Y, m_ctrStartY); 
	DDX_Control(pDX, IDC_START_X, m_ctrStartX); 
	DDX_Control(pDX, IDC_BUTTON_BROWSE, m_ctrBrowse); 
	DDX_Control(pDX, IDC_ROWS, m_ctrRows); 
	DDX_Control(pDX, IDC_COLS, m_ctrCols); 
	DDX_Control(pDX, IDC_ASPECT_W, m_ctrAspectW); 
	DDX_Control(pDX, IDC_ASPECT_H, m_ctrAspectH); 
	DDX_Control(pDX, IDC_ECC_LEVEL, m_ctrLevel); 
	DDX_Control(pDX, IDC_ECC_PERCENT, m_ctrPercent); 
	DDX_Text(pDX, IDC_ECC_PERCENT, m_percent); 
	DDX_Text(pDX, IDC_ENCODE_DATA, m_data); 
	DDX_Check(pDX, IDC_TRUNCATED, m_isTruncated); 
	DDX_Text(pDX, IDC_COLS, m_cols); 
	DDX_Text(pDX, IDC_ASPECT_W, m_aspectW); 
	DDX_Text(pDX, IDC_ASPECT_H, m_aspectH); 
	DDX_CBIndex(pDX, IDC_ECC_LEVEL, m_level); 
	DDX_Radio(pDX, IDC_RADIO_AESPECT, m_radioAspect); 
	DDX_Text(pDX, IDC_DIM_RATIO, m_moduleRatio); 
	DDX_Text(pDX, IDC_XDIM, m_xModule); 
	DDX_Text(pDX, IDC_ROWS, m_rows); 
	DDX_Text(pDX, IDC_BOTTOM_SPACE, m_bottomSpace); 
	DDX_Text(pDX, IDC_LEFT_SPACE, m_leftSpace); 
	DDX_Text(pDX, IDC_RIGHT_SPACE, m_rightSpace); 
	DDX_Text(pDX, IDC_TOP_SPACE, m_topSpace); 
	DDX_Text(pDX, IDC_FILE_NAME, m_fileName); 
	DDX_Text(pDX, IDC_START_X, m_startX); 
	DDX_Text(pDX, IDC_START_Y, m_startY); 
	DDX_Check(pDX, IDC_CHECK_WRITE_FILE, m_isPaste); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CEncodeDlg, CDialog) 
	//{{AFX_MSG_MAP(CEncodeDlg) 
	ON_CBN_SELCHANGE(IDC_ECC_LEVEL, OnSelchangeEccLevel) 
	ON_BN_CLICKED(IDC_RADIO_AESPECT, OnRadioAespect) 
	ON_BN_CLICKED(IDC_RADIO_COLUMNS, OnRadioColumns) 
	ON_WM_PAINT() 
	ON_BN_CLICKED(IDC_CHECK_WRITE_FILE, OnCheckWriteFile) 
	ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CEncodeDlg message handlers 
void CEncodeDlg::OnSelchangeEccLevel()  
{ 
    int ret=m_ctrLevel.GetCurSel(); 
	if(ret != 9) 
		m_ctrPercent.EnableWindow(FALSE); 
	else 
		m_ctrPercent.EnableWindow(TRUE); 
} 
 
void CEncodeDlg::OnRadioAespect()  
{ 
    m_ctrAspectH.EnableWindow( TRUE ); 
	m_ctrAspectW.EnableWindow( TRUE ); 
	m_ctrCols.EnableWindow( FALSE ); 
	m_ctrRows.EnableWindow( FALSE ); 
} 
 
void CEncodeDlg::OnRadioColumns()  
{ 
	m_ctrAspectH.EnableWindow( FALSE ); 
	m_ctrAspectW.EnableWindow( FALSE ); 
 	m_ctrCols.EnableWindow( TRUE ); 
	m_ctrRows.EnableWindow( TRUE ); 
	 
} 
 
void CEncodeDlg::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
	 
	if(m_radioAspect == 0 ) 
	{ 
		m_ctrCols.EnableWindow( FALSE ); 
		m_ctrRows.EnableWindow( FALSE ); 
	} 
	if(m_radioAspect == 1) 
	{ 
		m_ctrAspectW.EnableWindow( FALSE ); 
		m_ctrAspectH.EnableWindow( FALSE ); 
	} 
	 
	if(m_level != 9) 
		m_ctrPercent.EnableWindow(FALSE); 
		 
	m_ctrBrowse.EnableWindow  ( m_isPaste ); 
	m_ctrFileName.EnableWindow( m_isPaste ); 
	m_ctrStartX.EnableWindow  ( m_isPaste ); 
	m_ctrStartY.EnableWindow  ( m_isPaste ); 
	 
	 
	// Do not call CDialog::OnPaint() for painting messages 
} 
 
 
void CEncodeDlg::OnCheckWriteFile()  
{ 
	// TODO: Add your control notification handler code here 
	UpdateData(TRUE); 
	m_ctrBrowse.EnableWindow  ( m_isPaste ); 
	m_ctrFileName.EnableWindow( m_isPaste ); 
	m_ctrStartX.EnableWindow  ( m_isPaste ); 
	m_ctrStartY.EnableWindow  ( m_isPaste ); 
} 
 
 
 
struct DocType 
{ 
public: 
	int nID; 
	BOOL bRead; //if the SDK can read  the image of this format; 
	BOOL bWrite;//if the SDK can write the image of this format; 
	const char* description; 
	const char* ext; 
}; 
 
enum ENUM_PTIMAGE_FORMATS 
{ 
		PTIMAGE_FORMAT_UNKNOWN, 
		PTIMAGE_FORMAT_BMP, 
		PTIMAGE_FORMAT_GIF, 
		PTIMAGE_FORMAT_JPG, 
		PTIMAGE_FORMAT_PNG, 
		PTIMAGE_FORMAT_MNG, 
		PTIMAGE_FORMAT_ICO, 
		PTIMAGE_FORMAT_TIF, 
		PTIMAGE_FORMAT_TGA, 
		PTIMAGE_FORMAT_PCX, 
		PTIMAGE_FORMAT_WBMP, 
		PTIMAGE_FORMAT_WMF, 
		PTIMAGE_FORMAT_J2K, 
		PTIMAGE_FORMAT_JBG, 
		PTIMAGE_FORMAT_JP2, 
		PTIMAGE_FORMAT_JPC, 
		PTIMAGE_FORMAT_PGX, 
		PTIMAGE_FORMAT_PNM, 
		PTIMAGE_FORMAT_RAS, 
		PTMAX_IMAGE_FORMATS 
}; 
 
DocType doctypes[PTMAX_IMAGE_FORMATS] = 
{ 
	{ -1, TRUE, TRUE, "Supported files", "*.bmp;*.gif;*.jpg;*.jpeg;*.png;*.ico;*.tif;*.tiff;*.tga;*.pcx;*.wbmp;*.wmf;*.emf;*.j2k;*.jp2;*.jbg;*.j2c;*.jpc;*.pgx;*.pnm;*.pgm;*.ppm;*.ras" }, 
	{ PTIMAGE_FORMAT_BMP, TRUE, TRUE, "BMP files", "*.bmp" }, 
	{ PTIMAGE_FORMAT_GIF, TRUE, TRUE, "GIF files", "*.gif" }, 
	{ PTIMAGE_FORMAT_JPG, TRUE, TRUE, "JPG files", "*.jpg;*.jpeg" }, 
	{ PTIMAGE_FORMAT_PNG, TRUE, TRUE, "PNG files", "*.png" }, 
	{ PTIMAGE_FORMAT_MNG, TRUE, TRUE, "MNG files", "*.mng;*.jng;*.png" }, 
	{ PTIMAGE_FORMAT_ICO, TRUE, TRUE, "ICO CUR files", "*.ico;*.cur" }, 
	{ PTIMAGE_FORMAT_TIF, TRUE, TRUE, "TIF files", "*.tif;*.tiff" }, 
	{ PTIMAGE_FORMAT_TGA, TRUE, TRUE, "TGA files", "*.tga" }, 
	{ PTIMAGE_FORMAT_PCX, TRUE, TRUE, "PCX files", "*.pcx" }, 
	{ PTIMAGE_FORMAT_WBMP, TRUE, TRUE, "WBMP files", "*.wbmp" }, 
	{ PTIMAGE_FORMAT_WMF, TRUE, FALSE, "WMF EMF files", "*.wmf;*.emf" }, 
	{ PTIMAGE_FORMAT_J2K, TRUE, TRUE, "J2K files", "*.j2k;*.jp2" }, 
	{ PTIMAGE_FORMAT_JBG, TRUE, TRUE, "JBG files", "*.jbg" }, 
	{ PTIMAGE_FORMAT_JP2, TRUE, TRUE, "JP2 files", "*.j2k;*.jp2" }, 
	{ PTIMAGE_FORMAT_JPC, TRUE, TRUE, "JPC files", "*.j2c;*.jpc" }, 
	{ PTIMAGE_FORMAT_PGX, TRUE, TRUE, "PGX files", "*.pgx" }, 
	{ PTIMAGE_FORMAT_RAS, TRUE, TRUE, "RAS files", "*.ras" }, 
	{ PTIMAGE_FORMAT_PNM, TRUE, TRUE, "PNM files", "*.pnm;*.pgm;*.ppm" } 
}; 
 
 
CString GetFileTypes(BOOL bOpenFileDialog) 
{ 
	CString str; 
	for (int i=0;i