From: <sag...@us...> - 2009-12-05 13:20:04
|
Revision: 434 http://modplug.svn.sourceforge.net/modplug/?rev=434&view=rev Author: saga-games Date: 2009-12-05 13:19:54 +0000 (Sat, 05 Dec 2009) Log Message: ----------- [Fix] Pattern editor: Split Keyboard Settings were not remembered when switching to a different tab. Modified Paths: -------------- trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-05 00:31:41 UTC (rev 433) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2009-12-05 13:19:54 UTC (rev 434) @@ -341,18 +341,6 @@ ///////////////////////////////////////////////////////////////////////// -// Split Keyboard Settings (pattern editor) - -#define SPLIT_OCTAVE_RANGE 9 -struct SplitKeyboardSettings -{ - UINT splitInstrument, splitNote, splitVolume; - int octaveModifier; // determines by how many octaves the notes should be transposed up or down - bool octaveLink; // apply octaveModifier -}; - - -///////////////////////////////////////////////////////////////////////// // Misc. Macros Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-05 00:31:41 UTC (rev 433) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-12-05 13:19:54 UTC (rev 434) @@ -99,6 +99,12 @@ m_PatternUndo.SetParent(this); m_SampleUndo.SetParent(this); + m_SplitKeyboardSettings.splitInstrument = 0; + m_SplitKeyboardSettings.splitNote = NOTE_MIDDLEC - 1; + m_SplitKeyboardSettings.splitVolume = 0; + m_SplitKeyboardSettings.octaveModifier = 0; + m_SplitKeyboardSettings.octaveLink = false; + #ifdef _DEBUG MODCHANNEL *p = m_SndFile.Chn; if (((DWORD)p) & 7) Log("MODCHANNEL is not aligned (0x%08X)\n", p); Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2009-12-05 00:31:41 UTC (rev 433) +++ trunk/OpenMPT/mptrack/Moddoc.h 2009-12-05 13:19:54 UTC (rev 434) @@ -103,6 +103,18 @@ }; +///////////////////////////////////////////////////////////////////////// +// Split Keyboard Settings (pattern editor) + +#define SPLIT_OCTAVE_RANGE 9 +struct SplitKeyboardSettings +{ + UINT splitInstrument, splitNote, splitVolume; + int octaveModifier; // determines by how many octaves the notes should be transposed up or down + bool octaveLink; // apply octaveModifier +}; + + //============================= class CModDoc: public CDocument //============================= @@ -127,6 +139,7 @@ CPatternUndo m_PatternUndo; CSampleUndo m_SampleUndo; + SplitKeyboardSettings m_SplitKeyboardSettings; // this is maybe not the best place to keep them, but it should do the job protected: // create from serialization only CModDoc(); @@ -183,6 +196,7 @@ CPatternUndo *GetPatternUndo() { return &m_PatternUndo; } CSampleUndo *GetSampleUndo() { return &m_SampleUndo; } + SplitKeyboardSettings *GetSplitKeyboardSettings() { return &m_SplitKeyboardSettings; } // operations public: Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 00:31:41 UTC (rev 433) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-05 13:19:54 UTC (rev 434) @@ -31,6 +31,7 @@ UINT CViewPattern::m_nFindMaxChn = 0; signed char cInstrRelChange = 0; + IMPLEMENT_SERIAL(CViewPattern, CModScrollView, 0) BEGIN_MESSAGE_MAP(CViewPattern, CModScrollView) @@ -178,13 +179,6 @@ m_nFoundInstrument = 0; m_nLastPlayedRow = 0; m_nLastPlayedOrder = 0; - - // Set up keyboard split - m_SplitKeyboardSettings.splitInstrument = 0; - m_SplitKeyboardSettings.splitNote = NOTE_MIDDLEC - 1; - m_SplitKeyboardSettings.splitVolume = 0; - m_SplitKeyboardSettings.octaveModifier = 0; - m_SplitKeyboardSettings.octaveLink = false; } @@ -3921,16 +3915,16 @@ const UINT nTick = pSndFile->m_nTickCount; const PATTERNINDEX nPatPlayback = pSndFile->m_nPattern; - const bool isSplit = (note <= m_SplitKeyboardSettings.splitNote); + const bool isSplit = (note <= pModDoc->GetSplitKeyboardSettings()->splitNote); UINT ins = 0; if (pModDoc) { if (isSplit) { - ins = m_SplitKeyboardSettings.splitInstrument; - if (m_SplitKeyboardSettings.octaveLink) note += 12 * m_SplitKeyboardSettings.octaveModifier; - if (note > NOTE_MAX && note < NOTE_NOTECUT) note = NOTE_MAX; - if (note<0) note=1; + ins = pModDoc->GetSplitKeyboardSettings()->splitInstrument; + if (pModDoc->GetSplitKeyboardSettings()->octaveLink) note += 12 *pModDoc->GetSplitKeyboardSettings()->octaveModifier; + if (note > NOTE_MAX && note < NOTE_MIN_SPECIAL) note = NOTE_MAX; + if (note < 0) note = 1; } if (!ins) ins = GetCurrentInstrument(); if (!ins) ins = m_nFoundInstrument; @@ -4184,17 +4178,24 @@ // -- write note and instrument data. const bool isSplit = HandleSplit(p, note); + // Nice idea actually: Use lower section of the keyboard to play chords + /*if(isSplit) + { + TempEnterChord(note); + return; + }*/ + // -- write vol data - if (vol >= 0 && vol <= 64 && !(isSplit && m_SplitKeyboardSettings.splitVolume)) //write valid volume, as long as there's no split volume override. + if (vol >= 0 && vol <= 64 && !(isSplit && pModDoc->GetSplitKeyboardSettings()->splitVolume)) //write valid volume, as long as there's no split volume override. { p->volcmd=VOLCMD_VOLUME; p->vol = vol; - } else if (isSplit && m_SplitKeyboardSettings.splitVolume) //cater for split volume override. + } else if (isSplit && pModDoc->GetSplitKeyboardSettings()->splitVolume) //cater for split volume override. { - if (m_SplitKeyboardSettings.splitVolume > 0 && m_SplitKeyboardSettings.splitVolume <= 64) + if (pModDoc->GetSplitKeyboardSettings()->splitVolume > 0 && pModDoc->GetSplitKeyboardSettings()->splitVolume <= 64) { p->volcmd=VOLCMD_VOLUME; - p->vol = m_SplitKeyboardSettings.splitVolume; + p->vol = pModDoc->GetSplitKeyboardSettings()->splitVolume; } } @@ -4593,7 +4594,9 @@ bool CViewPattern::HandleSplit(MODCOMMAND* p, int note) //----------------------------------------------------- { - if (note > m_SplitKeyboardSettings.splitNote) + CModDoc *pModDoc = GetDocument(); if (!pModDoc) return false; + + if (note > pModDoc->GetSplitKeyboardSettings()->splitNote) { p->note = note; UINT nins = GetCurrentInstrument(); @@ -4603,14 +4606,14 @@ } else { - if (m_SplitKeyboardSettings.splitInstrument) - p->instr = m_SplitKeyboardSettings.splitInstrument; + if (pModDoc->GetSplitKeyboardSettings()->splitInstrument) + p->instr = pModDoc->GetSplitKeyboardSettings()->splitInstrument; else if(GetCurrentInstrument()) p->instr = GetCurrentInstrument(); - if (m_SplitKeyboardSettings.octaveLink) - note += 12 * m_SplitKeyboardSettings.octaveModifier; - if (note > NOTE_MAX && note < NOTE_NOTECUT) note = NOTE_MAX; - if (note<0) note=1; + if (pModDoc->GetSplitKeyboardSettings()->octaveLink) + note += 12 * pModDoc->GetSplitKeyboardSettings()->octaveModifier; + if (note > NOTE_MAX && note < NOTE_MIN_SPECIAL) note = NOTE_MAX; + if (note < 0) note = 1; p->note = note; return true; @@ -5210,6 +5213,6 @@ CSoundFile *pSndFile = pModDoc->GetSoundFile(); if(pSndFile == nullptr) return; - CSplitKeyboadSettings dlg(CMainFrame::GetMainFrame(), pSndFile, &m_SplitKeyboardSettings); + CSplitKeyboadSettings dlg(CMainFrame::GetMainFrame(), pSndFile, pModDoc->GetSplitKeyboardSettings()); dlg.DoModal(); } Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 00:31:41 UTC (rev 433) +++ trunk/OpenMPT/mptrack/View_pat.h 2009-12-05 13:19:54 UTC (rev 434) @@ -85,8 +85,6 @@ SIZE m_szHeader, m_szCell; UINT m_nPattern, m_nRow, m_nMidRow, m_nPlayPat, m_nPlayRow, m_nSpacing, m_nAccelChar, m_nLastPlayedRow, m_nLastPlayedOrder; - SplitKeyboardSettings m_SplitKeyboardSettings; - int m_nXScroll, m_nYScroll; DWORD m_nDragItem, m_nMenuParam, m_nDetailLevel; BOOL m_bDragging, m_bInItemRect, m_bRecord, m_bContinueSearch, m_bWholePatternFitsOnScreen; Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2009-12-05 00:31:41 UTC (rev 433) +++ trunk/OpenMPT/mptrack/resource.h 2009-12-05 13:19:54 UTC (rev 434) @@ -708,7 +708,6 @@ #define IDC_COMMAND_LIST 2129 #define IDC_STATIC8 2200 #define IDC_PATINSTROPLUGGUI 2201 -#define IDC_PATINSTROPLUGGUI2 2202 #define IDC_WFIRCUTOFF 2202 #define IDC_WFIRTYPE 2203 #define IDC_RAMPING 2204 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |