home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / mac / SiteBldr / AMOVIE / SDK / _SETUP / COMMON.Z / indeo.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-15  |  14.5 KB  |  570 lines

  1. // This code and information is provided "as is" without warranty of
  2. // any kind, either expressed or implied, including but not limited to
  3. // the implied warranties of merchantability and/or fitness for a
  4. // particular purpose.
  5.  
  6. // Copyright (C) 1996 Intel corporation.  All rights reserved.
  7.  
  8. // Indeo.cpp : implementation file
  9. //
  10.  
  11. #include "stdafx.h"
  12. #include "IPlay.h"
  13. #include "Indeo.h"
  14. #include "IPlayDoc.h"
  15.  
  16. #ifdef _DEBUG
  17. #undef THIS_FILE
  18. static char BASED_CODE THIS_FILE[] = __FILE__;
  19. #endif
  20.  
  21. const int BCS_MAX = 128;      // used by trackbar controls
  22. const int BCS_TICS = 16;
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CIndeo
  26.  
  27. IMPLEMENT_DYNCREATE(CIndeo, CFormView)
  28.  
  29. CIndeo::CIndeo()
  30.     : CFormView(CIndeo::IDD)
  31. {
  32.     //{{AFX_DATA_INIT(CIndeo)
  33.     m_bAccessKey = FALSE;
  34.     m_dwDecodeHeight = 0;
  35.     m_dwDecodeWidth = 0;
  36.     m_dwDecodeX = 0;
  37.     m_dwDecodeY = 0;
  38.     m_dwKeyValue = 0;
  39.     m_bScalability = FALSE;
  40.     m_dwViewHeight = 0;
  41.     m_dwViewWidth = 0;
  42.     m_dwViewX = 0;
  43.     m_dwViewY = 0;
  44.     m_intBrightness = 0;
  45.     m_intContrast = 0;
  46.     m_intSaturation = 0;
  47.     m_dwDecodeTime = 0;
  48.     m_bTransFill = FALSE;
  49.     m_bAltLine = FALSE;
  50.     //}}AFX_DATA_INIT
  51.  
  52.  
  53. }
  54.  
  55. CIndeo::~CIndeo()
  56. {
  57. }
  58.  
  59. void CIndeo::DoDataExchange(CDataExchange* pDX)
  60. {
  61.     CFormView::DoDataExchange(pDX);
  62.     //{{AFX_DATA_MAP(CIndeo)
  63.     DDX_Control(pDX, IDC_ALTLINE, m_checkAltLine);
  64.     DDX_Control(pDX, IDC_DECODE_TIME, m_editDecodeTime);
  65.     DDX_Control(pDX, IDC_VIEW_WIDTH, m_editViewWidth);
  66.     DDX_Control(pDX, IDC_VIEW_Y, m_editViewY);
  67.     DDX_Control(pDX, IDC_VIEW_X, m_editViewX);
  68.     DDX_Control(pDX, IDC_VIEW_HEIGHT, m_editViewHeight);
  69.     DDX_Control(pDX, IDC_SCALABILITY, m_checkScalability);
  70.     DDX_Control(pDX, IDC_KEY_VALUE, m_editKeyValue);
  71.     DDX_Control(pDX, IDC_DECODE_Y, m_editDecodeY);
  72.     DDX_Control(pDX, IDC_DECODE_X, m_editDecodeX);
  73.     DDX_Control(pDX, IDC_DECODE_WIDTH, m_editDecodeWidth);
  74.     DDX_Control(pDX, IDC_ACCESSKEY, m_checkAccessKey);
  75.     DDX_Control(pDX, ID_INDEO_DEFAULTS, m_btnDefaults);
  76.     DDX_Control(pDX, ID_INDEO_APPLY, m_btnApply);
  77.     DDX_Control(pDX, IDC_DECODE_HEIGHT, m_editDecodeHeight);
  78.     DDX_Control(pDX, IDC_TB_COLORCONTROL_SATURATION, m_tbSaturation);
  79.     DDX_Control(pDX, IDC_TB_COLORCONTROL_CONTRAST, m_tbContrast);
  80.     DDX_Control(pDX, IDC_TB_COLORCONTROL_BRIGHTNESS, m_tbBrightness);
  81.     DDX_Check(pDX, IDC_ACCESSKEY, m_bAccessKey);
  82.     DDX_Text(pDX, IDC_DECODE_HEIGHT, m_dwDecodeHeight);
  83.     DDX_Text(pDX, IDC_DECODE_WIDTH, m_dwDecodeWidth);
  84.     DDX_Text(pDX, IDC_DECODE_X, m_dwDecodeX);
  85.     DDX_Text(pDX, IDC_DECODE_Y, m_dwDecodeY);
  86.     DDX_Text(pDX, IDC_KEY_VALUE, m_dwKeyValue);
  87.     DDX_Check(pDX, IDC_SCALABILITY, m_bScalability);
  88.     DDX_Text(pDX, IDC_VIEW_HEIGHT, m_dwViewHeight);
  89.     DDX_Text(pDX, IDC_VIEW_WIDTH, m_dwViewWidth);
  90.     DDX_Text(pDX, IDC_VIEW_X, m_dwViewX);
  91.     DDX_Text(pDX, IDC_VIEW_Y, m_dwViewY);
  92.     DDX_Text(pDX, IDC_BRIGHTNESS_TEXT, m_intBrightness);
  93.     DDX_Text(pDX, IDC_CONTRAST_TEXT, m_intContrast);
  94.     DDX_Text(pDX, IDC_SATURATION_TEXT, m_intSaturation);
  95.     DDX_Text(pDX, IDC_DECODE_TIME, m_dwDecodeTime);
  96.     DDX_Control(pDX, IDC_TRANS_FILL, m_radTransFill);
  97.     DDX_Check(pDX, IDC_TRANS_FILL, m_bTransFill);
  98.     DDX_Control(pDX, IDC_TRANS_NOFILL, m_radTransNoFill);
  99.     DDX_Check(pDX, IDC_ALTLINE, m_bAltLine);
  100.     //}}AFX_DATA_MAP
  101. }
  102.  
  103.  
  104. BEGIN_MESSAGE_MAP(CIndeo, CFormView)
  105.     //{{AFX_MSG_MAP(CIndeo)
  106.     ON_WM_HSCROLL()
  107.     ON_BN_CLICKED(ID_INDEO_APPLY, OnIndeoApply)
  108.     ON_BN_CLICKED(ID_INDEO_DEFAULTS, OnIndeoDefaults)
  109.     ON_EN_CHANGE(IDC_DECODE_HEIGHT, OnChangeDecodeHeight)
  110.     ON_EN_CHANGE(IDC_DECODE_WIDTH, OnChangeDecodeWidth)
  111.     ON_EN_CHANGE(IDC_DECODE_X, OnChangeDecodeX)
  112.     ON_EN_CHANGE(IDC_DECODE_Y, OnChangeDecodeY)
  113.     ON_EN_CHANGE(IDC_VIEW_HEIGHT, OnChangeViewHeight)
  114.     ON_EN_CHANGE(IDC_VIEW_WIDTH, OnChangeViewWidth)
  115.     ON_EN_CHANGE(IDC_VIEW_X, OnChangeViewX)
  116.     ON_EN_CHANGE(IDC_VIEW_Y, OnChangeViewY)
  117.     ON_BN_CLICKED(IDC_ACCESSKEY, OnAccesskey)
  118.     ON_EN_CHANGE(IDC_DECODE_TIME, OnChangeDecodeTime)
  119.     ON_BN_CLICKED(IDC_SCALABILITY, OnScalability)
  120.     ON_EN_CHANGE(IDC_KEY_VALUE, OnChangeKeyValue)
  121.     ON_BN_CLICKED(IDC_TRANS_FILL, OnTransFill)
  122.     ON_BN_CLICKED(IDC_TRANS_NOFILL, OnTransNofill)
  123.     ON_BN_CLICKED(IDC_ALTLINE, OnAltline)
  124.     //}}AFX_MSG_MAP
  125. END_MESSAGE_MAP()
  126.  
  127.  
  128.  
  129. /////////////////////////////////////////////////////////////////////////////
  130. // CIndeo diagnostics
  131.  
  132. #ifdef _DEBUG
  133. void CIndeo::AssertValid() const
  134. {
  135.     CFormView::AssertValid();
  136. }
  137.  
  138. void CIndeo::Dump(CDumpContext& dc) const
  139. {
  140.     CFormView::Dump(dc);
  141. }
  142. #endif //_DEBUG
  143.  
  144. /////////////////////////////////////////////////////////////////////////////
  145. // CIndeo message handlers
  146.  
  147. void CIndeo::OnInitialUpdate() 
  148. {
  149.     CIPlayDoc *pDoc;
  150.  
  151.     CFormView::OnInitialUpdate();
  152.  
  153.     // Initialize trackbars
  154.     m_tbBrightness.SetRange(-BCS_MAX, BCS_MAX);
  155.     m_tbBrightness.SetTicFreq(BCS_TICS);
  156.  
  157.     m_tbContrast.SetRange(-BCS_MAX, BCS_MAX);
  158.     m_tbContrast.SetTicFreq(BCS_TICS);
  159.  
  160.     m_tbSaturation.SetRange(-BCS_MAX, BCS_MAX);
  161.     m_tbSaturation.SetTicFreq(BCS_TICS);
  162.  
  163.     // Is the movie an Indeo movie?
  164.     pDoc = (CIPlayDoc *)GetDocument();
  165.     if ( pDoc->IsIndeo() )    {
  166.         EnableAllOptions();
  167.  
  168.         pDoc->GetBCS(m_intBrightness, m_intContrast, m_intSaturation);
  169.         m_tbBrightness.SetPos(m_intBrightness);
  170.         m_tbContrast.SetPos(m_intContrast);
  171.         m_tbSaturation.SetPos(m_intSaturation);
  172.  
  173.         pDoc->GetDecodeTime(m_dwDecodeTime);
  174.         pDoc->GetDecodeRect(m_dwDecodeX, m_dwDecodeY, m_dwDecodeWidth,
  175.             m_dwDecodeHeight);
  176.         pDoc->GetViewRect(m_dwViewX, m_dwViewY, m_dwViewWidth, m_dwViewHeight);
  177.         pDoc->GetSequenceOptions(m_bAltLine, m_bScalability, m_bTransFill, m_bAccessKey,
  178.             m_dwKeyValue);
  179.  
  180.         // Update dialog controls from member variables
  181.         UpdateData(FALSE);
  182.     }
  183.     else {
  184.         if (pDoc->IsInitialized()) 
  185.             MessageBox("This is not an IV41 movie so Indeo options will not be available.",
  186.             "Not an Indeo Movie", MB_OK);
  187.         DisableAllOptions();    
  188.     }
  189. }
  190.  
  191. void CIndeo::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
  192. {
  193.     CIPlayDoc *pDoc;
  194.  
  195.     pDoc = (CIPlayDoc *)GetDocument();
  196.  
  197.     // Sequence options can only be changed when the movie
  198.     // is stopped (they can actually be changed any time, but
  199.     // will not take effect until the movie is stoppped and 
  200.     // restarted).
  201.     if (pDoc->IsIndeo()) {
  202.         if (pDoc->m_State == pDoc->Stopped)
  203.             EnableSeqOptions();
  204.         else
  205.             DisableSeqOptions();
  206.     }
  207. }
  208.  
  209. void CIndeo::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  210. {
  211.     CIPlayDoc *pDoc;
  212.  
  213.     switch (nSBCode) {
  214.         case TB_LINEUP:
  215.  
  216.              if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd) { 
  217.                 if (m_intBrightness > -128)
  218.                     m_intBrightness--;
  219.             }
  220.             else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd) {
  221.                 if (m_intContrast > -128)
  222.                     m_intContrast--;
  223.             }
  224.             else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd) {
  225.                 if (m_intSaturation > -128)
  226.                     m_intSaturation--;
  227.             }
  228.             break;
  229.  
  230.         case TB_LINEDOWN:
  231.  
  232.              if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd) { 
  233.                 if (m_intBrightness < 128)
  234.                     m_intBrightness++;
  235.             }
  236.             else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd)    {
  237.                 if (m_intContrast < 128)
  238.                     m_intContrast++;
  239.             }
  240.             else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd) {
  241.                 if (m_intSaturation < 128)
  242.                     m_intSaturation++;
  243.             }
  244.             break;
  245.  
  246.         case TB_THUMBPOSITION: 
  247.         case TB_THUMBTRACK:
  248.  
  249.             if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd) 
  250.                 m_intBrightness = (int)nPos;
  251.  
  252.             else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd)
  253.                 m_intContrast = (int)nPos;
  254.  
  255.             else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd)
  256.                 m_intSaturation = (int)nPos;
  257.             break;
  258.  
  259.         case TB_PAGEUP:
  260.         case TB_PAGEDOWN:
  261.  
  262.             if (pScrollBar->m_hWnd == m_tbBrightness.m_hWnd) 
  263.                 m_intBrightness = (int)m_tbBrightness.GetPos();
  264.  
  265.             else if (pScrollBar->m_hWnd == m_tbContrast.m_hWnd)
  266.                 m_intContrast = (int)m_tbContrast.GetPos();
  267.  
  268.             else if (pScrollBar->m_hWnd == m_tbSaturation.m_hWnd)
  269.                 m_intSaturation = (int)m_tbSaturation.GetPos();
  270.             break;
  271.     }
  272.  
  273.     UpdateData(FALSE);
  274.  
  275.     pDoc = (CIPlayDoc *)GetDocument();
  276.     pDoc->SetBCS(m_intBrightness, m_intContrast, m_intSaturation);
  277.         
  278.         return;    
  279.         
  280. }
  281.  
  282. void CIndeo::OnIndeoApply() 
  283. {
  284.     CIPlayDoc *pDoc;
  285.     CRect rd, rv;
  286.  
  287.     // Update member variables from dialog controls
  288.     UpdateData(TRUE);
  289.     
  290.     pDoc = (CIPlayDoc *)GetDocument();
  291.  
  292.     //Make sure the decode rect is within the video rect
  293.     if ( m_dwDecodeX + m_dwDecodeWidth > pDoc->VideoWidth() ) { 
  294.         AfxMessageBox(IDS_DECODERECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK);
  295.         m_editDecodeWidth.SetFocus();
  296.         m_editDecodeWidth.SetSel((DWORD)((-1 << 16) & 0xFFFF0000)); 
  297.         return;
  298.     }
  299.  
  300.     if ( m_dwDecodeY + m_dwDecodeHeight > pDoc->VideoHeight() ) {
  301.         AfxMessageBox(IDS_DECODERECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK);
  302.         m_editDecodeHeight.SetFocus();
  303.         m_editDecodeHeight.SetSel((DWORD)((-1 << 16) & 0xFFFF0000)); 
  304.         return;
  305.     }
  306.  
  307.     // Make sure view rect is in decode rect and video rect; if not, return
  308.     rd = CRect(m_dwDecodeX, 
  309.               m_dwDecodeY, 
  310.               m_dwDecodeX + m_dwDecodeWidth, 
  311.               m_dwDecodeY + m_dwDecodeHeight);
  312.  
  313.     rv = CRect(m_dwViewX,
  314.                m_dwViewY,
  315.                m_dwViewX + m_dwViewWidth,
  316.                m_dwViewY + m_dwViewHeight);
  317.  
  318.     if ( rv != CRect(0,0,0,0) ) {
  319.         
  320.         if ( rd == CRect(0,0,0,0) ) {
  321.             if ( (m_dwViewX + m_dwViewWidth > pDoc->VideoWidth()) ||
  322.                  (m_dwViewY + m_dwViewHeight > pDoc->VideoHeight()) ) {
  323.                 AfxMessageBox(IDS_VIEWRECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK);
  324.                 m_editViewX.SetFocus();
  325.                 m_editViewX.SetSel((DWORD)((-1 << 16) & 0xFFFF0000)); 
  326.                 return;
  327.             }
  328.         }
  329.     /*    else if ( rd & rv != rv ) {
  330.             AfxMessageBox(IDS_VIEWRECT_TOO_BIG, MB_ICONEXCLAMATION | MB_OK);
  331.             m_editViewX.SetFocus();
  332.             m_editViewX.SetSel((DWORD)((-1 << 16) & 0xFFFF0000)); 
  333.             return;
  334.         } */
  335.  
  336.     }     
  337.     
  338.     pDoc->SetDecodeTime(m_dwDecodeTime);
  339.     pDoc->SetDecodeRect(m_dwDecodeX, m_dwDecodeY, m_dwDecodeWidth,
  340.     m_dwDecodeHeight);
  341.  
  342.     pDoc->SetViewRect(m_dwViewX, m_dwViewY, m_dwViewWidth, m_dwViewHeight);
  343.  
  344.     if (!pDoc->CanStop()) // movie is Stopped
  345.         pDoc->SetSequenceOptions(m_bAltLine, m_bScalability, m_bTransFill, m_bAccessKey,
  346.             m_dwKeyValue);
  347.  
  348.     // Disable Apply button until there is something to apply
  349.        m_btnApply.EnableWindow(FALSE);
  350. }
  351.  
  352. void CIndeo::OnIndeoDefaults() 
  353. {
  354.     CIPlayDoc *pDoc;
  355.  
  356.     pDoc = (CIPlayDoc *)GetDocument();
  357.  
  358.     pDoc->GetFrameDefaults(m_intBrightness, m_intContrast, m_intSaturation,
  359.         m_dwDecodeTime, m_dwDecodeX, m_dwDecodeY, m_dwDecodeWidth,
  360.         m_dwDecodeHeight, m_dwViewX, m_dwViewY, m_dwViewWidth, m_dwViewHeight);
  361.  
  362.     if (!pDoc->CanStop())  // movie is Stopped
  363.         pDoc->GetSeqDefaults(m_bAltLine, m_bScalability, m_bTransFill, m_bAccessKey,
  364.             m_dwKeyValue);
  365.  
  366.     // Update trackbars
  367.     pDoc->SetBCS(m_intBrightness, m_intContrast, m_intSaturation);
  368.     m_tbBrightness.SetPos(m_intBrightness);
  369.     m_tbContrast.SetPos(m_intContrast);
  370.     m_tbSaturation.SetPos(m_intSaturation);
  371.  
  372.     // Update visiblity of Access Key value
  373.     if (m_bAccessKey)
  374.         m_editKeyValue.ShowWindow(SW_SHOW);
  375.     else
  376.         m_editKeyValue.ShowWindow(SW_HIDE);
  377.  
  378.     // Update dialog controls from member variables
  379.     UpdateData(FALSE);
  380.  
  381.     OnIndeoApply();
  382. }
  383.  
  384. void CIndeo::OnAccesskey() 
  385. {
  386.  
  387.     UpdateData(TRUE);
  388.  
  389.     if (m_bAccessKey) {
  390.         m_editKeyValue.ShowWindow(SW_SHOW);
  391.         m_editKeyValue.SetFocus();
  392.         m_editKeyValue.SetSel((DWORD)((-1 << 16) & 0xFFFF0000));
  393.     }
  394.     else
  395.         m_editKeyValue.ShowWindow(SW_HIDE);
  396.  
  397.     m_btnApply.EnableWindow(TRUE);
  398.         
  399. }
  400.  
  401. /////////////////////////////////////////////////////////////////////////////
  402. // CIndeo helper functions
  403.  
  404. void CIndeo::EnableAllOptions()
  405. {
  406.     m_tbBrightness.EnableWindow(TRUE);
  407.     m_tbContrast.EnableWindow(TRUE);
  408.     m_tbSaturation.EnableWindow(TRUE);
  409.  
  410.     m_editDecodeTime.EnableWindow(TRUE);
  411.     m_editDecodeX.EnableWindow(TRUE);
  412.     m_editDecodeY.EnableWindow(TRUE);
  413.     m_editDecodeHeight.EnableWindow(TRUE);
  414.     m_editDecodeWidth.EnableWindow(TRUE);
  415.  
  416.     m_editViewX.EnableWindow(TRUE);
  417.     m_editViewY.EnableWindow(TRUE);
  418.     m_editViewHeight.EnableWindow(TRUE);
  419.     m_editViewWidth.EnableWindow(TRUE);
  420.  
  421.     m_btnDefaults.EnableWindow(TRUE);
  422.  
  423.     // Apply button will not be enabled until something changes
  424.  
  425.     EnableSeqOptions();
  426. }
  427.  
  428. void CIndeo::DisableAllOptions()
  429. {
  430.     m_tbBrightness.EnableWindow(FALSE);
  431.     m_tbContrast.EnableWindow(FALSE);
  432.     m_tbSaturation.EnableWindow(FALSE);
  433.  
  434.     m_editDecodeTime.EnableWindow(FALSE);
  435.     m_editDecodeX.EnableWindow(FALSE);
  436.     m_editDecodeY.EnableWindow(FALSE);
  437.     m_editDecodeHeight.EnableWindow(FALSE);
  438.     m_editDecodeWidth.EnableWindow(FALSE);
  439.  
  440.     m_editViewX.EnableWindow(FALSE);
  441.     m_editViewY.EnableWindow(FALSE);
  442.     m_editViewHeight.EnableWindow(FALSE);
  443.     m_editViewWidth.EnableWindow(FALSE);
  444.  
  445.     m_btnDefaults.EnableWindow(FALSE);
  446.     m_btnApply.EnableWindow(FALSE);
  447.  
  448.     DisableSeqOptions();
  449. }
  450.  
  451. void CIndeo::EnableSeqOptions()
  452. {
  453.     m_checkAltLine.EnableWindow(TRUE);
  454.     m_checkScalability.EnableWindow(TRUE);
  455.     m_checkAccessKey.EnableWindow(TRUE);
  456.     m_editKeyValue.EnableWindow(TRUE);
  457.     m_radTransFill.EnableWindow(TRUE);
  458.     m_radTransNoFill.EnableWindow(TRUE);
  459.  
  460.     if (m_bAccessKey)
  461.         m_editKeyValue.ShowWindow(SW_SHOW);
  462.     else
  463.         m_editKeyValue.ShowWindow(SW_HIDE);
  464. }
  465.  
  466. void CIndeo::DisableSeqOptions()
  467. {
  468.     m_checkAltLine.EnableWindow(FALSE);
  469.     m_checkScalability.EnableWindow(FALSE);
  470.     m_checkAccessKey.EnableWindow(FALSE);
  471.     m_editKeyValue.EnableWindow(FALSE);
  472.     m_radTransFill.EnableWindow(FALSE);
  473.     m_radTransNoFill.EnableWindow(FALSE);
  474.     m_editKeyValue.EnableWindow(FALSE);
  475.  
  476.     if (m_bAccessKey)
  477.         m_editKeyValue.ShowWindow(SW_SHOW);
  478.     else
  479.         m_editKeyValue.ShowWindow(SW_HIDE);
  480. }
  481.  
  482.  
  483. /////////////////////////////////////////////////////////////////////
  484. // The following message handlers simply enable the Apply button when
  485. // something changes.
  486.  
  487. void CIndeo::OnChangeDecodeHeight() 
  488. {
  489.        m_btnApply.EnableWindow(TRUE);
  490.     
  491. }
  492.  
  493. void CIndeo::OnChangeDecodeWidth() 
  494. {
  495.        m_btnApply.EnableWindow(TRUE);
  496.     
  497. }
  498.  
  499. void CIndeo::OnChangeDecodeX() 
  500. {
  501.        m_btnApply.EnableWindow(TRUE);
  502.     
  503. }
  504.  
  505. void CIndeo::OnChangeDecodeY() 
  506. {
  507.        m_btnApply.EnableWindow(TRUE);
  508.     
  509. }
  510.  
  511. void CIndeo::OnChangeViewHeight() 
  512. {
  513.        m_btnApply.EnableWindow(TRUE);
  514.     
  515. }
  516.  
  517. void CIndeo::OnChangeViewWidth() 
  518. {
  519.        m_btnApply.EnableWindow(TRUE);
  520.     
  521. }
  522.  
  523. void CIndeo::OnChangeViewX() 
  524. {
  525.        m_btnApply.EnableWindow(TRUE);
  526.     
  527. }
  528.  
  529. void CIndeo::OnChangeViewY() 
  530. {
  531.        m_btnApply.EnableWindow(TRUE);
  532.     
  533. }
  534.  
  535. void CIndeo::OnChangeDecodeTime() 
  536. {
  537.        m_btnApply.EnableWindow(TRUE);
  538. }
  539.  
  540. void CIndeo::OnScalability() 
  541. {
  542.     m_btnApply.EnableWindow(TRUE);
  543.     
  544. }
  545.  
  546. void CIndeo::OnChangeKeyValue() 
  547. {
  548.     m_btnApply.EnableWindow(TRUE);
  549.     
  550. }
  551.  
  552. void CIndeo::OnTransFill() 
  553. {
  554.     m_btnApply.EnableWindow(TRUE);
  555.     
  556. }
  557.  
  558. void CIndeo::OnTransNofill() 
  559. {
  560.     m_btnApply.EnableWindow(TRUE);
  561.     
  562. }
  563.  
  564.  
  565. void CIndeo::OnAltline() 
  566. {
  567.     m_btnApply.EnableWindow(TRUE);
  568.     
  569. }
  570.