From: <sag...@us...> - 2013-02-02 22:36:29
|
Revision: 1512 http://sourceforge.net/p/modplug/code/1512 Author: saga-games Date: 2013-02-02 22:36:22 +0000 (Sat, 02 Feb 2013) Log Message: ----------- [Imp] Sustain loop preview updating should now be carried out in all cases (http://bugs.openmpt.org/view.php?id=108) [Mod] OpenMPT: Version is now 1.21.01.09 Modified Paths: -------------- trunk/OpenMPT/common/version.h trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/common/version.h =================================================================== --- trunk/OpenMPT/common/version.h 2013-02-01 23:47:11 UTC (rev 1511) +++ trunk/OpenMPT/common/version.h 2013-02-02 22:36:22 UTC (rev 1512) @@ -19,7 +19,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 21 #define VER_MINOR 01 -#define VER_MINORMINOR 08 +#define VER_MINORMINOR 09 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2013-02-01 23:47:11 UTC (rev 1511) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2013-02-02 22:36:22 UTC (rev 1512) @@ -955,16 +955,16 @@ void CCtrlSamples::OnSampleNew() //------------------------------ { - const bool bDuplicate = CMainFrame::GetInputHandler()->ShiftPressed(); + const bool duplicate = CMainFrame::GetInputHandler()->ShiftPressed(); SAMPLEINDEX smp = m_pModDoc->InsertSample(true); - if (smp != SAMPLEINDEX_INVALID) + if(smp != SAMPLEINDEX_INVALID) { SAMPLEINDEX nOldSmp = m_nSample; CSoundFile *pSndFile = m_pModDoc->GetSoundFile(); SetCurrentSample(smp); - if(bDuplicate && nOldSmp >= 1 && nOldSmp <= pSndFile->GetNumSamples()) + if(duplicate && nOldSmp >= 1 && nOldSmp <= pSndFile->GetNumSamples()) { m_pModDoc->GetSampleUndo().PrepareUndo(smp, sundo_replace); pSndFile->ReadSampleFromSong(smp, pSndFile, nOldSmp); @@ -2627,20 +2627,12 @@ if ((IsLocked()) || (!m_pSndFile)) return; int n = m_ComboLoopType.GetCurSel(); ModSample &sample = m_pSndFile->GetSample(m_nSample); - bool wasDisabled = (sample.uFlags & CHN_LOOP) == 0; - switch(n) - { - case 0: // Off - sample.uFlags &= ~(CHN_LOOP | CHN_PINGPONGLOOP); - break; - case 1: // On - sample.uFlags &= ~CHN_PINGPONGLOOP; - sample.uFlags |= CHN_LOOP; - break; - case 2: // PingPong - sample.uFlags |= CHN_LOOP | CHN_PINGPONGLOOP; - break; - } + bool wasDisabled = !sample.uFlags[CHN_LOOP]; + + // 0: Off, 1: On, 2: PingPong + sample.uFlags.set(CHN_LOOP, n > 0); + sample.uFlags.set(CHN_PINGPONGLOOP, n == 2); + // set loop points if theren't any if(wasDisabled && ((sample.uFlags & CHN_LOOP) != 0) && (sample.nLoopStart == sample.nLoopEnd) && (sample.nLoopStart == 0)) { @@ -2655,7 +2647,7 @@ } m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA | HINT_SAMPLEINFO, NULL); } - m_pModDoc->AdjustEndOfSample(m_nSample); + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); m_pModDoc->SetModified(); } @@ -2669,12 +2661,7 @@ if ((n >= 0) && (n < sample.nLength) && ((n < sample.nLoopEnd) || !sample.uFlags[CHN_LOOP])) { sample.nLoopStart = n; - if(sample.uFlags[CHN_LOOP]) - { - // only update sample buffer if the loop is actually enabled - // (resets sound without any reason otherwise) - http://forum.openmpt.org/index.php?topic=1874.0 - m_pModDoc->AdjustEndOfSample(m_nSample); - } + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA, this); m_pModDoc->SetModified(); } @@ -2690,12 +2677,7 @@ if ((n >= 0) && (n <= sample.nLength) && ((n > sample.nLoopStart) || !sample.uFlags[CHN_LOOP])) { sample.nLoopEnd = n; - if(sample.uFlags[CHN_LOOP]) - { - // only update sample buffer if the loop is actually enabled - // (resets sound without any reason otherwise) - http://forum.openmpt.org/index.php?topic=1874.0 - m_pModDoc->AdjustEndOfSample(m_nSample); - } + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA, this); m_pModDoc->SetModified(); } @@ -2708,20 +2690,13 @@ if ((IsLocked()) || (!m_pSndFile)) return; int n = m_ComboSustainType.GetCurSel(); ModSample &sample = m_pSndFile->GetSample(m_nSample); - bool wasDisabled = (sample.uFlags & CHN_SUSTAINLOOP) == 0; - switch(n) - { - case 0: // Off - sample.uFlags &= ~(CHN_SUSTAINLOOP | CHN_PINGPONGSUSTAIN); - break; - case 1: // On - sample.uFlags &= ~CHN_PINGPONGSUSTAIN; - sample.uFlags |= CHN_SUSTAINLOOP; - break; - case 2: // PingPong - sample.uFlags |= CHN_SUSTAINLOOP | CHN_PINGPONGSUSTAIN; - break; - } + bool wasDisabled = !sample.uFlags[CHN_SUSTAINLOOP]; + + // 0: Off, 1: On, 2: PingPong + sample.uFlags.set(CHN_SUSTAINLOOP, n > 0); + sample.uFlags.set(CHN_PINGPONGSUSTAIN, n == 2); + + // set sustain loop points if theren't any if(wasDisabled && ((sample.uFlags & CHN_SUSTAINLOOP) != 0) && (sample.nSustainStart == sample.nSustainEnd) && (sample.nSustainStart == 0)) { @@ -2736,6 +2711,7 @@ } m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA | HINT_SAMPLEINFO, NULL); } + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); m_pModDoc->SetModified(); } @@ -2882,6 +2858,7 @@ m_EditLoopStart.SetWindowText(s); m_pModDoc->AdjustEndOfSample(m_nSample); redraw = true; + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); } m_SpinLoopStart.SetPos(0); } @@ -2926,6 +2903,7 @@ m_EditLoopEnd.SetWindowText(s); m_pModDoc->AdjustEndOfSample(m_nSample); redraw = true; + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); } m_SpinLoopEnd.SetPos(0); } @@ -2970,6 +2948,7 @@ wsprintf(s, "%u", sample.nSustainStart); m_EditSustainStart.SetWindowText(s); redraw = true; + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); } m_SpinSustainStart.SetPos(0); } @@ -3013,6 +2992,7 @@ wsprintf(s, "%u", sample.nSustainEnd); m_EditSustainEnd.SetWindowText(s); redraw = true; + ctrlSmp::UpdateLoopPoints(sample, *m_pSndFile); } m_SpinSustainEnd.SetPos(0); } Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2013-02-01 23:47:11 UTC (rev 1511) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2013-02-02 22:36:22 UTC (rev 1512) @@ -77,8 +77,6 @@ ON_WM_NCLBUTTONDBLCLK() ON_WM_RBUTTONDOWN() ON_WM_CHAR() - ON_WM_KEYDOWN() - ON_WM_KEYUP() ON_WM_DROPFILES() ON_WM_MOUSEWHEEL() ON_COMMAND(ID_EDIT_UNDO, OnEditUndo) @@ -108,7 +106,7 @@ ON_COMMAND(ID_SAMPLE_GRID, OnChangeGridSize) ON_COMMAND(ID_SAMPLE_QUICKFADE, OnQuickFade) ON_MESSAGE(WM_MOD_MIDIMSG, OnMidiMsg) - ON_MESSAGE(WM_MOD_KEYCOMMAND, OnCustomKeyMsg) //rewbs.customKeys + ON_MESSAGE(WM_MOD_KEYCOMMAND, OnCustomKeyMsg) //rewbs.customKeys //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -256,8 +254,8 @@ } -void CViewSample::SetCurSel(DWORD nBegin, DWORD nEnd) -//--------------------------------------------------- +void CViewSample::SetCurSel(SmpLength nBegin, SmpLength nEnd) +//----------------------------------------------------------- { CSoundFile *pSndFile = (GetDocument()) ? GetDocument()->GetSoundFile() : nullptr; if(pSndFile == nullptr) @@ -267,8 +265,8 @@ if(m_nGridSegments > 0) { const float sampsPerSegment = (float)(pSndFile->GetSample(m_nSample).nLength / m_nGridSegments); - nBegin = (DWORD)(floor((float)(nBegin / sampsPerSegment) + 0.5f) * sampsPerSegment); - nEnd = (DWORD)(floor((float)(nEnd / sampsPerSegment) + 0.5f) * sampsPerSegment); + nBegin = (SmpLength)(floor((float)(nBegin / sampsPerSegment) + 0.5f) * sampsPerSegment); + nEnd = (SmpLength)(floor((float)(nEnd / sampsPerSegment) + 0.5f) * sampsPerSegment); } if (nBegin > nEnd) @@ -279,7 +277,7 @@ if ((nBegin != m_dwBeginSel) || (nEnd != m_dwEndSel)) { RECT rect; - DWORD dMin = m_dwBeginSel, dMax = m_dwEndSel; + SmpLength dMin = m_dwBeginSel, dMax = m_dwEndSel; if (m_dwBeginSel >= m_dwEndSel) { dMin = nBegin; @@ -317,10 +315,10 @@ s[0] = 0; if (m_dwEndSel > m_dwBeginSel) { - const DWORD selLength = m_dwEndSel - m_dwBeginSel; + const SmpLength selLength = m_dwEndSel - m_dwBeginSel; wsprintf(s, "[%d,%d] (%d sample%s, ", m_dwBeginSel, m_dwEndSel, selLength, (selLength == 1) ? "" : "s"); - LONG lSampleRate = pSndFile->GetSample(m_nSample).nC5Speed; - if (pSndFile->m_nType & (MOD_TYPE_MOD|MOD_TYPE_XM)) + uint32 lSampleRate = pSndFile->GetSample(m_nSample).nC5Speed; + if (pSndFile->GetType() & (MOD_TYPE_MOD|MOD_TYPE_XM)) { lSampleRate = ModSample::TransposeToFrequency(pSndFile->GetSample(m_nSample).RelativeTone, pSndFile->GetSample(m_nSample).nFineTune); } @@ -2235,7 +2233,7 @@ else pModDoc->NoteOff(0, true); - DWORD loopstart = m_dwBeginSel, loopend = m_dwEndSel; + SmpLength loopstart = m_dwBeginSel, loopend = m_dwEndSel; if (loopend - loopstart < (UINT)(4 << m_nZoom)) loopend = loopstart = 0; // selection is too small -> no loop @@ -2243,13 +2241,13 @@ m_dwStatus |= SMPSTATUS_KEYDOWN; s[0] = 0; - if(ModCommand::IsNote(note)) + if(ModCommand::IsNote((ModCommand::NOTE)note)) { CSoundFile *pSndFile = pModDoc->GetSoundFile(); ModSample &sample = pSndFile->GetSample(m_nSample); uint32 freq = pSndFile->GetFreqFromPeriod(pSndFile->GetPeriodFromNote(note + (pSndFile->GetType() == MOD_TYPE_XM ? sample.RelativeTone : 0), sample.nFineTune, sample.nC5Speed), sample.nC5Speed, 0); - wsprintf(s, "%s%d (%d Hz)", szNoteNames[(note - 1) % 12], (note - 1) / 12, freq); + wsprintf(s, "%s (%d Hz)", szDefaultNoteNames[note - 1], freq); } pMainFrm->SetInfoText(s); } @@ -2258,32 +2256,6 @@ } -void CViewSample::OnKeyDown(UINT /*nChar*/, UINT /*nRepCnt*/, UINT /*nFlags*/) -//---------------------------------------------------------------- -{ - /* - switch(nChar) - { - case VK_DELETE: - OnEditDelete(); - break; - default: - CModScrollView::OnKeyDown(nChar, nRepCnt, nFlags); - } - */ -} - - -void CViewSample::OnKeyUp(UINT /*nChar*/, UINT /*nRepCnt*/, UINT /*nFlags*/) -//-------------------------------------------------------------- -{ - /* - m_dwStatus &= ~SMPSTATUS_KEYDOWN; - CModScrollView::OnKeyUp(nChar, nRepCnt, nFlags); - */ -} - - void CViewSample::OnDropFiles(HDROP hDropInfo) //-------------------------------------------- { @@ -2492,7 +2464,7 @@ sample.nLoopStart = m_dwMenuParam; sample.uFlags |= CHN_LOOP; pModDoc->SetModified(); - pModDoc->AdjustEndOfSample(m_nSample); + ctrlSmp::UpdateLoopPoints(sample, *pSndFile); pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA, NULL); } } @@ -2513,7 +2485,7 @@ sample.nLoopEnd = m_dwMenuParam; sample.uFlags |= CHN_LOOP; pModDoc->SetModified(); - pModDoc->AdjustEndOfSample(m_nSample); + ctrlSmp::UpdateLoopPoints(sample, *pSndFile); pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA, NULL); } } @@ -2534,7 +2506,7 @@ sample.nSustainStart = m_dwMenuParam; sample.uFlags |= CHN_SUSTAINLOOP; pModDoc->SetModified(); - pModDoc->AdjustEndOfSample(m_nSample); + ctrlSmp::UpdateLoopPoints(sample, *pSndFile); pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA, NULL); } } @@ -2555,7 +2527,7 @@ sample.nSustainEnd = m_dwMenuParam; sample.uFlags |= CHN_SUSTAINLOOP; pModDoc->SetModified(); - pModDoc->AdjustEndOfSample(m_nSample); + ctrlSmp::UpdateLoopPoints(sample, *pSndFile); pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA, NULL); } } Modified: trunk/OpenMPT/mptrack/View_smp.h =================================================================== --- trunk/OpenMPT/mptrack/View_smp.h 2013-02-01 23:47:11 UTC (rev 1511) +++ trunk/OpenMPT/mptrack/View_smp.h 2013-02-02 22:36:22 UTC (rev 1512) @@ -29,7 +29,8 @@ SIZE m_sizeTotal; SAMPLEINDEX m_nSample; UINT m_nZoom, m_nScrollPos, m_nScrollFactor, m_nBtnMouseOver; - DWORD m_dwStatus, m_dwBeginSel, m_dwEndSel, m_dwBeginDrag, m_dwEndDrag; + DWORD m_dwStatus; + SmpLength m_dwBeginSel, m_dwEndSel, m_dwBeginDrag, m_dwEndDrag; DWORD m_dwMenuParam; DWORD m_NcButtonState[SMP_LEFTBAR_BUTTONS]; DWORD m_dwNotifyPos[MAX_CHANNELS]; @@ -51,7 +52,7 @@ DWORD ScreenToSample(LONG x) const; void PlayNote(UINT note, const uint32 nStartPos = 0); //rewbs.customKeys void InvalidateSample(); - void SetCurSel(DWORD nBegin, DWORD nEnd); + void SetCurSel(SmpLength nBegin, SmpLength nEnd); void ScrollToPosition(int x); void DrawPositionMarks(HDC hdc); void DrawSampleData1(HDC hdc, int ymed, int cx, int cy, int len, int uFlags, PVOID pSampleData); @@ -113,8 +114,6 @@ #endif afx_msg void OnNcPaint(); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); - afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); - afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point); afx_msg void OnNcLButtonDown(UINT, CPoint); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |