INDEO.CPP
// This code and information is provided "as is" without warranty of 
// any kind, either expressed or implied, including but not limited to 
// the implied warranties of merchantability and/or fitness for a 
// particular purpose. 
 
// Copyright (C) 1996 - 1997 Intel corporation.  All rights reserved. 
 
// Indeo.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "IPlay.h" 
#include "Indeo.h" 
#include "IPlayDoc.h" 
#include "Ax_Spec.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char BASED_CODE THIS_FILE[] = __FILE__; 
#endif 
 
const int BCS_MAX = 128;// used by trackbar controls 
const int BCS_TICS = 16;         
 
///////////////////////////////////////////////////////////////////////////// 
// CIndeo 
 
IMPLEMENT_DYNCREATE(CIndeo, CFormView) 
 
CIndeo::CIndeo() 
: CFormView(CIndeo::IDD) 
{ 
//{{AFX_DATA_INIT(CIndeo) 
m_bAccessKey = FALSE; 
m_dwDecodeHeight = 0; 
m_dwDecodeWidth = 0; 
m_dwDecodeX = 0; 
m_dwDecodeY = 0; 
m_dwKeyValue = 0; 
m_dwViewHeight = 0; 
m_dwViewWidth = 0; 
m_dwViewX = 0; 
m_dwViewY = 0; 
m_intBrightness = 0; 
m_intContrast = 0; 
m_intSaturation = 0; 
m_dwDecodeTime = 0; 
m_bAltLine = FALSE; 
m_intGreen = 0; 
m_intRed = 0; 
m_intBlue = 0; 
m_bDontDropFrames = FALSE; 
m_bDontDropQuality = FALSE; 
m_bViewOrigin = -1; 
m_bTransFill = -1; 
//}}AFX_DATA_INIT 
 
m_dwInitTransRGBVal = 0; 
m_bViewOrigin = 0; 
} 
 
CIndeo::~CIndeo() 
{ 
} 
 
void CIndeo::DoDataExchange(CDataExchange* pDX) 
{ 
CFormView::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CIndeo) 
DDX_Control(pDX, IDC_CUSTOM_COLORS, m_btnCustomColors); 
DDX_Control(pDX, IDC_DONT_DROP_QUALITY, m_checkDontDropQuality); 
DDX_Control(pDX, IDC_DONT_DROP_FRAMES, m_checkDontDropFrames); 
DDX_Control(pDX, IDC_SATURATION_TEXT, m_editSaturation); 
DDX_Control(pDX, IDC_CONTRAST_TEXT, m_editContrast); 
DDX_Control(pDX, IDC_BRIGHTNESS_TEXT, m_editBrightness); 
DDX_Control(pDX, IDC_GREEN_EDIT, m_editTransFillGreen); 
DDX_Control(pDX, IDC_BLUE_EDIT, m_editTransFillBlue); 
DDX_Control(pDX, IDC_RED_EDIT, m_editTransFillRed); 
DDX_Control(pDX, IDC_ALTLINE, m_checkAltLine); 
DDX_Control(pDX, IDC_DECODE_TIME, m_editDecodeTime); 
DDX_Control(pDX, IDC_VIEW_WIDTH, m_editViewWidth); 
DDX_Control(pDX, IDC_VIEW_Y, m_editViewY); 
DDX_Control(pDX, IDC_VIEW_X, m_editViewX); 
DDX_Control(pDX, IDC_VIEW_HEIGHT, m_editViewHeight); 
DDX_Control(pDX, IDC_KEY_VALUE, m_editKeyValue); 
DDX_Control(pDX, IDC_DECODE_Y, m_editDecodeY); 
DDX_Control(pDX, IDC_DECODE_X, m_editDecodeX); 
DDX_Control(pDX, IDC_DECODE_WIDTH, m_editDecodeWidth); 
DDX_Control(pDX, IDC_ACCESSKEY, m_checkAccessKey); 
DDX_Control(pDX, ID_INDEO_DEFAULTS, m_btnDefaults); 
DDX_Control(pDX, ID_INDEO_APPLY, m_btnApply); 
DDX_Control(pDX, IDC_DECODE_HEIGHT, m_editDecodeHeight); 
DDX_Control(pDX, IDC_TB_COLORCONTROL_SATURATION, m_tbSaturation); 
DDX_Control(pDX, IDC_TB_COLORCONTROL_CONTRAST, m_tbContrast); 
DDX_Control(pDX, IDC_TB_COLORCONTROL_BRIGHTNESS, m_tbBrightness); 
DDX_Check(pDX, IDC_ACCESSKEY, m_bAccessKey); 
DDX_Text(pDX, IDC_DECODE_HEIGHT, m_dwDecodeHeight); 
DDX_Text(pDX, IDC_DECODE_WIDTH, m_dwDecodeWidth); 
DDX_Text(pDX, IDC_DECODE_X, m_dwDecodeX); 
DDX_Text(pDX, IDC_DECODE_Y, m_dwDecodeY); 
DDX_Text(pDX, IDC_KEY_VALUE, m_dwKeyValue); 
DDX_Text(pDX, IDC_VIEW_HEIGHT, m_dwViewHeight); 
DDX_Text(pDX, IDC_VIEW_WIDTH, m_dwViewWidth); 
DDX_Text(pDX, IDC_VIEW_X, m_dwViewX); 
DDX_Text(pDX, IDC_VIEW_Y, m_dwViewY); 
DDX_Text(pDX, IDC_BRIGHTNESS_TEXT, m_intBrightness); 
DDV_MinMaxInt(pDX, m_intBrightness, -128, 128); 
DDX_Text(pDX, IDC_CONTRAST_TEXT, m_intContrast); 
DDV_MinMaxInt(pDX, m_intContrast, -128, 128); 
DDX_Text(pDX, IDC_SATURATION_TEXT, m_intSaturation); 
DDV_MinMaxInt(pDX, m_intSaturation, -128, 128); 
DDX_Text(pDX, IDC_DECODE_TIME, m_dwDecodeTime); 
DDX_Control(pDX, IDC_TRANS_FILL, m_radTransFill); 
DDX_Control(pDX, IDC_TRANS_NOFILL, m_radTransNoFill); 
DDX_Check(pDX, IDC_ALTLINE, m_bAltLine); 
DDX_Text(pDX, IDC_GREEN_EDIT, m_intGreen); 
DDV_MinMaxInt(pDX, m_intGreen, 0, 255); 
DDX_Text(pDX, IDC_RED_EDIT, m_intRed); 
DDV_MinMaxInt(pDX, m_intRed, 0, 255); 
DDX_Text(pDX, IDC_BLUE_EDIT, m_intBlue); 
DDV_MinMaxInt(pDX, m_intBlue, 0, 255); 
DDX_Check(pDX, IDC_DONT_DROP_FRAMES, m_bDontDropFrames); 
DDX_Check(pDX, IDC_DONT_DROP_QUALITY, m_bDontDropQuality); 
DDX_Control(pDX, IDC_FRAME_ORIGIN, m_radFrameOrigin); 
DDX_Control(pDX, IDC_VIEW_ORIGIN, m_radViewOrigin); 
DDX_Radio(pDX, IDC_FRAME_ORIGIN, m_bViewOrigin); 
DDX_Radio(pDX, IDC_TRANS_NOFILL, m_bTransFill); 
//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CIndeo, CFormView) 
//{{AFX_MSG_MAP(CIndeo) 
ON_BN_CLICKED(ID_INDEO_APPLY, OnIndeoApply) 
ON_BN_CLICKED(ID_INDEO_DEFAULTS, OnIndeoDefaults) 
ON_EN_CHANGE(IDC_DECODE_HEIGHT, OnChangeDecodeHeight) 
ON_EN_CHANGE(IDC_DECODE_WIDTH, OnChangeDecodeWidth) 
ON_EN_CHANGE(IDC_DECODE_X, OnChangeDecodeX) 
ON_EN_CHANGE(IDC_DECODE_Y, OnChangeDecodeY) 
ON_EN_CHANGE(IDC_VIEW_HEIGHT, OnChangeViewHeight) 
ON_EN_CHANGE(IDC_VIEW_WIDTH, OnChangeViewWidth) 
ON_EN_CHANGE(IDC_VIEW_X, OnChangeViewX) 
ON_EN_CHANGE(IDC_VIEW_Y, OnChangeViewY) 
ON_BN_CLICKED(IDC_ACCESSKEY, OnAccesskey) 
ON_EN_CHANGE(IDC_DECODE_TIME, OnChangeDecodeTime) 
ON_EN_CHANGE(IDC_KEY_VALUE, OnChangeKeyValue) 
ON_BN_CLICKED(IDC_TRANS_FILL, OnTransFill) 
ON_BN_CLICKED(IDC_TRANS_NOFILL, OnTransNofill) 
ON_BN_CLICKED(IDC_ALTLINE, OnAltline) 
ON_WM_HSCROLL() 
ON_EN_CHANGE(IDC_GREEN_EDIT, OnChangeGreenEdit) 
ON_EN_CHANGE(IDC_RED_EDIT, OnChangeRedEdit) 
ON_EN_CHANGE(IDC_BLUE_EDIT, OnChangeBlueEdit) 
ON_BN_CLICKED(IDC_DONT_DROP_FRAMES, OnDontDropFrames) 
ON_BN_CLICKED(IDC_DONT_DROP_QUALITY, OnDontDropQuality) 
ON_BN_CLICKED(IDC_VIEW_ORIGIN, OnViewOrigin) 
ON_BN_CLICKED(IDC_FRAME_ORIGIN, OnFrameOrigin) 
ON_BN_CLICKED(IDC_CUSTOM_COLORS, OnCustomColors) 
ON_EN_UPDATE(IDC_BRIGHTNESS_TEXT, OnUpdateBSCText) 
ON_WM_TIMER() 
ON_EN_UPDATE(IDC_CONTRAST_TEXT, OnUpdateBSCText) 
ON_EN_UPDATE(IDC_SATURATION_TEXT, OnUpdateBSCText) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CIndeo diagnostics 
 
#ifdef _DEBUG 
void CIndeo::AssertValid() const 
{ 
CFormView::AssertValid(); 
} 
 
void CIndeo::Dump(CDumpContext& dc) const 
{ 
CFormView::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CIndeo message handlers 
 
void CIndeo::OnInitialUpdate()  
{ 
CIPlayDoc *pDoc; 
 
CFormView::OnInitialUpdate(); 
 
// Initialize trackbars 
m_tbBrightness.SetRange(-BCS_MAX, BCS_MAX); 
m_tbBrightness.SetTicFreq(BCS_TICS); 
 
m_tbContrast.SetRange(-BCS_MAX, BCS_MAX); 
m_tbContrast.SetTicFreq(BCS_TICS); 
 
m_tbSaturation.SetRange(-BCS_MAX, BCS_MAX); 
m_tbSaturation.SetTicFreq(BCS_TICS); 
 
// Is the movie an Indeo movie? 
pDoc = (CIPlayDoc *)GetDocument(); 
if ( pDoc->IsIndeo() ){ 
EnableAllOptions(); 
 
pDoc->GetBCS(m_intBrightness, m_intContrast, m_intSaturation); 
m_tbBrightness.SetPos(m_intBrightness); 
m_tbContrast.SetPos(m_intContrast); 
m_tbSaturation.SetPos(m_intSaturation); 
 
pDoc->GetTransFillRGB(m_intRed, m_intGreen, m_intBlue); 
 
m_dwInitTransRGBVal = RGB(m_intRed, m_intGreen, m_intBlue); 
 
pDoc->GetDecodeTime(m_dwDecodeTime); 
pDoc->GetDecodeRect(m_dwDecodeX, m_dwDecodeY, m_dwDecodeWidth, 
m_dwDecodeHeight); 
pDoc->GetViewRect(m_dwViewX, m_dwViewY, m_dwViewWidth, m_dwViewHeight); 
 
pDoc->GetSequenceOptions(m_bAltLine, m_bDontDropFrames, m_bDontDropQuality, m_bTransFill, m_bAccessKey, 
m_dwKeyValue); 
 
// Update dialog controls from member variables 
UpdateData(FALSE); 
} 
else { 
if (pDoc->IsInitialized())  
MessageBox("This is not an IV41 movie so Indeo options will not be available.", 
"Not an Indeo Movie", MB_OK); 
DisableAllOptions(); 
}        
 
} 
 
void CIndeo::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)  
{ 
CIPlayDoc *pDoc; 
 
pDoc = (CIPlayDoc *)GetDocument(); 
 
// Sequence options can only be changed when the movie 
// is stopped (they can actually be changed any time, but 
// will not take effect until the movie is stoppped and  
// restarted). 
if (pDoc->IsIndeo()) { 
if (pDoc->m_State == pDoc->Stopped) 
EnableSeqOptions(); 
else 
DisableSeqOptions(); 
} 
} 
 
void CIndeo::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)  
{ 
int origBrightness = m_intBrightness; 
int origContrast = m_intContrast; 
int origSaturation = m_intSaturation; 
 
if ( ! pScrollBar){ 
CFormView::OnHScroll( nSBCode, nPos, pScrollBar ); 
return; 
} 
 
switch (nSBCode) { 
case TB_LINEUP: 
 
 if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd) {  
if (m_intBrightness > -128) 
m_intBrightness--; 
} 
else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd) { 
if (m_intContrast > -128) 
m_intContrast--; 
} 
else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd) { 
if (m_intSaturation > -128) 
m_intSaturation--; 
} 
break; 
 
case TB_LINEDOWN: 
 
 if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd) {  
if (m_intBrightness < 128) 
m_intBrightness++; 
} 
else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd){ 
if (m_intContrast < 128) 
m_intContrast++; 
} 
else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd) { 
if (m_intSaturation < 128) 
m_intSaturation++; 
} 
break; 
 
case TB_THUMBPOSITION:  
case TB_THUMBTRACK: 
 
if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd)  
m_intBrightness = (int)nPos; 
 
else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd) 
m_intContrast = (int)nPos; 
 
else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd) 
m_intSaturation = (int)nPos; 
break; 
 
case TB_PAGEUP: 
case TB_PAGEDOWN: 
 
if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd)  
m_intBrightness = (int)m_tbBrightness.GetPos(); 
 
else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd) 
m_intContrast = (int)m_tbContrast.GetPos(); 
 
else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd) 
m_intSaturation = (int)m_tbSaturation.GetPos(); 
break; 
} 
if ((origBrightness != m_intBrightness) 
|| (origContrast != m_intContrast) 
|| (origSaturation != m_intSaturation)) 
   m_btnApply.EnableWindow(TRUE); 
 
UpdateData(FALSE); 
 
return; 
 
} 
 
void CIndeo::OnIndeoApply()  
{ 
CIPlayDoc *pDoc; 
CRect rd, rv; 
 
LONG lScalTemp; 
 
// Update member variables from dialog controls 
UpdateData(TRUE); 
 
pDoc = (CIPlayDoc *)GetDocument(); 
 
//Make sure the decode rect is within the video rect 
if ( m_dwDecodeX + m_dwDecodeWidth > pDoc->VideoWidth() ) {  
AfxMessageBox(IDS_DECODERECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK); 
m_editDecodeWidth.SetFocus(); 
m_editDecodeWidth.SetSel((DWORD)((-1 << 16) & 0xFFFF0000));  
return; 
} 
 
if ( m_dwDecodeY + m_dwDecodeHeight > pDoc->VideoHeight() ) { 
AfxMessageBox(IDS_DECODERECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK); 
m_editDecodeHeight.SetFocus(); 
m_editDecodeHeight.SetSel((DWORD)((-1 << 16) & 0xFFFF0000));  
return; 
} 
 
// Make sure view rect is in decode rect and video rect; if not, return 
rd = CRect(m_dwDecodeX,  
          m_dwDecodeY,  
          m_dwDecodeX + m_dwDecodeWidth,  
          m_dwDecodeY + m_dwDecodeHeight); 
 
rv = CRect(m_dwViewX, 
           m_dwViewY, 
   m_dwViewX + m_dwViewWidth, 
   m_dwViewY + m_dwViewHeight); 
 
if ( rv != CRect(0,0,0,0) ) { 
     
if ( rd == CRect(0,0,0,0) ) { 
if ( (m_dwViewX + m_dwViewWidth > pDoc->VideoWidth()) || 
         (m_dwViewY + m_dwViewHeight > pDoc->VideoHeight()) ) { 
AfxMessageBox(IDS_VIEWRECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK); 
m_editViewX.SetFocus(); 
m_editViewX.SetSel((DWORD)((-1 << 16) & 0xFFFF0000));  
return; 
} 
} 
/*else if ( rd & rv != rv ) { 
AfxMessageBox(IDS_VIEWRECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK); 
m_editViewX.SetFocus(); 
m_editViewX.SetSel((DWORD)((-1 << 16) & 0xFFFF0000));  
return; 
} */ 
 
}      
 
 
pDoc->SetTransFillRGB( RGB(m_intBlue, m_intGreen, m_intRed) ); 
 
pDoc->SetDecodeTime(m_dwDecodeTime); 
 
pDoc->SetDecodeRect(m_dwDecodeX, m_dwDecodeY, m_dwDecodeWidth, 
            m_dwDecodeHeight); 
 
pDoc->SetViewRect(m_bViewOrigin, m_dwViewX, m_dwViewY, m_dwViewWidth, m_dwViewHeight); 
 
pDoc->SetBCS(m_intBrightness, m_intContrast, m_intSaturation); 
 
if (!pDoc->CanStop()) // movie is Stopped 
{ 
if (m_bDontDropFrames && ! m_bDontDropQuality) 
lScalTemp = SC_DONT_DROP_FRAMES; 
else if (m_bDontDropQuality && ! m_bDontDropFrames)  
lScalTemp = SC_DONT_DROP_QUALITY; 
else if (m_bDontDropFrames && m_bDontDropQuality) 
lScalTemp = SC_OFF; 
else 
lScalTemp = SC_ON; 
 
pDoc->SetSequenceOptions(m_bAltLine, lScalTemp, m_bTransFill, m_bAccessKey, 
m_dwKeyValue); 
} 
 
// Disable Apply button until there is something to apply 
   m_btnApply.EnableWindow(FALSE); 
} 
 
void CIndeo::OnIndeoDefaults()  
{ 
CIPlayDoc *pDoc; 
 
pDoc = (CIPlayDoc *)GetDocument(); 
 
pDoc->GetFrameDefaults(m_intBrightness, m_intContrast, m_intSaturation, m_dwDecodeTime, m_dwDecodeX,  
   m_dwDecodeY, m_dwDecodeWidth, m_dwDecodeHeight, m_dwViewX, m_dwViewY, m_dwViewWidth,  
   m_dwViewHeight); 
 
//Get the Initial color of the Transparency Fill Color 
m_intRed   = (m_dwInitTransRGBVal&0x000000FF); 
m_intGreen = (m_dwInitTransRGBVal&0x0000FF00)>>8; 
m_intBlue  = (m_dwInitTransRGBVal&0x00FF0000)>>16; 
 
m_bViewOrigin = FALSE; 
 
if (!pDoc->CanStop())  // movie is Stopped 
pDoc->GetSeqDefaults(m_bAltLine, m_bDontDropFrames, m_bDontDropQuality, m_bTransFill, m_bAccessKey, 
m_dwKeyValue); 
 
// Update trackbars 
pDoc->SetBCS(m_intBrightness, m_intContrast, m_intSaturation); 
m_tbBrightness.SetPos(m_intBrightness); 
m_tbContrast.SetPos(m_intContrast); 
m_tbSaturation.SetPos(m_intSaturation); 
 
// Update visiblity of Access Key value 
if (m_bAccessKey) 
m_editKeyValue.ShowWindow(SW_SHOW); 
else 
m_editKeyValue.ShowWindow(SW_HIDE); 
 
// Update dialog controls from member variables 
UpdateData(FALSE); 
 
OnIndeoApply(); 
} 
 
void CIndeo::OnAccesskey()  
{ 
 
UpdateData(TRUE); 
 
if (m_bAccessKey) { 
m_editKeyValue.ShowWindow(SW_SHOW); 
m_editKeyValue.SetFocus(); 
m_editKeyValue.SetSel((DWORD)((-1 << 16) & 0xFFFF0000)); 
} 
else 
m_editKeyValue.ShowWindow(SW_HIDE); 
 
m_btnApply.EnableWindow(TRUE); 
 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CIndeo helper functions 
 
void CIndeo::EnableAllOptions() 
{ 
m_editBrightness.EnableWindow(TRUE); 
m_editContrast.EnableWindow(TRUE); 
m_editSaturation.EnableWindow(TRUE); 
 
m_tbBrightness.EnableWindow(TRUE); 
m_tbContrast.EnableWindow(TRUE); 
m_tbSaturation.EnableWindow(TRUE); 
 
m_editDecodeTime.EnableWindow(TRUE); 
m_editDecodeX.EnableWindow(TRUE); 
m_editDecodeY.EnableWindow(TRUE); 
m_editDecodeHeight.EnableWindow(TRUE); 
m_editDecodeWidth.EnableWindow(TRUE); 
 
m_editViewX.EnableWindow(TRUE); 
m_editViewY.EnableWindow(TRUE); 
m_editViewHeight.EnableWindow(TRUE); 
m_editViewWidth.EnableWindow(TRUE); 
 
m_editTransFillRed.EnableWindow(TRUE); 
m_editTransFillGreen.EnableWindow(TRUE); 
m_editTransFillBlue.EnableWindow(TRUE); 
m_btnCustomColors.EnableWindow(TRUE); 
 
m_radFrameOrigin.EnableWindow(TRUE); 
m_radViewOrigin.EnableWindow(TRUE); 
 
m_btnDefaults.EnableWindow(TRUE); 
 
// Apply button will not be enabled until something changes 
 
EnableSeqOptions(); 
} 
 
void CIndeo::DisableAllOptions() 
{ 
 
m_editBrightness.EnableWindow(FALSE); 
m_editContrast.EnableWindow(FALSE); 
m_editSaturation.EnableWindow(FALSE); 
 
m_tbBrightness.EnableWindow(FALSE); 
m_tbContrast.EnableWindow(FALSE); 
m_tbSaturation.EnableWindow(FALSE); 
 
m_editDecodeTime.EnableWindow(FALSE); 
m_editDecodeX.EnableWindow(FALSE); 
m_editDecodeY.EnableWindow(FALSE); 
m_editDecodeHeight.EnableWindow(FALSE); 
m_editDecodeWidth.EnableWindow(FALSE); 
 
m_editViewX.EnableWindow(FALSE); 
m_editViewY.EnableWindow(FALSE); 
m_editViewHeight.EnableWindow(FALSE); 
m_editViewWidth.EnableWindow(FALSE); 
 
m_editTransFillRed.EnableWindow(FALSE); 
m_editTransFillGreen.EnableWindow(FALSE); 
m_editTransFillBlue.EnableWindow(FALSE); 
m_btnCustomColors.EnableWindow(FALSE); 
 
m_radFrameOrigin.EnableWindow(FALSE); 
m_radViewOrigin.EnableWindow(FALSE); 
 
m_btnDefaults.EnableWindow(FALSE); 
m_btnApply.EnableWindow(FALSE); 
 
DisableSeqOptions(); 
} 
 
void CIndeo::EnableSeqOptions() 
{ 
m_checkAltLine.EnableWindow(TRUE); 
 
m_checkDontDropFrames.EnableWindow(TRUE); 
m_checkDontDropQuality.EnableWindow(TRUE); 
 
m_checkAccessKey.EnableWindow(TRUE); 
m_editKeyValue.EnableWindow(TRUE); 
 
m_radTransFill.EnableWindow(TRUE); 
m_radTransNoFill.EnableWindow(TRUE); 
 
if (m_bAccessKey) 
m_editKeyValue.ShowWindow(SW_SHOW); 
else 
m_editKeyValue.ShowWindow(SW_HIDE); 
} 
 
void CIndeo::DisableSeqOptions() 
{ 
m_checkAltLine.EnableWindow(FALSE); 
 
m_checkDontDropFrames.EnableWindow(FALSE); 
m_checkDontDropQuality.EnableWindow(FALSE); 
 
m_checkAccessKey.EnableWindow(FALSE); 
m_editKeyValue.EnableWindow(FALSE); 
m_radTransFill.EnableWindow(FALSE); 
m_radTransNoFill.EnableWindow(FALSE); 
m_editKeyValue.EnableWindow(FALSE); 
 
if (m_bAccessKey) 
m_editKeyValue.ShowWindow(SW_SHOW); 
else 
m_editKeyValue.ShowWindow(SW_HIDE); 
} 
 
 
///////////////////////////////////////////////////////////////////// 
// The following message handlers simply enable the Apply button when 
// something changes. 
 
void CIndeo::OnChangeDecodeHeight()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeDecodeWidth()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeDecodeX()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeDecodeY()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeViewHeight()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeViewWidth()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeViewX()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeViewY()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeDecodeTime()  
{ 
   m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnChangeKeyValue()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnUpdateBSCText()  
{ 
UpdateData(TRUE); 
m_btnApply.EnableWindow(TRUE); 
m_tbBrightness.SetPos(m_intBrightness); 
m_tbContrast.SetPos(m_intContrast); 
m_tbSaturation.SetPos(m_intSaturation); 
} 
 
void CIndeo::OnTransFill()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnTransNofill()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
 
void CIndeo::OnAltline()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
 
void CIndeo::OnChangeRedEdit()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
 
void CIndeo::OnChangeGreenEdit()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
 
void CIndeo::OnChangeBlueEdit()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnDontDropFrames()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnDontDropQuality()  
{ 
m_btnApply.EnableWindow(TRUE); 
} 
 
void CIndeo::OnViewOrigin()  
{ 
m_btnApply.EnableWindow(TRUE); 
OnIndeoApply(); 
} 
 
void CIndeo::OnFrameOrigin()  
{ 
m_btnApply.EnableWindow(TRUE); 
OnIndeoApply(); 
} 
 
void CIndeo::OnCustomColors()  
{ 
 
CHOOSECOLOR TransCC;     // common dialog box structure 
 
TransCC.lStructSize = sizeof(CHOOSECOLOR);  
TransCC.hwndOwner = NULL; 
TransCC.lpCustColors = (LPDWORD) m_clrefUserCustClrs; 
TransCC.rgbResult = RGB(m_intRed, m_intGreen, m_intBlue); 
TransCC.Flags = CC_RGBINIT | CC_FULLOPEN;  
 
if (ChooseColor(&TransCC)) // pointer to structure with initialization data 
{ 
SetDlgItemInt( IDC_RED_EDIT, (TransCC.rgbResult&0x000000FF), FALSE ); 
SetDlgItemInt( IDC_GREEN_EDIT, (TransCC.rgbResult&0x0000FF00)>>8, FALSE ); 
SetDlgItemInt( IDC_BLUE_EDIT, (TransCC.rgbResult&0x00FF0000)>>16, FALSE ); 
 
OnIndeoApply(); 
} 
 
}