From: <sag...@us...> - 2015-05-31 21:34:13
|
Revision: 5222 http://sourceforge.net/p/modplug/code/5222 Author: saga-games Date: 2015-05-31 21:34:07 +0000 (Sun, 31 May 2015) Log Message: ----------- [Imp] Time stretcher ratio calculation now also allows for fractional tempos. [Ref] Rename CDecimalSupport::AllowSign to CDecimalSupport::AllowNegative Modified Paths: -------------- trunk/OpenMPT/mptrack/CDecimalSupport.h trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/PSRatioCalc.cpp trunk/OpenMPT/mptrack/PSRatioCalc.h trunk/OpenMPT/mptrack/dlg_misc.cpp Modified: trunk/OpenMPT/mptrack/CDecimalSupport.h =================================================================== --- trunk/OpenMPT/mptrack/CDecimalSupport.h 2015-05-31 21:01:36 UTC (rev 5221) +++ trunk/OpenMPT/mptrack/CDecimalSupport.h 2015-05-31 21:34:07 UTC (rev 5222) @@ -51,7 +51,7 @@ /// the locale dependant negative sign TCHAR m_NegativeSign[6]; - bool allowSign, allowFractions; + bool allowNegative, allowFractions; public: @@ -67,7 +67,7 @@ /// \brief Initialize m_DecimalSeparator and m_NegativeSign /// \remarks calls InitDecimalSeparator and InitNegativeSign CDecimalSupport() - : allowSign(true) + : allowNegative(true) , allowFractions(true) { InitDecimalSeparator(); @@ -219,7 +219,7 @@ bHandled = true; } - if (static_cast<TCHAR>(wParam) == m_NegativeSign[0] && allowSign) + if (static_cast<TCHAR>(wParam) == m_NegativeSign[0] && allowNegative) { T* pT = static_cast<T*>(this); int nStartChar; @@ -360,9 +360,9 @@ szBuff[std::min(buflen - 1,last_nonzero)] = _T('\0'); } - void AllowSign(bool allow) + void AllowNegative(bool allow) { - allowSign = allow; + allowNegative = allow; } void AllowFractions(bool allow) Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2015-05-31 21:01:36 UTC (rev 5221) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2015-05-31 21:34:07 UTC (rev 5222) @@ -107,7 +107,7 @@ m_SliderTempo.SetLineSize(1); m_SliderTempo.SetPageSize(10); m_EditTempo.SubclassDlgItem(IDC_EDIT_TEMPO, this); - m_EditTempo.AllowSign(false); + m_EditTempo.AllowNegative(false); m_bEditsLocked = false; UpdateView(GeneralHint().ModType()); Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2015-05-31 21:01:36 UTC (rev 5221) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2015-05-31 21:34:07 UTC (rev 5222) @@ -965,7 +965,7 @@ CheckDlgButton(IDC_CHECK_PITCHTEMPOLOCK, MF_UNCHECKED); m_EditPitchTempoLock.SubclassDlgItem(IDC_EDIT_PITCHTEMPOLOCK, this); - m_EditPitchTempoLock.AllowSign(false); + m_EditPitchTempoLock.AllowNegative(false); m_EditPitchTempoLock.SetLimitText(9); SetRedraw(TRUE); Modified: trunk/OpenMPT/mptrack/PSRatioCalc.cpp =================================================================== --- trunk/OpenMPT/mptrack/PSRatioCalc.cpp 2015-05-31 21:01:36 UTC (rev 5221) +++ trunk/OpenMPT/mptrack/PSRatioCalc.cpp 2015-05-31 21:34:07 UTC (rev 5222) @@ -31,7 +31,7 @@ sampleRate = 8363; m_nSpeed = sndFile.m_PlayState.m_nMusicSpeed; - m_nTempo = sndFile.m_PlayState.m_nMusicTempo.GetInt(); + m_nTempo = sndFile.m_PlayState.m_nMusicTempo; // Sample rate will not change. We can calculate original duration once and disgard sampleRate. m_lMsOrig = static_cast<ULONGLONG>(1000.0 * ((double)smp.nLength / sampleRate)); @@ -40,9 +40,6 @@ CalcRows(); } -CPSRatioCalc::~CPSRatioCalc() -{ -} void CPSRatioCalc::DoDataExchange(CDataExchange* pDX) { @@ -55,7 +52,6 @@ DDX_Text(pDX, IDC_MS_LENGTH_ORIGINAL2, m_lMsOrig); DDX_Text(pDX, IDC_MS_LENGTH_NEW, m_lMsNew); DDX_Text(pDX, IDC_SPEED, m_nSpeed); - DDX_Text(pDX, IDC_TEMPO, m_nTempo); DDX_Text(pDX, IDC_ROW_LENGTH_ORIGINAL, m_dRowsOrig); //These 2 CEdits must only be updated if they don't have focus (to preserve trailing . and 0s etc..) @@ -77,6 +73,15 @@ END_MESSAGE_MAP() +BOOL CPSRatioCalc::OnInitDialog() +{ + CDialog::OnInitDialog(); + m_EditTempo.SubclassDlgItem(IDC_TEMPO, this); + m_EditTempo.AllowNegative(false); + m_EditTempo.SetTempoValue(m_nTempo); + return TRUE; +} + // CPSRatioCalc message handlers void CPSRatioCalc::OnEnChangeSamples() { @@ -119,7 +124,8 @@ void CPSRatioCalc::OnEnChangeSpeed() { UpdateData(); - if (m_nTempo < 1) m_nTempo = 1; + m_nTempo = m_EditTempo.GetTempoValue(); + if (m_nTempo < TEMPO(1, 0)) m_nTempo = TEMPO(1, 0); if (m_nSpeed < 1) m_nSpeed = 1; CalcRows(); UpdateData(FALSE); @@ -153,10 +159,10 @@ void CPSRatioCalc::CalcRows() { - double rowTime = sndFile.GetRowDuration(TEMPO(m_nTempo, 0), m_nSpeed); + double rowTime = sndFile.GetRowDuration(m_nTempo, m_nSpeed); m_dRowsOrig = (double)m_lMsOrig / rowTime; - m_dRowsNew = m_dRowsOrig*(m_dRatio / 100); + m_dRowsNew = m_dRowsOrig * (m_dRatio / 100); return; } Modified: trunk/OpenMPT/mptrack/PSRatioCalc.h =================================================================== --- trunk/OpenMPT/mptrack/PSRatioCalc.h 2015-05-31 21:01:36 UTC (rev 5221) +++ trunk/OpenMPT/mptrack/PSRatioCalc.h 2015-05-31 21:34:07 UTC (rev 5222) @@ -10,6 +10,8 @@ #pragma once +#include "CDecimalSupport.h" + OPENMPT_NAMESPACE_BEGIN class CPSRatioCalc : public CDialog @@ -18,19 +20,21 @@ public: CPSRatioCalc(const CSoundFile &sndFile, SAMPLEINDEX sample, double ratio, CWnd* pParent = NULL); // standard constructor - virtual ~CPSRatioCalc(); double m_dRatio; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + virtual BOOL OnInitDialog(); + CNumberEdit m_EditTempo; const CSoundFile &sndFile; SAMPLEINDEX sampleIndex; ULONGLONG m_lSamplesNew; ULONGLONG m_lMsNew, m_lMsOrig; double m_dRowsOrig, m_dRowsNew; - uint32 m_nTempo, m_nSpeed; + uint32 m_nSpeed; + TEMPO m_nTempo; afx_msg void OnEnChangeSamples(); afx_msg void OnEnChangeMs(); Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-05-31 21:01:36 UTC (rev 5221) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-05-31 21:34:07 UTC (rev 5222) @@ -1138,7 +1138,7 @@ SetDlgItemInt(IDC_EDIT1, resultNumber); m_edit.SubclassDlgItem(IDC_EDIT1, this); m_edit.ModifyStyle(0, ES_NUMBER); - m_edit.AllowSign(minValue < 0); + m_edit.AllowNegative(minValue < 0); m_edit.AllowFractions(false); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |