// SensorCtrlDlg.cpp : implementation file
//

#include "stdafx.h"
#include "DVP2420Sample.h"
#include "SensorCtrlDlg.h"
#include "DVP2420SampleDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSensorCtrlDlg dialog


CSensorCtrlDlg::CSensorCtrlDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSensorCtrlDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSensorCtrlDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CSensorCtrlDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSensorCtrlDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSensorCtrlDlg, CDialog)
	//{{AFX_MSG_MAP(CSensorCtrlDlg)
	ON_WM_HSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSensorCtrlDlg message handlers

BOOL CSensorCtrlDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_nChNum = ((CComboBox *)GetParent()->GetDlgItem(IDC_CHANNEL_COMBO))->GetCurSel();

	((CSliderCtrl *)GetDlgItem(IDC_BRIGHTNESS_SLIDER))->SetRange(0, 255);
	((CSliderCtrl *)GetDlgItem(IDC_CONTRAST_SLIDER))->SetRange(0, 127);
	((CSliderCtrl *)GetDlgItem(IDC_SATURATION_SLIDER))->SetRange(0, 127);
	((CSliderCtrl *)GetDlgItem(IDC_HUE_SLIDER))->SetRange(-128, 127);

	char sSliderPos[10];
	if (pDVPEncSDK->DVP2420_GetBrightness(m_nChNum, &m_nBrightness) == ENC_SUCCEEDED)
	{
		itoa(m_nBrightness, sSliderPos, 10);
		SetDlgItemText(IDC_BRIGHTNESS_TEXT, sSliderPos);
		((CSliderCtrl *)GetDlgItem(IDC_BRIGHTNESS_SLIDER))->SetPos(m_nBrightness);
		GetDlgItem(IDC_BRIGHTNESS_SLIDER)->EnableWindow(TRUE);
	}

	if (pDVPEncSDK->DVP2420_GetContrast(m_nChNum, &m_nContrast) == ENC_SUCCEEDED)
	{
		itoa(m_nContrast, sSliderPos, 10);
		SetDlgItemText(IDC_CONTRAST_TEXT, sSliderPos);
		((CSliderCtrl *)GetDlgItem(IDC_CONTRAST_SLIDER))->SetPos(m_nContrast);
		GetDlgItem(IDC_CONTRAST_SLIDER)->EnableWindow(TRUE);
	}

	if (pDVPEncSDK->DVP2420_GetSaturation(m_nChNum, &m_nSaturation) == ENC_SUCCEEDED)
	{
		itoa(m_nSaturation, sSliderPos, 10);
		SetDlgItemText(IDC_SATURATION_TEXT, sSliderPos);
		((CSliderCtrl *)GetDlgItem(IDC_SATURATION_SLIDER))->SetPos(m_nSaturation);
		GetDlgItem(IDC_SATURATION_SLIDER)->EnableWindow(TRUE);
	}

	if (pDVPEncSDK->DVP2420_GetHue(m_nChNum, &m_nHue) == ENC_SUCCEEDED)
	{
		itoa(m_nHue, sSliderPos, 10);
		SetDlgItemText(IDC_HUE_TEXT, sSliderPos);
		((CSliderCtrl *)GetDlgItem(IDC_HUE_SLIDER))->SetPos(-128);
		((CSliderCtrl *)GetDlgItem(IDC_HUE_SLIDER))->SetPos(m_nHue);
		GetDlgItem(IDC_HUE_SLIDER)->EnableWindow(TRUE);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSensorCtrlDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	UINT SliderID = pScrollBar->GetDlgCtrlID();
	CSliderCtrl *pSliderCtrl = (CSliderCtrl *)GetDlgItem(SliderID);
	int nSliderPos = pSliderCtrl->GetPos();
	char sSliderPos[10];
	itoa(nSliderPos, sSliderPos, 10);

	switch(SliderID)
	{
		case IDC_BRIGHTNESS_SLIDER:
			SetDlgItemText(IDC_BRIGHTNESS_TEXT, sSliderPos);
			pDVPEncSDK->DVP2420_SetBrightness(m_nChNum, nSliderPos);
			break;
		case IDC_CONTRAST_SLIDER:
			SetDlgItemText(IDC_CONTRAST_TEXT, sSliderPos);
			pDVPEncSDK->DVP2420_SetContrast(m_nChNum, nSliderPos);
			break;
		case IDC_SATURATION_SLIDER:
			SetDlgItemText(IDC_SATURATION_TEXT, sSliderPos);
			pDVPEncSDK->DVP2420_SetSaturation(m_nChNum, nSliderPos);
			break;
		case IDC_HUE_SLIDER:
			SetDlgItemText(IDC_HUE_TEXT, sSliderPos);
			pDVPEncSDK->DVP2420_SetHue(m_nChNum, nSliderPos);
			break;
	}
	
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CSensorCtrlDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	pDVPEncSDK->DVP2420_SetBrightness(m_nChNum, m_nBrightness);	
	pDVPEncSDK->DVP2420_SetContrast(m_nChNum, m_nContrast);
	pDVPEncSDK->DVP2420_SetSaturation(m_nChNum, m_nSaturation);
	pDVPEncSDK->DVP2420_SetHue(m_nChNum, m_nHue);

	CDialog::OnCancel();
}
