// 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 - 1998 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(); } }