From: <sag...@us...> - 2012-03-22 19:48:59
|
Revision: 1228 http://modplug.svn.sourceforge.net/modplug/?rev=1228&view=rev Author: saga-games Date: 2012-03-22 19:48:52 +0000 (Thu, 22 Mar 2012) Log Message: ----------- [Fix] FT2 note limit fix from rev. 1225 should now be correct. [Imp] Pattern Editor: Shift-Selecting now uses the select key instead of the hard-coded shift key. [Ref] Small changes here and there Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Ctrl_pat.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/PatternGotoDialog.cpp trunk/OpenMPT/mptrack/SampleGenerator.cpp trunk/OpenMPT/mptrack/SampleGenerator.h trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/soundlib/PluginEventQueue.h trunk/OpenMPT/soundlib/RowVisitor.cpp trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -803,7 +803,7 @@ { nCurOrd++; // only if the current oder is already occupied, create a new pattern at the next position. rows = pSndFile->Patterns[nCurPat].GetNumRows(); - rows = CLAMP(rows, pSndFile->GetModSpecifications().patternRowsMin, pSndFile->GetModSpecifications().patternRowsMax); + rows = Clamp(rows, pSndFile->GetModSpecifications().patternRowsMin, pSndFile->GetModSpecifications().patternRowsMax); } PATTERNINDEX nNewPat = m_pModDoc->InsertPattern(nCurOrd, rows); if ((nNewPat != PATTERNINDEX_INVALID) && (nNewPat < pSndFile->Patterns.Size())) Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.h 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/Ctrl_pat.h 2012-03-22 19:48:52 UTC (rev 1228) @@ -102,7 +102,8 @@ void SelectSequence(const SEQUENCEINDEX nSeq); // Little helper function to avoid copypasta - bool IsSelectionKeyPressed() {return CMainFrame::GetInputHandler()->SelectionPressed();} + bool IsSelectionKeyPressed() const { return CMainFrame::GetInputHandler()->SelectionPressed(); } + bool IsCtrlKeyPressed() const { return CMainFrame::GetInputHandler()->CtrlPressed(); } // Clipboard. void OnEditCopy(); Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -818,9 +818,9 @@ LineTo(dc.m_hDC, rect.right-4, rect.bottom-4); } - CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); + CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - //Drawing 'playing'-indicator. + //Drawing 'playing'-indicator. if(nIndex == pSndFile->GetCurrentOrder() && pMainFrm->IsPlaying() ) { MoveToEx(dc.m_hDC, rect.left+4, rect.top+2, NULL); @@ -872,9 +872,8 @@ if (pt.y < rect.bottom) { SetFocus(); - CInputHandler* ih = (CMainFrame::GetMainFrame())->GetInputHandler(); - if (ih->CtrlPressed()) + if(IsCtrlKeyPressed()) { // queue pattern QueuePattern(pt); @@ -884,15 +883,15 @@ const int oldXScroll = m_nXScroll; ORDERINDEX nOrder = GetOrderFromPoint(rect, pt); - ORD_SELECTION selection = GetCurSel(false); + ORD_SELECTION selection = GetCurSel(false); // check if cursor is in selection - if it is, only react on MouseUp as the user might want to drag those orders if(m_nScrollPos2nd == ORDERINDEX_INVALID || nOrder < selection.nOrdLo || nOrder > selection.nOrdHi) { m_nScrollPos2nd = ORDERINDEX_INVALID; - SetCurSel(nOrder, true, ih->ShiftPressed()); + SetCurSel(nOrder, true, IsSelectionKeyPressed()); } - m_bDragging = IsOrderInMargins(m_nScrollPos, oldXScroll) ? false : true; + m_bDragging = !IsOrderInMargins(m_nScrollPos, oldXScroll); if(m_bDragging == true) { Modified: trunk/OpenMPT/mptrack/PatternGotoDialog.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternGotoDialog.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/PatternGotoDialog.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -68,34 +68,41 @@ bool validated=true; //is pattern number sensible? - if (m_nPattern>=m_pSndFile->Patterns.Size()) { + if(m_nPattern>=m_pSndFile->Patterns.Size()) + { validated=false; } //Does pattern exist? - if (validated && !(m_pSndFile->Patterns[m_nPattern])) { + if(validated && !(m_pSndFile->Patterns[m_nPattern])) + { validated=false; } //Does order match pattern? - if (validated && m_pSndFile->Order[m_nOrder] != m_nPattern) { + if(validated && m_pSndFile->Order[m_nOrder] != m_nPattern) + { validated=false; } //Does pattern have enough rows? - if (validated && m_pSndFile->Patterns[m_nPattern].GetNumRows() <= m_nRow) { + if(validated && m_pSndFile->Patterns[m_nPattern].GetNumRows() <= m_nRow) + { validated=false; } //Does track have enough channels? - if (validated && m_pSndFile->m_nChannels < m_nChannel) { + if(validated && m_pSndFile->m_nChannels < m_nChannel) + { validated=false; } - if (validated) { + if (validated) + { CDialog::OnOK(); - } else { + } else + { CDialog::OnCancel(); } @@ -105,14 +112,16 @@ void CPatternGotoDialog::OnEnChangeGotoPat() //------------------------------------------ { - if (ControlsLocked()) { + if(ControlsLocked()) + { return; //the change to textbox did not come from user. } UpdateData(); m_nOrder = m_pSndFile->Order.FindOrder(static_cast<PATTERNINDEX>(m_nPattern), m_nActiveOrder); - if (m_nOrder >= m_pSndFile->Order.size()) { + if(m_nOrder == ORDERINDEX_INVALID) + { m_nOrder=0; } @@ -123,15 +132,18 @@ void CPatternGotoDialog::OnEnChangeGotoOrd() { - if (ControlsLocked()) { + if(ControlsLocked()) + { return; //the change to textbox did not come from user. } UpdateData(); - if (m_nOrder<m_pSndFile->Order.size()) { + if(m_nOrder<m_pSndFile->Order.size()) + { UINT candidatePattern = m_pSndFile->Order[m_nOrder]; - if (candidatePattern<m_pSndFile->Patterns.Size() && m_pSndFile->Patterns[candidatePattern]) { + if(candidatePattern<m_pSndFile->Patterns.Size() && m_pSndFile->Patterns[candidatePattern]) + { m_nPattern = candidatePattern; } } Modified: trunk/OpenMPT/mptrack/SampleGenerator.cpp =================================================================== --- trunk/OpenMPT/mptrack/SampleGenerator.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/SampleGenerator.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -4,6 +4,7 @@ * Purpose: Generate samples from math formulas using muParser * Notes : (currently none) * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ @@ -99,8 +100,8 @@ // Check if sample parameters are valid. -bool CSampleGenerator::CanRenderSample() -//-------------------------------------- +bool CSampleGenerator::CanRenderSample() const +//-------------------------------------------- { if(sample_frequency < SMPGEN_MINFREQ || sample_frequency > SMPGEN_MAXFREQ || sample_length < SMPGEN_MINLENGTH || sample_length > SMPGEN_MAXLENGTH) return false; return true; Modified: trunk/OpenMPT/mptrack/SampleGenerator.h =================================================================== --- trunk/OpenMPT/mptrack/SampleGenerator.h 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/SampleGenerator.h 2012-03-22 19:48:52 UTC (rev 1228) @@ -1,12 +1,15 @@ /* * SampleGenerator.h * ----------------- - * Purpose: Header file for sample generator + * Purpose: Generate samples from math formulas using muParser * Notes : (currently none) * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ + #pragma once + #include "mptrack.h" #include "Mainfrm.h" #include "Sndfile.h" @@ -52,9 +55,9 @@ // Rendering callback functions // functions - static mu::value_type ClipCallback(mu::value_type val, mu::value_type min, mu::value_type max) { return CLAMP(val, min, max); }; + static mu::value_type ClipCallback(mu::value_type val, mu::value_type min, mu::value_type max) { return Clamp(val, min, max); }; static mu::value_type PWMCallback(mu::value_type pos, mu::value_type duty, mu::value_type width) { if(width == 0) return 0; else return (fmod(pos, width) < ((duty / 100) * width)) ? 1 : -1; }; - static mu::value_type RndCallback(mu::value_type v) { return v*std::rand()/(mu::value_type)(RAND_MAX+1.0); }; + static mu::value_type RndCallback(mu::value_type v) { return v * std::rand() / (mu::value_type)(RAND_MAX + 1.0); }; static mu::value_type SampleDataCallback(mu::value_type v); static mu::value_type TriangleCallback(mu::value_type pos, mu::value_type width) { if((int)width == 0) return 0; else return abs(((int)pos % (int)(width)) - width / 2) / (width / 4) - 1; }; @@ -67,7 +70,7 @@ bool ShowDialog(); bool TestExpression(); - bool CanRenderSample(); + bool CanRenderSample() const; bool RenderSample(CSoundFile *pSndFile, SAMPLEINDEX nSample); CSampleGenerator(); Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -439,7 +439,7 @@ CheckDlgButton(IDC_CHECK10, pPlugin->IsBypassed() ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(IDC_CHECK11, pPlugin->IsWetMix() ? BST_CHECKED : BST_UNCHECKED); CVstPlugin *pVstPlugin = (pPlugin->pMixPlugin) ? (CVstPlugin *)pPlugin->pMixPlugin : NULL; - m_BtnEdit.EnableWindow(((pVstPlugin) && ((pVstPlugin->HasEditor()) || (pVstPlugin->GetNumCommands()))) ? TRUE : FALSE); + m_BtnEdit.EnableWindow((pVstPlugin != nullptr && (pVstPlugin->HasEditor() || pVstPlugin->GetNumCommands())) ? TRUE : FALSE); ::EnableWindow(::GetDlgItem(m_hWnd, IDC_MOVEFXSLOT), (pVstPlugin) ? TRUE : FALSE); ::EnableWindow(::GetDlgItem(m_hWnd, IDC_INSERTFXSLOT), (pVstPlugin) ? TRUE : FALSE); ::EnableWindow(::GetDlgItem(m_hWnd, IDC_CLONEPLUG), (pVstPlugin) ? TRUE : FALSE); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -1148,7 +1148,7 @@ } else if ((point.x >= m_szHeader.cx) && (point.y > m_szHeader.cy)) { - if(CMainFrame::GetInputHandler()->ShiftPressed() && m_StartSel == m_Selection.GetLowerRight()) + if(CMainFrame::GetInputHandler()->SelectionPressed() && m_StartSel == m_Selection.GetLowerRight()) { // Shift pressed -> set 2nd selection point DragToSel(GetPositionFromPoint(point), true, true); @@ -1621,6 +1621,7 @@ } } + void CViewPattern::OnChannelReset() //--------------------------------- { @@ -1649,6 +1650,7 @@ OnMuteChannel(false); } + void CViewPattern::OnMuteChannel(bool current) //-------------------------------------------- { @@ -1672,7 +1674,9 @@ } } + void CViewPattern::OnSoloFromClick() +//---------------------------------- { OnSoloChannel(false); } @@ -2529,13 +2533,6 @@ } -void CViewPattern::OnInterpolateVolume() -//-------------------------------------- -{ - Interpolate(PatternCursor::volumeColumn); -} - - void CViewPattern::OnOpenRandomizer() //----------------------------------- { @@ -2598,21 +2595,6 @@ //end rewbs.fxvis -void CViewPattern::OnInterpolateEffect() -//-------------------------------------- -{ - Interpolate(PatternCursor::effectColumn); -} - -void CViewPattern::OnInterpolateNote() -//-------------------------------------- -{ - Interpolate(PatternCursor::noteColumn); -} - - -//static void CArrayUtils<UINT>::Merge(CArray<UINT,UINT>& Dest, CArray<UINT,UINT>& Src); - void CViewPattern::Interpolate(PatternCursor::Columns type) //--------------------------------------------------------- { @@ -3071,34 +3053,7 @@ } -void CViewPattern::OnTransposeUp() -//-------------------------------- -{ - TransposeSelection(1); -} - -void CViewPattern::OnTransposeDown() -//---------------------------------- -{ - TransposeSelection(-1); -} - - -void CViewPattern::OnTransposeOctUp() -//----------------------------------- -{ - TransposeSelection(12); -} - - -void CViewPattern::OnTransposeOctDown() -//------------------------------------- -{ - TransposeSelection(-12); -} - - void CViewPattern::OnSwitchToOrderList() //-------------------------------------- { Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/View_pat.h 2012-03-22 19:48:52 UTC (rev 1228) @@ -357,15 +357,15 @@ afx_msg void OnPatternPlayNoLoop() {} */ //end rewbs.customKeys afx_msg void OnPatternRecord() { PostCtrlMessage(CTRLMSG_SETRECORD, -1); } - afx_msg void OnInterpolateVolume(); - afx_msg void OnInterpolateEffect(); - afx_msg void OnInterpolateNote(); + afx_msg void OnInterpolateVolume() { Interpolate(PatternCursor::volumeColumn); } + afx_msg void OnInterpolateEffect() { Interpolate(PatternCursor::effectColumn); } + afx_msg void OnInterpolateNote() { Interpolate(PatternCursor::noteColumn); } afx_msg void OnVisualizeEffect(); //rewbs.fxvis afx_msg void OnOpenRandomizer(); //rewbs.fxvis - afx_msg void OnTransposeUp(); - afx_msg void OnTransposeDown(); - afx_msg void OnTransposeOctUp(); - afx_msg void OnTransposeOctDown(); + afx_msg void OnTransposeUp() { TransposeSelection(1); } + afx_msg void OnTransposeDown() { TransposeSelection(-1); } + afx_msg void OnTransposeOctUp() { TransposeSelection(12); } + afx_msg void OnTransposeOctDown() { TransposeSelection(-12); } afx_msg void OnSetSelInstrument(); afx_msg void OnAddChannelFront() { AddChannelBefore(m_MenuCursor.GetChannel()); } afx_msg void OnAddChannelAfter() { AddChannelBefore(m_MenuCursor.GetChannel() + 1); }; Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -1240,8 +1240,8 @@ template<class T, class uT> -T CViewSample::GetSampleValueFromPoint(const CPoint& point) -//------------------------------------------------------------ +T CViewSample::GetSampleValueFromPoint(const CPoint &point) +//--------------------------------------------------------- { STATIC_ASSERT(sizeof(T) == sizeof(uT) && sizeof(T) <= 2); int value = (std::numeric_limits<T>::max)() - (std::numeric_limits<uT>::max)() * point.y / (m_rcClient.bottom - m_rcClient.top); @@ -1251,7 +1251,7 @@ template<class T, class uT> -void CViewSample::SetInitialDrawPoint(void* pSample, const CPoint& point) +void CViewSample::SetInitialDrawPoint(void *pSample, const CPoint &point) //----------------------------------------------------------------------- { T* data = reinterpret_cast<T*>(pSample); @@ -1260,8 +1260,8 @@ template<class T, class uT> -void CViewSample::SetSampleData(void* pSample, const CPoint& point, const DWORD old ) -//----------------------------------------------------------------------------------- +void CViewSample::SetSampleData(void *pSample, const CPoint &point, const DWORD old) +//---------------------------------------------------------------------------------- { T* data = reinterpret_cast<T*>(pSample); const int oldvalue = data[old]; @@ -1300,6 +1300,7 @@ if (pMainFrm && m_dwEndSel <= m_dwBeginSel) { + // Show cursor position as offset effect if no selection is made. if(m_nSample > 0 && m_nSample <= pSndFile->GetNumSamples() && x < pSndFile->GetSample(m_nSample).nLength) { const DWORD xLow = (x / 0x100) % 0x100; Modified: trunk/OpenMPT/soundlib/PluginEventQueue.h =================================================================== --- trunk/OpenMPT/soundlib/PluginEventQueue.h 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/soundlib/PluginEventQueue.h 2012-03-22 19:48:52 UTC (rev 1228) @@ -88,7 +88,7 @@ return Enqueue(reinterpret_cast<const VstMidiSysexEvent &>(event), insertFront); #else // True on 64-Bit hosts: VstMidiSysexEvent is bigger, so copy smaller event into bigger event. - static_assert(sizeof(VstEvent) <= sizeof(VstMidiSysexEvent), "This is no 32-Bit host!"); + static_assert(sizeof(VstEvent) <= sizeof(VstMidiSysexEvent), "This is no 64-Bit host!"); VstMidiSysexEvent copyEvent; memcpy(©Event, &event, min(event.byteSize, sizeof(event))); return Enqueue(copyEvent, insertFront); @@ -104,7 +104,7 @@ return Enqueue(reinterpret_cast<const VstMidiSysexEvent &>(event), insertFront); #else // True on 64-Bit hosts: VstMidiSysexEvent is bigger, so copy smaller event into bigger event. - static_assert(sizeof(VstMidiEvent) <= sizeof(VstMidiSysexEvent), "This is no 32-Bit host!"); + static_assert(sizeof(VstMidiEvent) <= sizeof(VstMidiSysexEvent), "This is no 64-Bit host!"); VstMidiSysexEvent copyEvent; memcpy(©Event, &event, min(event.byteSize, sizeof(event))); return Enqueue(copyEvent, insertFront); Modified: trunk/OpenMPT/soundlib/RowVisitor.cpp =================================================================== --- trunk/OpenMPT/soundlib/RowVisitor.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/soundlib/RowVisitor.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -93,9 +93,7 @@ { // We visited this row already - this module must be looping. return true; - } - - if(autoSet) + } else if(autoSet) { visitedRows[order][row] = true; } @@ -111,8 +109,7 @@ if(sndFile.Patterns.IsValidPat(pattern)) { return static_cast<size_t>(sndFile.Patterns[pattern].GetNumRows()); - } - else + } else { // Invalid patterns consist of a "fake" row. return 1; Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2012-03-21 14:18:54 UTC (rev 1227) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2012-03-22 19:48:52 UTC (rev 1228) @@ -856,9 +856,10 @@ if ((pChn->dwFlags & CHN_LOOP) && (pChn->nLoopEnd < pChn->nLength)) pChn->nLength = pChn->nLoopEnd; // Fix sample position on instrument change. This is needed for PT1x MOD and IT "on the fly" sample change. + // XXX is this actually called? In ProcessEffects(), a note-on effect is emulated if there's an on the fly sample change! if(pChn->nPos >= pChn->nLength) { - if((GetType() & MOD_TYPE_IT)) + if((GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT))) { pChn->nPos = pChn->nPosLo = 0; } else if((GetType() & MOD_TYPE_MOD)) // TODO does not always seem to work, especially with short chip samples? @@ -1640,7 +1641,7 @@ // Instrument mode if(instr <= GetNumInstruments() && Instruments[instr] != nullptr) { - sample = Instruments[instr]->Keyboard[note]; + sample = Instruments[instr]->Keyboard[note - NOTE_MIN]; } } else { @@ -1649,7 +1650,7 @@ } if(sample <= GetNumSamples()) { - transpose = GetSample(instr).RelativeTone; + transpose = GetSample(sample).RelativeTone; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |