From: <sag...@us...> - 2014-12-24 15:16:08
|
Revision: 4679 http://sourceforge.net/p/modplug/code/4679 Author: saga-games Date: 2014-12-24 15:15:56 +0000 (Wed, 24 Dec 2014) Log Message: ----------- [New] Sample tab: Added new shortcuts to center waveform around loop points Modified Paths: -------------- trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/mptrack/CommandSet.cpp =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp 2014-12-24 13:32:33 UTC (rev 4678) +++ trunk/OpenMPT/mptrack/CommandSet.cpp 2014-12-24 15:15:56 UTC (rev 4679) @@ -670,7 +670,12 @@ DefineKeyCommand(kcSampleUpsample, 1913, _T("Upsample")); DefineKeyCommand(kcSampleDownsample, 1914, _T("Downsample")); DefineKeyCommand(kcSampleResample, 1915, _T("Resample")); + DefineKeyCommand(kcSampleCenterLoopStart, 1916, _T("Center loop start in view")); + DefineKeyCommand(kcSampleCenterLoopEnd, 1917, _T("Center loop end in view")); + DefineKeyCommand(kcSampleCenterSustainStart, 1918, _T("Center sustain loop start in view")); + DefineKeyCommand(kcSampleCenterSustainEnd, 1919, _T("Center sustain loop end in view")); + // Add new key commands here. #ifdef _DEBUG Modified: trunk/OpenMPT/mptrack/CommandSet.h =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.h 2014-12-24 13:32:33 UTC (rev 4678) +++ trunk/OpenMPT/mptrack/CommandSet.h 2014-12-24 15:15:56 UTC (rev 4679) @@ -675,6 +675,10 @@ kcSampleZoomUp, kcSampleZoomDown, kcSampleZoomSelection, + kcSampleCenterLoopStart, + kcSampleCenterLoopEnd, + kcSampleCenterSustainStart, + kcSampleCenterSustainEnd, kcSample8Bit, kcSampleMonoMix, kcSampleMonoLeft, Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2014-12-24 13:32:33 UTC (rev 4678) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2014-12-24 15:15:56 UTC (rev 4679) @@ -227,12 +227,7 @@ { if(centeredSample != SmpLength(-1)) { - // Center given sample in the view - int scrollToSample = centeredSample >> (std::max(1, newZoom) - 1); - scrollToSample -= (m_rcClient.Width() / 2) >> (-std::min(-1, newZoom) - 1); - - Limit(scrollToSample, 0, GetScrollLimit(SB_HORZ)); - SetScrollPos(SB_HORZ, scrollToSample); + ScrollToSample(centeredSample, false); } else { const SmpLength nOldPos = ScrollPosToSamplePos(oldZoom); @@ -243,6 +238,20 @@ } +// Center given sample in the view +void CViewSample::ScrollToSample(SmpLength centeredSample, bool refresh) +//---------------------------------------------------------------------- +{ + int scrollToSample = centeredSample >> (std::max(1, m_nZoom) - 1); + scrollToSample -= (m_rcClient.Width() / 2) >> (-std::min(-1, m_nZoom) - 1); + + Limit(scrollToSample, 0, GetScrollLimit(SB_HORZ)); + SetScrollPos(SB_HORZ, scrollToSample); + + if(refresh) InvalidateRect(nullptr, FALSE); +} + + BOOL CViewSample::OnScrollBy(CSize sizeScroll, BOOL bDoScroll) //------------------------------------------------------------ { @@ -2919,6 +2928,24 @@ case kcSampleZoomUp: OnZoomUp(); return wParam; case kcSampleZoomDown: OnZoomDown(); return wParam; case kcSampleZoomSelection: OnZoomOnSel(); return wParam; + case kcSampleCenterLoopStart: + case kcSampleCenterLoopEnd: + case kcSampleCenterSustainStart: + case kcSampleCenterSustainEnd: + if(m_nZoom) + { + SmpLength point; + ModSample &sample = sndFile.GetSample(m_nSample); + switch(wParam) + { + case kcSampleCenterLoopStart: point = sample.nLoopStart; break; + case kcSampleCenterLoopEnd: point = sample.nLoopEnd; break; + case kcSampleCenterSustainStart: point = sample.nSustainStart; break; + case kcSampleCenterSustainEnd: point = sample.nSustainEnd; break; + } + ScrollToSample(point); + } + return wParam; case kcPrevInstrument: OnPrevInstrument(); return wParam; case kcNextInstrument: OnNextInstrument(); return wParam; case kcEditSelectAll: OnEditSelectAll(); return wParam; Modified: trunk/OpenMPT/mptrack/View_smp.h =================================================================== --- trunk/OpenMPT/mptrack/View_smp.h 2014-12-24 13:32:33 UTC (rev 4678) +++ trunk/OpenMPT/mptrack/View_smp.h 2014-12-24 15:15:56 UTC (rev 4679) @@ -96,6 +96,7 @@ int GetZoomLevel(SmpLength length) const; void DoZoom(int direction, const CPoint &zoomPoint = CPoint(-1, -1)); bool CanZoomSelection() const; + void ScrollToSample(SmpLength centeredSample, bool refresh = true); SmpLength ScrollPosToSamplePos() const {return ScrollPosToSamplePos(m_nZoom);} inline SmpLength ScrollPosToSamplePos(int nZoom) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |