// DlgCfgOsd.cpp : implementation file
//

#include "stdafx.h"
#include "NetSdkDemo.h"
#include "DlgCfgOsd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgCfgOsd dialog


CDlgCfgOsd::CDlgCfgOsd(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgCfgOsd::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgCfgOsd)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_bGetParam = FALSE;
}


void CDlgCfgOsd::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgCfgOsd)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgCfgOsd, CDialog)
	//{{AFX_MSG_MAP(CDlgCfgOsd)
	ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
	ON_BN_CLICKED(IDC_BTN_UP, OnBtnUp)
	ON_BN_CLICKED(IDC_BTN_DOWN, OnBtnDown)
	ON_BN_CLICKED(IDC_BTN_LEFT, OnBtnLeft)
	ON_BN_CLICKED(IDC_BTN_RIGHT, OnBtnRight)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgCfgOsd message handlers
static int GetFontColorInx(MR_RGBA *pColor)
{
	int nIndex = 0;
	if(pColor->byRed == 255
		&& pColor->byGreen == 255
		&& pColor->byBlue == 255)
		nIndex = 0;
	else if(pColor->byRed == 0
		&& pColor->byGreen == 0
		&& pColor->byBlue == 0)
		nIndex = 1;
	else if(pColor->byRed == 255
		&& pColor->byGreen == 0
		&& pColor->byBlue == 0)
		nIndex = 2;
	else if(pColor->byRed == 255
		&& pColor->byGreen == 255
		&& pColor->byBlue == 0)
		nIndex = 3;
	else if(pColor->byRed == 0
		&& pColor->byGreen == 0
		&& pColor->byBlue == 255)
		nIndex = 4;
	return nIndex;
}

static void GetFontColorValue(int nIndex, MR_RGBA *pColor)
{
	if(nIndex == 0)
	{
		pColor->byRed = 255;
		pColor->byGreen = 255;
		pColor->byBlue = 255;
	}
	else if(nIndex == 1)
	{
		pColor->byRed = 0;
		pColor->byGreen = 0;
		pColor->byBlue = 0;
	}
	else if(nIndex == 2)
	{
		pColor->byRed = 255;
		pColor->byGreen = 0;
		pColor->byBlue = 0;
	}
	else if(nIndex == 3)
	{
		pColor->byRed = 255;
		pColor->byGreen = 255;
		pColor->byBlue = 0;
	}
	else if(nIndex == 4)
	{
		pColor->byRed = 0;
		pColor->byGreen = 0;
		pColor->byBlue = 255;
	}
}
BOOL CDlgCfgOsd::GetEnvParam()
{
	int i, iRet;
	//if(m_bGetParam)
	//	return TRUE;
	iRet = librmconfc_env_get(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_TTFFONTSIZE, sizeof(MRCONFC_OSDFONTSIZE_TTF_CFG), &m_stFontSize);
	if(iRet)
	{
		AfxMessageBox("获得参数失败!");
		return FALSE;
	}
	iRet = librmconfc_env_get(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_VIDEOOSD, sizeof(MRCONFC_VIDEOOSD_CFG), &m_stOsd);
	
	SetDlgItemInt(IDC_EDT_FONTSIZE1, m_stFontSize.nFontSize[0]);
	SetDlgItemInt(IDC_EDT_FONTSIZE2, m_stFontSize.nFontSize[1]);
	((CButton*)GetDlgItem(IDC_CHK_AUTOSIZE))->SetCheck(m_stFontSize.bAutoSize);

	((CButton*)GetDlgItem(IDC_CHK_OSDTIME))->SetCheck(m_stOsd.stTime.bEnable);
	((CButton*)GetDlgItem(IDC_CHK_OSDNAME))->SetCheck(m_stOsd.stTitle.bEnable);

	((CComboBox*)GetDlgItem(IDC_CMB_TIMECOLOR))->SetCurSel(GetFontColorInx(&m_stOsd.stTime.stFtColor));
	((CComboBox*)GetDlgItem(IDC_CMB_NAMECOLOR))->SetCurSel(GetFontColorInx(&m_stOsd.stTitle.stFtColor));
	
	((CButton*)GetDlgItem(IDC_RADIO_TIME))->SetCheck(TRUE);
	m_bGetParam = TRUE;
	return TRUE;
}

void CDlgCfgOsd::OnBtnSave() 
{
	int iRet;
	if(!m_bGetParam)
		return;

	m_stFontSize.nFontSize[0] = GetDlgItemInt(IDC_EDT_FONTSIZE1);
	m_stFontSize.nFontSize[1] = GetDlgItemInt(IDC_EDT_FONTSIZE2);
	m_stFontSize.bAutoSize = ((CButton*)GetDlgItem(IDC_CHK_AUTOSIZE))->GetCheck();

	m_stOsd.stTime.bEnable  = ((CButton*)GetDlgItem(IDC_CHK_OSDTIME))->GetCheck();
	m_stOsd.stTitle.bEnable = ((CButton*)GetDlgItem(IDC_CHK_OSDNAME))->GetCheck();

	GetFontColorValue(((CComboBox*)GetDlgItem(IDC_CMB_TIMECOLOR))->GetCurSel(), &m_stOsd.stTime.stFtColor);
	GetFontColorValue(((CComboBox*)GetDlgItem(IDC_CMB_NAMECOLOR))->GetCurSel(), &m_stOsd.stTitle.stFtColor);

	iRet = librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_TTFFONTSIZE, sizeof(MRCONFC_OSDFONTSIZE_TTF_CFG), &m_stFontSize);
	if(iRet)
	{
		AfxMessageBox("保存参数失败!");
		return;
	}

	iRet = librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_VIDEOOSD, sizeof(MRCONFC_VIDEOOSD_CFG), &m_stOsd);
	if(iRet)
	{
		AfxMessageBox("保存参数失败!");
		return;
	}
}

void CDlgCfgOsd::OnBtnUp() 
{
	if(!m_bGetParam)
		return;
	MRCONFC_OSDCHN_T *pOsdChn = ((CButton*)GetDlgItem(IDC_RADIO_TIME))->GetCheck() ? &m_stOsd.stTime : &m_stOsd.stTitle;
	if(pOsdChn->nYPos <= 0)
		return;
	pOsdChn->nYPos -= 400;
	pOsdChn->nYPos  = pOsdChn->nYPos < 0 ? 0 : pOsdChn->nYPos;
	librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_VIDEOOSD, sizeof(MRCONFC_VIDEOOSD_CFG), &m_stOsd);
}

void CDlgCfgOsd::OnBtnDown() 
{
	if(!m_bGetParam)
		return;
	MRCONFC_OSDCHN_T *pOsdChn = ((CButton*)GetDlgItem(IDC_RADIO_TIME))->GetCheck() ? &m_stOsd.stTime : &m_stOsd.stTitle;
	if(pOsdChn->nYPos >= 10000)
		return;
	pOsdChn->nYPos += 400;
	pOsdChn->nYPos  = pOsdChn->nYPos > 10000 ? 10000 : pOsdChn->nYPos;
	librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_VIDEOOSD, sizeof(MRCONFC_VIDEOOSD_CFG), &m_stOsd);
	
}

void CDlgCfgOsd::OnBtnLeft() 
{
	if(!m_bGetParam)
		return;
	MRCONFC_OSDCHN_T *pOsdChn = ((CButton*)GetDlgItem(IDC_RADIO_TIME))->GetCheck() ? &m_stOsd.stTime : &m_stOsd.stTitle;
	if(pOsdChn->nXPos <= 0)
		return;
	pOsdChn->nXPos -= 400;
	pOsdChn->nXPos  = pOsdChn->nXPos < 0 ? 0 : pOsdChn->nXPos;
	librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_VIDEOOSD, sizeof(MRCONFC_VIDEOOSD_CFG), &m_stOsd);
	
}

void CDlgCfgOsd::OnBtnRight() 
{
	if(!m_bGetParam)
		return;
	MRCONFC_OSDCHN_T *pOsdChn = ((CButton*)GetDlgItem(IDC_RADIO_TIME))->GetCheck() ? &m_stOsd.stTime : &m_stOsd.stTitle;
	if(pOsdChn->nXPos >= 10000)
		return;
	pOsdChn->nXPos += 400;
	pOsdChn->nXPos  = pOsdChn->nXPos > 10000 ? 10000 : pOsdChn->nXPos;
	librmconfc_env_set(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_ENVCMD_VIDEOOSD, sizeof(MRCONFC_VIDEOOSD_CFG), &m_stOsd);
}
