From: <sag...@us...> - 2015-06-14 16:18:49
|
Revision: 5317 http://sourceforge.net/p/modplug/code/5317 Author: saga-games Date: 2015-06-14 16:18:43 +0000 (Sun, 14 Jun 2015) Log Message: ----------- [Imp] Live preview of edited tempo swing settings. Modified Paths: -------------- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/dlg_misc.h Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2015-06-14 08:49:52 UTC (rev 5316) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2015-06-14 16:18:43 UTC (rev 5317) @@ -571,7 +571,7 @@ //---------------------------------------- { m_tempoSwing.resize(GetDlgItemInt(IDC_ROWSPERBEAT), TempoSwing::Unity); - CTempoSwingDlg dlg(this, m_tempoSwing); + CTempoSwingDlg dlg(this, m_tempoSwing, modDoc.GetrSoundFile(), m_nPattern); if(dlg.DoModal() == IDOK) { m_tempoSwing = dlg.m_tempoSwing; Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-06-14 08:49:52 UTC (rev 5316) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-06-14 16:18:43 UTC (rev 5317) @@ -285,7 +285,7 @@ //------------------------------ { m_tempoSwing.resize(GetDlgItemInt(IDC_ROWSPERBEAT), TempoSwing::Unity); - CTempoSwingDlg dlg(this, m_tempoSwing); + CTempoSwingDlg dlg(this, m_tempoSwing, sndFile); if(dlg.DoModal() == IDOK) { m_tempoSwing = dlg.m_tempoSwing; @@ -1205,8 +1205,16 @@ END_MESSAGE_MAP() +CTempoSwingDlg::CTempoSwingDlg(CWnd *parent, const TempoSwing ¤tTempoSwing, CSoundFile &sndFile, PATTERNINDEX pattern) + : CDialog(IDD_TEMPO_SWING, parent) + , m_tempoSwing(currentTempoSwing) + , m_origTempoSwing(pattern == PATTERNINDEX_INVALID ? sndFile.m_tempoSwing : sndFile.Patterns[pattern].GetTempoSwing()) + , m_sndFile(sndFile) + , m_pattern(pattern) +{ } + BOOL CTempoSwingDlg::OnInitDialog() -//----------------------------------- +//--------------------------------- { struct Measurements { @@ -1296,7 +1304,7 @@ void CTempoSwingDlg::OnOK() -//--------------------------- +//------------------------- { CDialog::OnOK(); // If this is the default setup, just clear the vector. @@ -1309,7 +1317,7 @@ void CTempoSwingDlg::OnCancel() -//--------------------------- +//----------------------------- { CDialog::OnCancel(); OnClose(); @@ -1317,17 +1325,25 @@ void CTempoSwingDlg::OnClose() -//------------------------------ +//---------------------------- { for(size_t i = 0; i < m_controls.size(); i++) { delete m_controls[i]; } + // Restore original swing properties after preview + if(m_pattern == PATTERNINDEX_INVALID) + { + m_sndFile.m_tempoSwing = m_origTempoSwing; + } else + { + m_sndFile.Patterns[m_pattern].SetTempoSwing(m_origTempoSwing); + } } void CTempoSwingDlg::OnReset() -//------------------------------ +//---------------------------- { for(size_t i = 0; i < m_controls.size(); i++) { @@ -1338,13 +1354,22 @@ void CTempoSwingDlg::OnHScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/) -//------------------------------------------------------------------------------------------- +//----------------------------------------------------------------------------------------- { for(size_t i = 0; i < m_controls.size(); i++) { m_tempoSwing[i] = Util::muldivr(m_controls[i]->valueSlider.GetPos(), TempoSwing::Unity, SliderUnity) + TempoSwing::Unity; } m_tempoSwing.Normalize(); + // Preview + if(m_pattern == PATTERNINDEX_INVALID) + { + m_sndFile.m_tempoSwing = m_tempoSwing; + } else + { + m_sndFile.Patterns[m_pattern].SetTempoSwing(m_tempoSwing); + } + for(size_t i = 0; i < m_tempoSwing.size(); i++) { TCHAR s[32]; @@ -1355,7 +1380,7 @@ BOOL CTempoSwingDlg::OnToolTipNotify(UINT, NMHDR *pNMHDR, LRESULT *) -//-------------------------------------------------------------------- +//------------------------------------------------------------------ { TOOLTIPTEXT *pTTT = (TOOLTIPTEXTA*)pNMHDR; for(size_t i = 0; i < m_controls.size(); i++) Modified: trunk/OpenMPT/mptrack/dlg_misc.h =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.h 2015-06-14 08:49:52 UTC (rev 5316) +++ trunk/OpenMPT/mptrack/dlg_misc.h 2015-06-14 16:18:43 UTC (rev 5317) @@ -280,9 +280,12 @@ std::vector<RowCtls *> m_controls; public: TempoSwing m_tempoSwing; + const TempoSwing m_origTempoSwing; + CSoundFile &m_sndFile; + PATTERNINDEX m_pattern; public: - CTempoSwingDlg(CWnd *parent, const TempoSwing &tempoSwing) : CDialog(IDD_TEMPO_SWING, parent), m_tempoSwing(tempoSwing) { } + CTempoSwingDlg(CWnd *parent, const TempoSwing ¤tTempoSwing, CSoundFile &sndFile, PATTERNINDEX pattern = PATTERNINDEX_INVALID); protected: virtual BOOL OnInitDialog(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |