//
// SetHeaderDLG.cpp : インプリメンテーション ファイル
//

#include  "SetHeaderDLG.h"



#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



using namespace jbxl;
using namespace jbxwl;



/////////////////////////////////////////////////////////////////////////////
// CSetHeaderDLG ダイアログ



//CSetHeaderDLG::CSetHeaderDLG(int h, int x, int y, int z, int d, BOOL ltend, BOOL savep, CWnd* pParent)
CSetHeaderDLG::CSetHeaderDLG(CWnd* pParent) : CDialog(CSetHeaderDLG::IDD, pParent) 
{
	//{{AFX_DATA_INIT(CSetHeaderDLG)
		// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します．
	//}}AFX_DATA_INIT

	hSize = 0;
	xSize = 512;
	ySize = 512;
	zSize = 1;
	dSize = 16;
	zBase = 0;

	ltEnd  = FALSE;
//	dicomF = FALSE;
	sPara  = FALSE;

	hEBox = NULL; 
	xEBox = NULL; 
	yEBox = NULL; 
	zEBox = NULL; 
	dEBox = NULL; 
	eCBox = NULL;
//	dCBox = NULL;
	sCBox = NULL;
	bEBox = NULL;
}






void CSetHeaderDLG::DoDataExchange(CDataExchange* pDX) 
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetHeaderDLG)
		// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します．
	//}}AFX_DATA_MAP

}



BEGIN_MESSAGE_MAP(CSetHeaderDLG, CDialog)
	//{{AFX_MSG_MAP(CSetHeaderDLG)
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDC_FH_SAVEP, &CSetHeaderDLG::OnBnClickedFhSavep)
END_MESSAGE_MAP()






/////////////////////////////////////////////////////////////////////////////
// CSetHeaderDLG メッセージ ハンドラ


void  CSetHeaderDLG::setParameter(int h, int x, int y, int z, int d, int b, BOOL ltend, BOOL dicom)
{
	if (!sPara) {	// パラメータを保存しない設定なら
		hSize = h;
		xSize = x;
		ySize = y;
		zSize = z;
		dSize = d;
	}
	zBase  = b; 
	ltEnd  = ltend;
	//dicomF = dicom;
}





BOOL   CSetHeaderDLG::OnInitDialog()
{
	TCHAR buf[LNAME];
//	memset(buf, 0, LNAME);

	hEBox = (CEdit*)GetDlgItem(IDC_FH_HSIZE);
	xEBox = (CEdit*)GetDlgItem(IDC_FH_XSIZE);
	yEBox = (CEdit*)GetDlgItem(IDC_FH_YSIZE);
	zEBox = (CEdit*)GetDlgItem(IDC_FH_ZSIZE);
	dEBox = (CEdit*)GetDlgItem(IDC_FH_DEPTH);
	sCBox = (CButton*)GetDlgItem(IDC_FH_SAVEP);

	eCBox = (CButton*)GetDlgItem(IDC_FH_LTLEND);
	bEBox = (CEdit*)GetDlgItem(IDC_FH_BASE);

	sntprintf(buf, LNAME, _T("%d"), hSize);
	hEBox->SetWindowText(buf);

	sntprintf(buf, LNAME, _T("%d"), xSize);
	xEBox->SetWindowText(buf);

	sntprintf(buf, LNAME, _T("%d"), ySize);
	yEBox->SetWindowText(buf);

	sntprintf(buf, LNAME, _T("%d"), zSize);
	zEBox->SetWindowText(buf);

	sntprintf(buf, LNAME, _T("%d"), dSize);
	dEBox->SetWindowText(buf);

	sntprintf(buf, LNAME, _T("%d"), zBase);
	bEBox->SetWindowText(buf);

	if (sPara) sCBox->SetCheck(1);
	else       sCBox->SetCheck(0);

//	if (dicomF)dCBox->SetCheck(1);
//	else       dCBox->SetCheck(0);

	if (ltEnd) eCBox->SetCheck(1);
	else       eCBox->SetCheck(0);

	return TRUE;
}





void CSetHeaderDLG::OnOK() 
{
	TCHAR buf[LNAME];
//	memset(buf, 0, LNAME);

	hEBox->GetWindowText(buf, LNAME);
	hSize = ttoi(buf);

	xEBox->GetWindowText(buf, LNAME);
	xSize = ttoi(buf);

	yEBox->GetWindowText(buf, LNAME);
	ySize = ttoi(buf);

	zEBox->GetWindowText(buf, LNAME);
	zSize = ttoi(buf);

	dEBox->GetWindowText(buf, LNAME);
	dSize = ttoi(buf);

	bEBox->GetWindowText(buf, LNAME);
	zBase = ttoi(buf);

	if (sCBox->GetCheck()==1) sPara = TRUE;
	else                      sPara = FALSE;

	if (eCBox->GetCheck()==1) ltEnd = TRUE;
	else                      ltEnd = FALSE;

/*	if (dCBox->GetCheck()==1) {
		dicomF = TRUE;
		sPara  = FALSE;
	}
	else dicomF = FALSE;
*/
	CDialog::OnOK();
	return;
}





CmnHead  CSetHeaderDLG::getCmnHead() 
{
	CmnHead  hd;
	
	init_CmnHead(&hd);
	hd.kind = 0;

	if (zBase!=0) {
		hd.kind |= HAS_BASE;
		ZeroBase = zBase;
	}

	if (ltEnd)  hd.kind |= HAS_LENDIAN;

/*	if (dicomF) {
		hd.kind |= DICOM_DATA;
		hd.xsize = 512;
		hd.ysize = 512;
		hd.depth = 16;
	}
*/
	if (sPara) {
		hd.kind |= USERSET_DATA;
		hd.xsize = xSize;
		hd.ysize = ySize;
		hd.zsize = zSize;
		hd.depth = dSize;
		hd.bsize = hSize;
		hd.lsize = xSize*ySize*zSize*((dSize+7)/8);
	}
	
	return hd;
}




void CSetHeaderDLG::OnBnClickedOk()
{
	// TODO : ここにコントロール通知ハンドラ コードを追加します．
	OnOK();
}



void CSetHeaderDLG::OnBnClickedFhSavep()
{
	// TODO: ここにコントロール通知ハンドラ コードを追加します．
}
