From: <sag...@us...> - 2014-12-02 23:07:20
|
Revision: 4627 http://sourceforge.net/p/modplug/code/4627 Author: saga-games Date: 2014-12-02 23:07:06 +0000 (Tue, 02 Dec 2014) Log Message: ----------- [Ref] Change the update hint encoding/decoding logic from bit juggling in dozens of places into one new class, UpdateHint. NOTE: This does not remedy the fact that we only have 14 (well, used to be 13, since I also managed to get rid of one update hint type) bits for the update parameter left, as the update hint is still tunnelled through MFC's OnUpdate() and hence must fit into an LPARAM. Modified Paths: -------------- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/Ctrl_com.cpp trunk/OpenMPT/mptrack/Ctrl_com.h trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/Ctrl_gen.h trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_ins.h trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Ctrl_pat.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Ctrl_smp.h trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/EffectVis.cpp trunk/OpenMPT/mptrack/ExternalSamples.cpp trunk/OpenMPT/mptrack/Globals.cpp trunk/OpenMPT/mptrack/Globals.h trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainbar.h trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/View_gen.h trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_ins.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/View_tre.h trunk/OpenMPT/mptrack/mptrack_08.vcproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters trunk/OpenMPT/mptrack/view_com.cpp trunk/OpenMPT/mptrack/view_com.h Added Paths: ----------- trunk/OpenMPT/mptrack/UpdateHints.h Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp =================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -920,7 +920,7 @@ //pIns->wMidiBank = (WORD)((m_pVstPlugin->GetCurrentProgram() >> 7) + 1); //pIns->nMidiProgram = (BYTE)((m_pVstPlugin->GetCurrentProgram() & 0x7F) + 1); - pModDoc->UpdateAllViews(NULL, (nIns << HINT_SHIFT_INS) | HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE | (first ? HINT_MODTYPE : 0)); + pModDoc->UpdateAllViews(NULL, InstrumentHint(HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE | (first ? HINT_MODTYPE : HINT_NONE), nIns)); if(sndFile.GetModSpecifications().supportsPlugins) { pModDoc->SetModified(); Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp =================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -9,9 +9,9 @@ #include "stdafx.h" -#include "mainfrm.h" -#include "moddoc.h" -#include "view_gen.h" +#include "Moddoc.h" +#include "Mainfrm.h" +#include "View_gen.h" #include "ChannelManagerDlg.h" @@ -1104,7 +1104,7 @@ pModDoc->MuteChannel(n,!pModDoc->IsChannelMuted(n)); } pModDoc->SetModified(); - pModDoc->UpdateAllViews(NULL, HINT_MODCHANNELS | ((n/CHANNELS_IN_TAB) << HINT_SHIFT_CHNTAB)); + pModDoc->UpdateAllViews(NULL, ChannelTabHint(HINT_MODCHANNELS, n / CHANNELS_IN_TAB)); break; case 1: BYTE rec; @@ -1123,7 +1123,7 @@ if(button == CM_BT_LEFT) pModDoc->NoFxChannel(n, false); else pModDoc->NoFxChannel(n, true); pModDoc->SetModified(); - pModDoc->UpdateAllViews(NULL, HINT_MODCHANNELS | ((n/CHANNELS_IN_TAB) << HINT_SHIFT_CHNTAB)); + pModDoc->UpdateAllViews(NULL, ChannelTabHint(HINT_MODCHANNELS, n / CHANNELS_IN_TAB)); break; case 3: if(button == CM_BT_LEFT) Modified: trunk/OpenMPT/mptrack/Ctrl_com.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_com.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_com.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -107,10 +107,10 @@ } -void CCtrlComments::UpdateView(DWORD dwHint, CObject *pHint) -//---------------------------------------------------------- +void CCtrlComments::UpdateView(UpdateHint hint, CObject *pHint) +//------------------------------------------------------------- { - if ((pHint == this) || (!(dwHint & (HINT_MODCOMMENTS|HINT_MPTOPTIONS|HINT_MODTYPE)))) return; + if ((pHint == this) || (!(hint.GetType() & (HINT_MODCOMMENTS|HINT_MPTOPTIONS|HINT_MODTYPE)))) return; if (m_nLockCount) return; m_nLockCount++; HFONT newfont; @@ -156,7 +156,7 @@ m_EditComments.SetSel(0, 0); m_EditComments.SetModify(FALSE); } - if (dwHint & HINT_MODTYPE) + if (hint.GetType() & HINT_MODTYPE) { m_EditComments.SetReadOnly(!m_sndFile.GetModSpecifications().hasComments); } Modified: trunk/OpenMPT/mptrack/Ctrl_com.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_com.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_com.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -33,7 +33,7 @@ virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void RecalcLayout(); - virtual void UpdateView(DWORD dwHintMask=0, CObject *pObj=NULL); + virtual void UpdateView(UpdateHint hint = HINT_NONE, CObject *pObj = nullptr); virtual CRuntimeClass *GetAssociatedViewClass(); virtual void OnActivatePage(LPARAM); virtual void OnDeactivatePage(); Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -202,16 +202,17 @@ } -void CCtrlGeneral::UpdateView(DWORD dwHint, CObject *pHint) -//--------------------------------------------------------- +void CCtrlGeneral::UpdateView(UpdateHint hint, CObject *pHint) +//------------------------------------------------------------ { if (pHint == this) return; - if (dwHint & HINT_MODSEQUENCE) + HintType hintType = hint.GetType(); + if (hintType & HINT_MODSEQUENCE) { // Set max valid restart position m_SpinRestartPos.SetRange32(0, m_sndFile.Order.GetLengthTailTrimmed() - 1); } - if (dwHint & HINT_MODGENERAL) + if (hintType & HINT_MODGENERAL) { if (!m_bEditsLocked) { @@ -230,7 +231,7 @@ m_SliderTempo.SetPos(m_sndFile.GetModSpecifications().tempoMax - m_sndFile.m_nDefaultTempo); } - if (dwHint & HINT_MODTYPE) + if (hintType & HINT_MODTYPE) { CModSpecifications specs = m_sndFile.GetModSpecifications(); m_SpinTempo.SetRange(specs.tempoMin, specs.tempoMax); @@ -275,7 +276,7 @@ m_EditModType.SetWindowText(s); } CheckDlgButton(IDC_CHECK_LOOPSONG, (TrackerSettings::Instance().gbLoopSong) ? TRUE : FALSE); - if (dwHint & HINT_MPTOPTIONS) + if (hintType & HINT_MPTOPTIONS) { m_VuMeterLeft.InvalidateRect(NULL, FALSE); m_VuMeterRight.InvalidateRect(NULL, FALSE); @@ -410,7 +411,8 @@ m_sndFile.m_nDefaultSpeed = n; m_sndFile.m_PlayState.m_nMusicSpeed = n; m_modDoc.SetModified(); - m_modDoc.UpdateAllViews(NULL, HINT_MODGENERAL, this); + // HINT_ENVELOPE: Update envelope grid view + m_modDoc.UpdateAllViews(NULL, HINT_MODGENERAL | HINT_ENVELOPE, this); m_bEditsLocked=false; } } Modified: trunk/OpenMPT/mptrack/Ctrl_gen.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_gen.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -76,7 +76,7 @@ virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void RecalcLayout(); - virtual void UpdateView(DWORD dwHintMask=0, CObject *pObj=NULL); + virtual void UpdateView(UpdateHint hint = HINT_NONE, CObject *pObj = nullptr); virtual CRuntimeClass *GetAssociatedViewClass(); virtual void OnActivatePage(LPARAM); virtual void OnDeactivatePage(); Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -982,10 +982,10 @@ // Set instrument (and moddoc) as modified. // updateAll: Update all views including this one. Otherwise, only update update other views. -void CCtrlInstruments::SetModified(DWORD mask, bool updateAll, bool modified) -//--------------------------------------------------------------------------- +void CCtrlInstruments::SetModified(HintType mask, bool updateAll, bool modified) +//------------------------------------------------------------------------------ { - m_modDoc.UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | mask, updateAll ? nullptr : this); + m_modDoc.UpdateAllViews(NULL, InstrumentHint(mask, m_nInstrument), updateAll ? nullptr : this); if(modified) m_modDoc.SetModified(); } @@ -1000,7 +1000,7 @@ { m_nInstrument = nIns; m_NoteMap.SetCurrentInstrument(m_nInstrument); - UpdateView((m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT | HINT_ENVELOPE, NULL); + UpdateView(InstrumentHint(HINT_INSTRUMENT | HINT_ENVELOPE, m_nInstrument), NULL); } else { // Just in case @@ -1046,7 +1046,7 @@ SetCurrentInstrument((lParam > 0) ? lParam : m_nInstrument); // Initial Update - if (!m_bInitialized) UpdateView((m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT | HINT_ENVELOPE | HINT_MODTYPE, NULL); + if (!m_bInitialized) UpdateView(InstrumentHint(HINT_INSTRUMENT | HINT_ENVELOPE | HINT_MODTYPE, m_nInstrument), NULL); CChildFrame *pFrame = (CChildFrame *)GetParentFrame(); if (pFrame) PostViewMessage(VIEWMSG_LOADSTATE, (LPARAM)pFrame->GetInstrumentViewState()); @@ -1124,28 +1124,29 @@ } -void CCtrlInstruments::UpdateView(DWORD dwHintMask, CObject *pObj) -//---------------------------------------------------------------- +void CCtrlInstruments::UpdateView(UpdateHint hint, CObject *pObj) +//--------------------------------------------------------------- { if(pObj == this) return; - if (dwHintMask & HINT_MPTOPTIONS) + HintType hintType = hint.GetType(); + if (hintType & HINT_MPTOPTIONS) { m_ToolBar.UpdateStyle(); } LockControls(); - if (dwHintMask & HINT_MIXPLUGINS) OnMixPlugChanged(); + if (hintType & HINT_MIXPLUGINS) OnMixPlugChanged(); UnlockControls(); - if(!(dwHintMask & (HINT_INSTRUMENT | HINT_ENVELOPE| HINT_MODTYPE))) return; + if(!(hintType & (HINT_INSTRUMENT | HINT_ENVELOPE| HINT_MODTYPE))) return; - const INSTRUMENTINDEX updateIns = (dwHintMask >> HINT_SHIFT_INS); + const INSTRUMENTINDEX updateIns = hint.GetData(); - if(updateIns != m_nInstrument && updateIns != 0 && (dwHintMask & (HINT_INSTRUMENT | HINT_ENVELOPE)) && !(dwHintMask & HINT_MODTYPE)) return; + if(updateIns != m_nInstrument && updateIns != 0 && (hintType & (HINT_INSTRUMENT | HINT_ENVELOPE)) && !(hintType & HINT_MODTYPE)) return; LockControls(); - if (!m_bInitialized) dwHintMask |= HINT_MODTYPE; + if (!m_bInitialized) hintType |= HINT_MODTYPE; ModInstrument *pIns = m_sndFile.Instruments[m_nInstrument]; - if (dwHintMask & HINT_MODTYPE) + if (hintType & HINT_MODTYPE) { const CModSpecifications *specs = &m_sndFile.GetModSpecifications(); @@ -1232,7 +1233,7 @@ m_CbnMidiCh.SetItemData(m_CbnMidiCh.AddString(s), ich); } } - if (dwHintMask & (HINT_INSTRUMENT|HINT_MODTYPE)) + if (hintType & (HINT_INSTRUMENT|HINT_MODTYPE)) { // Backwards compatibility with IT modules that use now deprecated hack features. m_SliderCutSwing.EnableWindow((pIns != nullptr && (m_sndFile.GetType() == MOD_TYPE_MPT || pIns->nCutSwing != 0)) ? TRUE : FALSE); @@ -1353,7 +1354,7 @@ } m_NoteMap.InvalidateRect(NULL, FALSE); } - if(dwHintMask & (HINT_MIXPLUGINS|HINT_MODTYPE)) + if(hintType & (HINT_MIXPLUGINS|HINT_MODTYPE)) { UpdatePluginList(); } @@ -1659,9 +1660,9 @@ if (ins != INSTRUMENTINDEX_INVALID) { SetCurrentInstrument(ins); - m_modDoc.UpdateAllViews(NULL, (ins << HINT_SHIFT_INS) | HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE); + m_modDoc.UpdateAllViews(NULL, InstrumentHint(HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE, ins)); } - if (bFirst) m_modDoc.UpdateAllViews(NULL, (ins << HINT_SHIFT_INS) | HINT_MODTYPE | HINT_INSTRUMENT | HINT_INSNAMES); + if (bFirst) m_modDoc.UpdateAllViews(NULL, InstrumentHint(HINT_MODTYPE | HINT_INSTRUMENT | HINT_INSNAMES, ins)); m_parent.InstrumentChanged(m_nInstrument); SwitchToView(); } @@ -1676,7 +1677,7 @@ if(ins != INSTRUMENTINDEX_INVALID) { SetCurrentInstrument(ins); - m_modDoc.UpdateAllViews(NULL, (ins << HINT_SHIFT_INS) | HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE); + m_modDoc.UpdateAllViews(NULL, InstrumentHint(HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE, ins)); } m_parent.InstrumentChanged(m_nInstrument); } @@ -2125,7 +2126,7 @@ // If this plugin can recieve MIDI events and we have no MIDI channel // selected for this instrument, automatically select MIDI channel 1. pIns->nMidiChannel = MidiFirstChannel; - UpdateView((m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT, NULL); + UpdateView(InstrumentHint(HINT_INSTRUMENT, m_nInstrument), NULL); } if(pIns->midiPWD == 0) { @@ -2446,8 +2447,7 @@ CSampleMapDlg dlg(m_sndFile, m_nInstrument, this); if (dlg.DoModal() == IDOK) { - m_modDoc.SetModified(); - m_modDoc.UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT, this); + SetModified(HINT_INSTRUMENT, true); m_NoteMap.InvalidateRect(NULL, FALSE); } } @@ -2530,7 +2530,7 @@ cs.Leave(); m_modDoc.SetModified(); - UpdateView((m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT); + UpdateView(InstrumentHint(HINT_INSTRUMENT, m_nInstrument)); return; } @@ -2559,7 +2559,7 @@ cs.Leave(); m_modDoc.SetModified(); - UpdateView((m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT); + UpdateView(InstrumentHint(HINT_INSTRUMENT, m_nInstrument)); return; } @@ -2585,7 +2585,7 @@ //new tuning(s) come visible. BuildTuningComboBox(); - UpdateView((m_nInstrument << HINT_SHIFT_INS) | HINT_INSTRUMENT); + UpdateView(InstrumentHint(HINT_INSTRUMENT, m_nInstrument)); } Modified: trunk/OpenMPT/mptrack/Ctrl_ins.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_ins.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -122,7 +122,7 @@ virtual ~CCtrlInstruments(); public: - void SetModified(DWORD mask, bool updateAll, bool modified = true); + void SetModified(HintType mask, bool updateAll, bool modified = true); BOOL SetCurrentInstrument(UINT nIns, BOOL bUpdNum=TRUE); BOOL OpenInstrument(const mpt::PathString &fileName); BOOL OpenInstrument(CSoundFile &sndFile, INSTRUMENTINDEX nInstr); @@ -138,7 +138,7 @@ virtual void RecalcLayout(); virtual void OnActivatePage(LPARAM); virtual void OnDeactivatePage(); - virtual void UpdateView(DWORD dwHintMask=0, CObject *pObj=NULL); + virtual void UpdateView(UpdateHint hint = HINT_NONE, CObject *pObj = nullptr); virtual LRESULT OnModCtrlMsg(WPARAM wParam, LPARAM lParam); virtual BOOL GetToolTipText(UINT uId, LPSTR pszText); virtual BOOL PreTranslateMessage(MSG* pMsg); Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -239,24 +239,24 @@ } -void CCtrlPatterns::UpdateView(DWORD dwHintMask, CObject *pObj) -//------------------------------------------------------------- +void CCtrlPatterns::UpdateView(UpdateHint hint, CObject *pObj) +//------------------------------------------------------------ { - CHAR s[256]; - m_OrderList.UpdateView(dwHintMask, pObj); + m_OrderList.UpdateView(hint, pObj); + HintType hintType = hint.GetType(); - if(dwHintMask & HINT_MODSEQUENCE) + if(hintType & HINT_MODSEQUENCE) { SetDlgItemText(IDC_EDIT_SEQUENCE_NAME, m_sndFile.Order.GetName().c_str()); } - if(dwHintMask & (HINT_MODSEQUENCE|HINT_MODTYPE)) + if(hintType & (HINT_MODSEQUENCE|HINT_MODTYPE)) { m_SpinSequence.SetRange(0, m_sndFile.Order.GetNumSequences() - 1); m_SpinSequence.SetPos(m_sndFile.Order.GetCurrentSequenceIndex()); } //rewbs.instroVST - if(dwHintMask & (HINT_MIXPLUGINS|HINT_MODTYPE)) + if(hintType & (HINT_MIXPLUGINS|HINT_MODTYPE)) { if (HasValidPlug(m_nInstrument)) ::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI), true); @@ -276,7 +276,7 @@ GetDlgItem(IDC_EDIT_PATTERNNAME)->EnableWindow(isPatNameAvail); } //end rewbs.instroVST - if(dwHintMask & HINT_MPTOPTIONS) + if(hintType & HINT_MPTOPTIONS) { m_ToolBar.UpdateStyle(); // -> CODE#0007 @@ -285,10 +285,11 @@ m_ToolBar.SetState(ID_OVERFLOWPASTE, ((TrackerSettings::Instance().m_dwPatternSetup & PATTERN_OVERFLOWPASTE) ? TBSTATE_CHECKED : 0) | TBSTATE_ENABLED); // -! BEHAVIOUR_CHANGE#0007 } - if(dwHintMask & (HINT_MODTYPE|HINT_INSNAMES|HINT_SMPNAMES|HINT_PATNAMES)) + if(hintType & (HINT_MODTYPE|HINT_INSNAMES|HINT_SMPNAMES|HINT_PATNAMES)) { LockControls(); - if(dwHintMask & (HINT_MODTYPE|HINT_INSNAMES|HINT_SMPNAMES)) + CHAR s[256]; + if(hintType & (HINT_MODTYPE|HINT_INSNAMES|HINT_SMPNAMES)) { static const TCHAR szSplitFormat[] = TEXT("%02u %s %02u: %s/%s"); UINT nPos = 0; @@ -340,11 +341,11 @@ m_CbnInstrument.SetRedraw(TRUE); m_CbnInstrument.Invalidate(FALSE); } - if(dwHintMask & (HINT_MODTYPE|HINT_PATNAMES)) + if(hintType & (HINT_MODTYPE|HINT_PATNAMES)) { PATTERNINDEX nPat; - if(dwHintMask & HINT_PATNAMES) - nPat = (PATTERNINDEX)(dwHintMask >> HINT_SHIFT_PAT); + if(hintType & HINT_PATNAMES) + nPat = (PATTERNINDEX)hint.GetData(); else nPat = (PATTERNINDEX)SendViewMessage(VIEWMSG_GETCURRENTPATTERN); if(m_sndFile.Patterns.IsValidIndex(nPat)) @@ -361,7 +362,7 @@ } UnlockControls(); } - if (dwHintMask & (HINT_MODTYPE|HINT_UNDO)) + if (hintType & (HINT_MODTYPE|HINT_UNDO)) { m_ToolBar.EnableButton(ID_EDIT_UNDO, m_modDoc.GetPatternUndo().CanUndo()); } @@ -387,7 +388,7 @@ return m_OrderList.GetCurrentPattern(); case CTRLMSG_PATTERNCHANGED: - UpdateView((DWORD)(lParam << HINT_SHIFT_PAT) | HINT_PATNAMES, NULL); + UpdateView(PatternHint(HINT_PATNAMES, static_cast<PATTERNINDEX>(lParam))); break; case CTRLMSG_PAT_PREVINSTRUMENT: @@ -1090,7 +1091,7 @@ if(m_sndFile.Patterns[nPat].SetName(s)) { if(m_sndFile.GetType() & (MOD_TYPE_XM|MOD_TYPE_IT|MOD_TYPE_MPT)) m_modDoc.SetModified(); - m_modDoc.UpdateAllViews(NULL, (nPat << HINT_SHIFT_PAT) | HINT_PATNAMES, this); + m_modDoc.UpdateAllViews(NULL, PatternHint(HINT_PATNAMES, nPat), this); } } } @@ -1106,7 +1107,7 @@ { m_sndFile.Order.SetName(str.GetString()); m_modDoc.SetModified(); - m_modDoc.UpdateAllViews(NULL, (m_sndFile.Order.GetCurrentSequenceIndex() << HINT_SHIFT_SEQUENCE) | HINT_SEQNAMES, this); + m_modDoc.UpdateAllViews(NULL, SequenceHint(HINT_SEQNAMES, m_sndFile.Order.GetCurrentSequenceIndex()), this); } } Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_pat.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -115,7 +115,7 @@ //{{AFX_VIRTUAL(COrderList) virtual BOOL PreTranslateMessage(MSG *pMsg); - virtual void UpdateView(DWORD dwHintMask=0, CObject *pObj=NULL); + virtual void UpdateView(UpdateHint hint = HINT_NONE, CObject *pObj = nullptr); //}}AFX_VIRTUAL protected: @@ -202,7 +202,7 @@ virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void RecalcLayout(); - virtual void UpdateView(DWORD dwHintMask=0, CObject *pObj=NULL); + virtual void UpdateView(UpdateHint hint = HINT_NONE, CObject *pObj = nullptr); virtual CRuntimeClass *GetAssociatedViewClass(); virtual LRESULT OnModCtrlMsg(WPARAM wParam, LPARAM lParam); virtual void OnActivatePage(LPARAM); Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -596,10 +596,10 @@ } -void COrderList::UpdateView(DWORD dwHintMask, CObject *pObj) -//---------------------------------------------------------- +void COrderList::UpdateView(UpdateHint hint, CObject *pObj) +//--------------------------------------------------------- { - if(pObj != this && (dwHintMask & HINT_MODSEQUENCE)) + if(pObj != this && (hint.GetType() & HINT_MODSEQUENCE)) { InvalidateRect(NULL, FALSE); UpdateInfoText(); Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -336,7 +336,7 @@ if (m_nSample != nSmp) { m_nSample = nSmp; - UpdateView((m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO, NULL); + UpdateView(SampleHint(HINT_SAMPLEINFO, m_nSample), NULL); } if (bUpdNum) { @@ -402,7 +402,7 @@ SetCurrentSample((lParam > 0) ? ((SAMPLEINDEX)lParam) : m_nSample); // Initial Update - if (!m_bInitialized) UpdateView((m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_MODTYPE, NULL); + if (!m_bInitialized) UpdateView(SampleHint(HINT_SAMPLEINFO | HINT_MODTYPE, m_nSample), NULL); CChildFrame *pFrame = (CChildFrame *)GetParentFrame(); if ((pFrame) && (m_hWndView)) PostViewMessage(VIEWMSG_LOADSTATE, (LPARAM)pFrame->GetSampleViewState()); SwitchToView(); @@ -547,24 +547,25 @@ } -void CCtrlSamples::UpdateView(DWORD dwHintMask, CObject *pObj) -//------------------------------------------------------------ +void CCtrlSamples::UpdateView(UpdateHint hint, CObject *pObj) +//----------------------------------------------------------- { if(pObj == this) return; - if (dwHintMask & HINT_MPTOPTIONS) + HintType hintType = hint.GetType(); + if (hintType & HINT_MPTOPTIONS) { m_ToolBar1.UpdateStyle(); m_ToolBar2.UpdateStyle(); } - if (!(dwHintMask & (HINT_SAMPLEINFO|HINT_MODTYPE))) return; + if (!(hintType & (HINT_SAMPLEINFO|HINT_MODTYPE))) return; - const SAMPLEINDEX updateSmp = (dwHintMask >> HINT_SHIFT_SMP); + const SAMPLEINDEX updateSmp = hint.GetData(); - if(updateSmp != m_nSample && updateSmp != 0 && !(dwHintMask & HINT_MODTYPE)) return; + if(updateSmp != m_nSample && updateSmp != 0 && !(hintType & HINT_MODTYPE)) return; LockControls(); - if (!m_bInitialized) dwHintMask |= HINT_MODTYPE; + if (!m_bInitialized) hintType |= HINT_MODTYPE; // Updating Ranges - if (dwHintMask & HINT_MODTYPE) + if (hintType & HINT_MODTYPE) { const CModSpecifications *specs = &m_sndFile.GetModSpecifications(); @@ -656,7 +657,7 @@ m_CbnBaseNote.EnableWindow(b); } // Updating Values - if (dwHintMask & (HINT_MODTYPE|HINT_SAMPLEINFO)) + if (hintType & (HINT_MODTYPE|HINT_SAMPLEINFO)) { if(m_nSample > m_sndFile.GetNumSamples()) { @@ -755,7 +756,7 @@ wsprintf(s, "%lu", sample.nSustainEnd); m_EditSustainEnd.SetWindowText(s); } - if (dwHintMask & (HINT_MODTYPE | HINT_SAMPLEINFO | HINT_SMPNAMES)) + if (hintType & (HINT_MODTYPE | HINT_SAMPLEINFO | HINT_SMPNAMES)) { CheckDlgButton(IDC_CHECK2, m_sndFile.GetSample(m_nSample).uFlags[SMP_KEEPONDISK] ? BST_CHECKED : BST_UNCHECKED); GetDlgItem(IDC_CHECK2)->EnableWindow((m_sndFile.SampleHasPath(m_nSample) && m_sndFile.GetType() == MOD_TYPE_MPT) ? TRUE : FALSE); @@ -776,8 +777,8 @@ // updateAll: Update all views including this one. Otherwise, only update update other views. -void CCtrlSamples::SetModified(DWORD mask, bool updateAll, bool waveformModified) -//------------------------------------------------------------------------------- +void CCtrlSamples::SetModified(HintType mask, bool updateAll, bool waveformModified) +//---------------------------------------------------------------------------------- { m_modDoc.SetModified(); @@ -788,7 +789,7 @@ if(sample.uFlags[SMP_KEEPONDISK] && !sample.uFlags[SMP_MODIFIED]) mask |= HINT_SMPNAMES; sample.uFlags.set(SMP_MODIFIED); } - m_modDoc.UpdateAllViews(nullptr, mask | (m_nSample << HINT_SHIFT_SMP), updateAll ? nullptr : this); + m_modDoc.UpdateAllViews(nullptr, SampleHint(mask, m_nSample), updateAll ? nullptr : this); } @@ -981,13 +982,13 @@ sndFile.ReadSampleFromSong(smp, sndFile, nOldSmp); } - m_modDoc.UpdateAllViews(NULL, (smp << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA | HINT_SMPNAMES); + m_modDoc.UpdateAllViews(NULL, SampleHint(HINT_SAMPLEINFO | HINT_SAMPLEDATA | HINT_SMPNAMES, smp)); if(m_modDoc.GetNumInstruments() > 0 && m_modDoc.FindSampleParent(smp) == INSTRUMENTINDEX_INVALID) { if(Reporting::Confirm("This sample is not used by any instrument. Do you want to create a new instrument using this sample?") == cnfYes) { INSTRUMENTINDEX nins = m_modDoc.InsertInstrument(smp); - m_modDoc.UpdateAllViews(NULL, (nins << HINT_SHIFT_INS) | HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE); + m_modDoc.UpdateAllViews(NULL, InstrumentHint(HINT_INSTRUMENT | HINT_INSNAMES | HINT_ENVELOPE, nins)); m_parent.InstrumentChanged(nins); } } @@ -1162,7 +1163,7 @@ if(i != smp && m_sndFile.GetSample(i).uFlags[SMP_KEEPONDISK] && m_sndFile.GetSamplePath(i) == m_sndFile.GetSamplePath(smp)) { m_sndFile.GetSample(i).uFlags.reset(SMP_KEEPONDISK); - m_modDoc.UpdateAllViews(nullptr, HINT_SMPNAMES | HINT_SAMPLEINFO | (i << HINT_SHIFT_SMP), this); + m_modDoc.UpdateAllViews(nullptr, SampleHint(HINT_SMPNAMES | HINT_SAMPLEINFO, i), this); } } } @@ -1296,7 +1297,7 @@ if (bOk) { sample.PrecomputeLoops(m_sndFile, false); - m_modDoc.UpdateAllViews(NULL, (iSmp << HINT_SHIFT_SMP) | HINT_SAMPLEDATA, NULL); + m_modDoc.UpdateAllViews(NULL, SampleHint(HINT_SAMPLEDATA, iSmp)); } } } @@ -1405,7 +1406,7 @@ fReportOffset += fOffset; numModified++; - m_modDoc.UpdateAllViews(nullptr, (iSmp << HINT_SHIFT_SMP) | HINT_SAMPLEDATA | HINT_SAMPLEINFO); + m_modDoc.UpdateAllViews(nullptr, SampleHint(HINT_SAMPLEDATA | HINT_SAMPLEINFO, iSmp)); } EndWaitCursor(); @@ -2606,7 +2607,7 @@ { sample.SetLoop(0, sample.nLength, true, n == 2, m_sndFile); } - m_modDoc.UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA); + m_modDoc.UpdateAllViews(NULL, SampleHint(HINT_SAMPLEINFO | HINT_SAMPLEDATA, m_nSample)); } else { sample.PrecomputeLoops(m_sndFile); @@ -2653,7 +2654,7 @@ { sample.SetSustainLoop(0, sample.nLength, true, n == 2, m_sndFile); } - m_modDoc.UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEINFO | HINT_SAMPLEDATA); + m_modDoc.UpdateAllViews(NULL, SampleHint(HINT_SAMPLEINFO | HINT_SAMPLEDATA, m_nSample)); } else { sample.PrecomputeLoops(m_sndFile); @@ -3163,7 +3164,7 @@ for(SAMPLEINDEX i = first; i <= last; i++) { m_sndFile.GetSample(i).uFlags.set(SMP_KEEPONDISK, enable && m_sndFile.SampleHasPath(i)); - m_modDoc.UpdateAllViews(nullptr, HINT_SAMPLEINFO | (i << HINT_SHIFT_SMP), this); + m_modDoc.UpdateAllViews(nullptr, SampleHint(HINT_SAMPLEINFO, i), this); } } @@ -3192,7 +3193,7 @@ m_sndFile.GetSample(*sample).nVibType = m_sndFile.GetSample(m_nSample).nVibType; m_sndFile.GetSample(*sample).nVibRate = m_sndFile.GetSample(m_nSample).nVibRate; m_sndFile.GetSample(*sample).nVibSweep = m_sndFile.GetSample(m_nSample).nVibSweep; - m_modDoc.UpdateAllViews(nullptr, HINT_SAMPLEINFO | ((*sample) << HINT_SHIFT_SMP), (CObject *)this); + m_modDoc.UpdateAllViews(nullptr, SampleHint(HINT_SAMPLEINFO, *sample), (CObject *)this); } } } Modified: trunk/OpenMPT/mptrack/Ctrl_smp.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Ctrl_smp.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -78,7 +78,7 @@ virtual void RecalcLayout(); virtual void OnActivatePage(LPARAM); virtual void OnDeactivatePage(); - virtual void UpdateView(DWORD dwHintMask=0, CObject *pObj=NULL); + virtual void UpdateView(UpdateHint hint = HINT_NONE, CObject *pObj = nullptr); virtual LRESULT OnModCtrlMsg(WPARAM wParam, LPARAM lParam); virtual BOOL GetToolTipText(UINT uId, TCHAR *pszText); virtual BOOL PreTranslateMessage(MSG* pMsg); @@ -128,7 +128,7 @@ afx_msg void OnEnableStretchToSize(); afx_msg void OnEstimateSampleSize(); - void SetModified(DWORD mask, bool updateAll, bool waveformModified); + void SetModified(HintType mask, bool updateAll, bool waveformModified); //}}AFX_MSG DECLARE_MESSAGE_MAP() Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -224,14 +224,15 @@ } -void CViewPattern::UpdateView(DWORD dwHintMask, CObject *hint) -//------------------------------------------------------------ +void CViewPattern::UpdateView(UpdateHint hint, CObject *pObj) +//----------------------------------------------------------- { - if(hint == this) + if(pObj == this) { return; } - if(dwHintMask & HINT_MPTOPTIONS) + HintType hintType = hint.GetType(); + if(hintType & HINT_MPTOPTIONS) { UpdateColors(); UpdateSizes(); @@ -239,26 +240,26 @@ InvalidatePattern(true); return; } - if(dwHintMask & HINT_MODCHANNELS) + if(hintType & HINT_MODCHANNELS) { InvalidateChannelsHeaders(); UpdateScrollSize(); } - const PATTERNINDEX updatePat = (dwHintMask >> HINT_SHIFT_PAT); - if(HintFlagPart(dwHintMask) == HINT_PATTERNDATA + const PATTERNINDEX updatePat = hint.GetData(); + if(hintType == HINT_PATTERNDATA && m_nPattern != updatePat && updatePat != 0 && updatePat != GetNextPattern() && updatePat != GetPrevPattern()) return; - if(dwHintMask & (HINT_MODTYPE|HINT_PATTERNDATA)) + if(hintType & (HINT_MODTYPE|HINT_PATTERNDATA)) { InvalidatePattern(false); - } else if(dwHintMask & HINT_PATTERNROW) + } else if(hintType & HINT_PATTERNROW) { - InvalidateRow(dwHintMask >> HINT_SHIFT_ROW); + InvalidateRow(hint.GetData()); } } Modified: trunk/OpenMPT/mptrack/EffectVis.cpp =================================================================== --- trunk/OpenMPT/mptrack/EffectVis.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/EffectVis.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -850,7 +850,7 @@ } m_pModDoc->SetModified(); - m_pModDoc->UpdateAllViews(NULL, HINT_PATTERNDATA | (m_nPattern << HINT_SHIFT_PAT), NULL); + m_pModDoc->UpdateAllViews(NULL, PatternHint(HINT_PATTERNDATA, m_nPattern), NULL); } void CEffectVis::SetPcNote(ROWINDEX row) Modified: trunk/OpenMPT/mptrack/ExternalSamples.cpp =================================================================== --- trunk/OpenMPT/mptrack/ExternalSamples.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/ExternalSamples.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -119,7 +119,7 @@ TrackerDirectories::Instance().SetWorkingDirectory(dlg.GetWorkingDirectory(), DIR_SAMPLES); SetSample(smp, dlg.GetFirstFile()); - modDoc.UpdateAllViews(NULL, HINT_SAMPLEINFO | HINT_SMPNAMES | HINT_SAMPLEDATA | (smp << HINT_SHIFT_SMP)); + modDoc.UpdateAllViews(nullptr, SampleHint(HINT_SAMPLEINFO | HINT_SMPNAMES | HINT_SAMPLEDATA, smp)); GenerateList(); } Modified: trunk/OpenMPT/mptrack/Globals.cpp =================================================================== --- trunk/OpenMPT/mptrack/Globals.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Globals.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -159,8 +159,8 @@ } -BOOL CModTabCtrl::InsertItem(int nIndex, LPSTR pszText, LPARAM lParam, int iImage) -//-------------------------------------------------------------------------------- +BOOL CModTabCtrl::InsertItem(int nIndex, LPTSTR pszText, LPARAM lParam, int iImage) +//--------------------------------------------------------------------------------- { TC_ITEM tci; tci.mask = TCIF_TEXT | TCIF_PARAM | TCIF_IMAGE; @@ -276,7 +276,7 @@ void CModControlView::OnUpdate(CView*, LPARAM lHint, CObject*pHint) //----------------------------------------------------------------- { - UpdateView(lHint, pHint); + UpdateView(UpdateHint(lHint), pHint); } @@ -423,14 +423,14 @@ } -void CModControlView::UpdateView(DWORD lHint, CObject *pObject) -//------------------------------------------------------------- +void CModControlView::UpdateView(UpdateHint lHint, CObject *pObject) +//------------------------------------------------------------------ { CWnd *pActiveDlg = NULL; CModDoc *pDoc = GetDocument(); if (!pDoc) return; // Module type changed: update tabs - if (lHint & HINT_MODTYPE) + if (lHint.GetType() & HINT_MODTYPE) { UINT nCount = 4; UINT mask = 1 | 2 | 4 | 16; @@ -450,19 +450,19 @@ if (pActiveDlg) pActiveDlg->ShowWindow(SW_HIDE); } m_TabCtrl.DeleteAllItems(); - if (mask & 1) m_TabCtrl.InsertItem(count++, "General", IDD_CONTROL_GLOBALS, IMAGE_GENERAL); - if (mask & 2) m_TabCtrl.InsertItem(count++, "Patterns", IDD_CONTROL_PATTERNS, IMAGE_PATTERNS); - if (mask & 4) m_TabCtrl.InsertItem(count++, "Samples", IDD_CONTROL_SAMPLES, IMAGE_SAMPLES); - if (mask & 8) m_TabCtrl.InsertItem(count++, "Instruments", IDD_CONTROL_INSTRUMENTS, IMAGE_INSTRUMENTS); - //if (mask & 32) m_TabCtrl.InsertItem(count++, "Graph", IDD_CONTROL_GRAPH, IMAGE_GRAPH); //rewbs.graph - if (mask & 16) m_TabCtrl.InsertItem(count++, "Comments", IDD_CONTROL_COMMENTS, IMAGE_COMMENTS); + if (mask & 1) m_TabCtrl.InsertItem(count++, _T("General"), IDD_CONTROL_GLOBALS, IMAGE_GENERAL); + if (mask & 2) m_TabCtrl.InsertItem(count++, _T("Patterns"), IDD_CONTROL_PATTERNS, IMAGE_PATTERNS); + if (mask & 4) m_TabCtrl.InsertItem(count++, _T("Samples"), IDD_CONTROL_SAMPLES, IMAGE_SAMPLES); + if (mask & 8) m_TabCtrl.InsertItem(count++, _T("Instruments"), IDD_CONTROL_INSTRUMENTS, IMAGE_INSTRUMENTS); + //if (mask & 32) m_TabCtrl.InsertItem(count++, _T("Graph"), IDD_CONTROL_GRAPH, IMAGE_GRAPH); //rewbs.graph + if (mask & 16) m_TabCtrl.InsertItem(count++, _T("Comments"), IDD_CONTROL_COMMENTS, IMAGE_COMMENTS); } } // Update child dialogs for (UINT nIndex=0; nIndex<MAX_PAGES; nIndex++) { CModControlDlg *pDlg = m_Pages[nIndex]; - if ((pDlg) && (pObject != pDlg)) pDlg->UpdateView(lHint, pObject); + if ((pDlg) && (pObject != pDlg)) pDlg->UpdateView(UpdateHint(lHint), pObject); } // Restore the displayed child dialog if (pActiveDlg) pActiveDlg->ShowWindow(SW_SHOW); @@ -585,7 +585,7 @@ void CModScrollView::OnUpdate(CView* pView, LPARAM lHint, CObject*pHint) //---------------------------------------------------------------------- { - if (pView != this) UpdateView(lHint, pHint); + if (pView != this) UpdateView(UpdateHint(lHint), pHint); } Modified: trunk/OpenMPT/mptrack/Globals.h =================================================================== --- trunk/OpenMPT/mptrack/Globals.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Globals.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -83,7 +83,7 @@ virtual void OnOK() {} virtual void OnCancel() {} virtual void RecalcLayout() {} - virtual void UpdateView(DWORD, CObject *) {} + virtual void UpdateView(UpdateHint, CObject *) {} virtual CRuntimeClass *GetAssociatedViewClass() { return NULL; } virtual LRESULT OnModCtrlMsg(WPARAM wParam, LPARAM lParam); virtual void OnActivatePage(LPARAM) {} @@ -106,7 +106,7 @@ //================================ { public: - BOOL InsertItem(int nIndex, LPSTR pszText, LPARAM lParam=0, int iImage=-1); + BOOL InsertItem(int nIndex, LPTSTR pszText, LPARAM lParam=0, int iImage=-1); BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); LPARAM GetItemData(int nIndex); }; @@ -140,7 +140,7 @@ protected: void RecalcLayout(); - void UpdateView(DWORD dwHintMask=0, CObject *pHint=NULL); + void UpdateView(UpdateHint hint = HINT_NONE, CObject *pHint=NULL); BOOL SetActivePage(int nIndex=-1, LPARAM lParam=-1); int GetActivePage(); @@ -204,7 +204,7 @@ virtual void OnDraw(CDC *) {} virtual void OnPrepareDC(CDC*, CPrintInfo*) {} virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint); - virtual void UpdateView(DWORD, CObject *) {} + virtual void UpdateView(UpdateHint, CObject *) {} virtual LRESULT OnModViewMsg(WPARAM wParam, LPARAM lParam); virtual BOOL OnDragonDrop(BOOL, const DRAGONDROP *) { return FALSE; } virtual LRESULT OnPlayerNotify(Notification *) { return 0; } Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -1772,17 +1772,17 @@ } -void CMainFrame::UpdateAllViews(DWORD dwHint, CObject *pHint) +void CMainFrame::UpdateAllViews(UpdateHint hint, CObject *pHint) //----------------------------------------------------------- { CDocTemplate *pDocTmpl = theApp.GetModDocTemplate(); if (pDocTmpl) { POSITION pos = pDocTmpl->GetFirstDocPosition(); - CDocument *pDoc; - while ((pos != NULL) && ((pDoc = pDocTmpl->GetNextDoc(pos)) != NULL)) + CModDoc *pDoc; + while ((pos != NULL) && ((pDoc = dynamic_cast<CModDoc *>(pDocTmpl->GetNextDoc(pos))) != nullptr)) { - pDoc->UpdateAllViews(NULL, dwHint, pHint); + pDoc->UpdateAllViews(NULL, hint, pHint); } } } @@ -1848,10 +1848,10 @@ } -VOID CMainFrame::UpdateTree(CModDoc *pModDoc, DWORD lHint, CObject *pHint) -//------------------------------------------------------------------------ +VOID CMainFrame::UpdateTree(CModDoc *pModDoc, UpdateHint hint, CObject *pHint) +//---------------------------------------------------------------------------- { - m_wndTree.OnUpdate(pModDoc, lHint, pHint); + m_wndTree.OnUpdate(pModDoc, hint, pHint); } @@ -2267,10 +2267,10 @@ } -LRESULT CMainFrame::OnInvalidatePatterns(WPARAM wParam, LPARAM) -//------------------------------------------------------------- +LRESULT CMainFrame::OnInvalidatePatterns(WPARAM, LPARAM) +//------------------------------------------------------ { - UpdateAllViews(wParam, NULL); + UpdateAllViews(UpdateHint(HINT_MPTOPTIONS, 0)); return TRUE; } Modified: trunk/OpenMPT/mptrack/Mainbar.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Mainbar.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -448,12 +448,12 @@ int nSpeed = pSndFile->m_PlayState.m_nMusicSpeed; if (nSpeed != nCurrentSpeed) { - //rewbs.envRowGrid - CModDoc *pModDoc = CMainFrame::GetMainFrame()->GetActiveDoc(); - if (pModDoc) { - pModDoc->UpdateAllViews(NULL, HINT_SPEEDCHANGE); + CModDoc *modDoc = pSndFile->GetpModDoc(); + if(modDoc != nullptr) + { + // Update envelope views if speed has changed + modDoc->UpdateAllViews(nullptr, HINT_ENVELOPE); } - //end rewbs.envRowGrid if (nCurrentSpeed < 0) m_SpinSpeed.EnableWindow(TRUE); nCurrentSpeed = nSpeed; @@ -947,10 +947,10 @@ } -VOID CModTreeBar::OnUpdate(CModDoc *pModDoc, DWORD lHint, CObject *pHint) -//----------------------------------------------------------------------- +VOID CModTreeBar::OnUpdate(CModDoc *pModDoc, UpdateHint hint, CObject *pHint) +//--------------------------------------------------------------------------- { - if (m_pModTree) m_pModTree->OnUpdate(pModDoc, lHint, pHint); + if (m_pModTree) m_pModTree->OnUpdate(pModDoc, hint, pHint); } Modified: trunk/OpenMPT/mptrack/Mainbar.h =================================================================== --- trunk/OpenMPT/mptrack/Mainbar.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Mainbar.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -149,7 +149,7 @@ VOID OnOptionsChanged(); VOID OnDocumentCreated(CModDoc *pModDoc); VOID OnDocumentClosed(CModDoc *pModDoc); - VOID OnUpdate(CModDoc *pModDoc, DWORD lHint=0, CObject *pHint=NULL); + VOID OnUpdate(CModDoc *pModDoc, UpdateHint hint, CObject *pHint=NULL); VOID UpdatePlayPos(CModDoc *pModDoc, Notification *pNotify); HWND GetModTreeHWND(); //rewbs.customKeys BOOL PostMessageToModTree(UINT cmdID, WPARAM wParam, LPARAM lParam); //rewbs.customKeys Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -11,6 +11,7 @@ #pragma once #include "Mptrack.h" +#include "UpdateHints.h" #include "../common/AudioCriticalSection.h" #include "../common/mutex.h" #include "../soundlib/Sndfile.h" @@ -429,7 +430,7 @@ static HFONT GetGUIFont() { return m_hGUIFont; } static HFONT GetFixedFont() { return m_hFixedFont; } static HFONT GetLargeFixedFont() { return m_hLargeFixedFont; } - static void UpdateAllViews(DWORD dwHint, CObject *pHint=NULL); + static void UpdateAllViews(UpdateHint hint, CObject *pHint=NULL); static LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam); static CInputHandler *m_InputHandler; //rewbs.customKeys static CAutoSaver *m_pAutoSaver; //rewbs.customKeys @@ -445,7 +446,7 @@ CView *GetActiveView(); //rewbs.customKeys void OnDocumentCreated(CModDoc *pModDoc); void OnDocumentClosed(CModDoc *pModDoc); - void UpdateTree(CModDoc *pModDoc, DWORD lHint=0, CObject *pHint=NULL); + void UpdateTree(CModDoc *pModDoc, UpdateHint hint, CObject *pHint=NULL); static CInputHandler* GetInputHandler() { return m_InputHandler; } //rewbs.customKeys bool m_bModTreeHasFocus; //rewbs.customKeys CWnd *m_pNoteMapHasFocus; //rewbs.customKeys Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -1642,12 +1642,13 @@ } -void CModDoc::UpdateAllViews(CView *pSender, LPARAM lHint, CObject *pHint) -//------------------------------------------------------------------------ +void CModDoc::UpdateAllViews(CView *pSender, UpdateHint hint, CObject *pHint) +//--------------------------------------------------------------------------- { - CDocument::UpdateAllViews(pSender, lHint, pHint); + // Tunnel our UpdateHint into an LPARAM + CDocument::UpdateAllViews(pSender, hint.AsLPARAM(), pHint); CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - if (pMainFrm) pMainFrm->UpdateTree(this, lHint, pHint); + if (pMainFrm) pMainFrm->UpdateTree(this, hint, pHint); } Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Moddoc.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -14,86 +14,13 @@ #include "../common/misc_util.h" #include "Undo.h" #include "Notification.h" +#include "UpdateHints.h" #include <time.h> OPENMPT_NAMESPACE_BEGIN class EncoderFactoryBase; -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bit Mask for updating view (hints of what changed) -#define HINT_MODTYPE 0x00001 -#define HINT_MODCOMMENTS 0x00002 -#define HINT_MODGENERAL 0x00004 -#define HINT_MODSEQUENCE 0x00008 -#define HINT_MODCHANNELS 0x00010 -#define HINT_PATTERNDATA 0x00020 -#define HINT_PATTERNROW 0x00040 -#define HINT_PATNAMES 0x00080 -#define HINT_MPTOPTIONS 0x00100 -#define HINT_SAMPLEINFO 0x00400 -#define HINT_SAMPLEDATA 0x00800 -#define HINT_INSTRUMENT 0x01000 -#define HINT_ENVELOPE 0x02000 -#define HINT_SMPNAMES 0x04000 -#define HINT_INSNAMES 0x08000 -#define HINT_UNDO 0x10000 -#define HINT_MIXPLUGINS 0x20000 -#define HINT_SPEEDCHANGE 0x40000 //rewbs.envRowGrid -#define HINT_SEQNAMES 0x80000 -#define HINT_MAXHINTFLAG HINT_SEQNAMES -//Bits 0-19 are reserved. -#define HINT_MASK_FLAGS (2*HINT_MAXHINTFLAG - 1) //When applied to hint parameter, should give the flag part. -#define HINT_MASK_ITEM (~HINT_MASK_FLAGS) //To nullify update hintbits from hint parameter. -#define HintFlagPart(x) ((x) & HINT_MASK_FLAGS) - -//If fails, hint flagbits|itembits does not enable all bits; -//might be worthwhile to check the reason. -STATIC_ASSERT( (HINT_MASK_ITEM | HINT_MASK_FLAGS) == -1 ); - -//If fails, hint param flag and item parts overlap; might be a problem. -STATIC_ASSERT( (HINT_MASK_ITEM & HINT_MASK_FLAGS) == 0 ); - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// NOTE : be careful when adding new flags !!! -// ------------------------------------------------------------------------------------------------------------------------- -// those flags are passed through a 32bits parameter which can also contain instrument/sample/pattern row... number : -// HINT_SAMPLEINFO & HINT_SAMPLEDATA & HINT_SMPNAMES : can be used with a sample number 12bit coded (passed as bit 20 to 31) -// HINT_PATTERNROW : is used with a row number 10bit coded (passed as bit 22 to 31) -// HINT_INSTRUMENT & HINT_INSNAMES : can be used with an instrument number 8bit coded (passed as bit 24 to 31) -// new flags can be added BUT be carefull that they will not be used in a case they should aliased with, ie, a sample number -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - -//Updateview hints can, in addition to the actual hints, contain -//addition data such as pattern or instrument index. The -//values below define the number of bits used for these. -#define HINT_BITS_PATTERN 12 -#define HINT_BITS_ROWS 10 -#define HINT_BITS_SAMPLE 12 -#define HINT_BITS_INST 8 -#define HINT_BITS_CHNTAB 8 -#define HINT_BITS_SEQUENCE 6 - -//Defines bit shift values used for setting/retrieving the additional hint data to/from hint parameter. -#define HINT_SHIFT_PAT (32 - HINT_BITS_PATTERN) -#define HINT_SHIFT_ROW (32 - HINT_BITS_ROWS) -#define HINT_SHIFT_SMP (32 - HINT_BITS_SAMPLE) -#define HINT_SHIFT_INS (32 - HINT_BITS_INST) -#define HINT_SHIFT_CHNTAB (32 - HINT_BITS_CHNTAB) -#define HINT_SHIFT_SEQUENCE (32 - HINT_BITS_SEQUENCE) - -//Check that hint bit counts are not too large given the number of hint flags. -STATIC_ASSERT( ((-1 << HINT_SHIFT_PAT) & HINT_MASK_ITEM) == (-1 << HINT_SHIFT_PAT) ); -STATIC_ASSERT( ((-1 << HINT_SHIFT_ROW) & HINT_MASK_ITEM) == (-1 << HINT_SHIFT_ROW) ); -STATIC_ASSERT( ((-1 << HINT_SHIFT_SMP) & HINT_MASK_ITEM) == (-1 << HINT_SHIFT_SMP) ); -STATIC_ASSERT( ((-1 << HINT_SHIFT_INS) & HINT_MASK_ITEM) == (-1 << HINT_SHIFT_INS) ); -STATIC_ASSERT( ((-1 << HINT_SHIFT_CHNTAB) & HINT_MASK_ITEM) == (-1 << HINT_SHIFT_CHNTAB) ); -STATIC_ASSERT( ((-1 << HINT_SHIFT_SEQUENCE) & HINT_MASK_ITEM) == (-1 << HINT_SHIFT_SEQUENCE) ); - - ///////////////////////////////////////////////////////////////////////// // Split Keyboard Settings (pattern editor) @@ -321,7 +248,7 @@ bool PasteEnvelope(UINT nIns, enmEnvelopeTypes nEnv); LRESULT ActivateView(UINT nIdView, DWORD dwParam); - void UpdateAllViews(CView *pSender, LPARAM lHint=0L, CObject *pHint=NULL); + void UpdateAllViews(CView *pSender, UpdateHint hint, CObject *pHint=NULL); HWND GetEditPosition(ROWINDEX &row, PATTERNINDEX &pat, ORDERINDEX &ord); LRESULT OnCustomKeyMsg(WPARAM, LPARAM); void TogglePluginEditor(UINT m_nCurrentPlugin); Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -947,7 +947,7 @@ if(success) { SetModified(); - UpdateAllViews(NULL, HINT_PATTERNDATA | (nPattern << HINT_SHIFT_PAT), NULL); + UpdateAllViews(NULL, PatternHint(HINT_PATTERNDATA, nPattern), NULL); } else { GetPatternUndo().RemoveLastUndoStep(); @@ -977,7 +977,7 @@ if(success) { SetModified(); - UpdateAllViews(NULL, HINT_PATTERNDATA | (nPattern << HINT_SHIFT_PAT), NULL); + UpdateAllViews(NULL, PatternHint(HINT_PATTERNDATA, nPattern), NULL); } else { GetPatternUndo().RemoveLastUndoStep(); @@ -1056,6 +1056,7 @@ } HGLOBAL hCpy = ::GetClipboardData(CF_TEXT); LPCSTR p; + bool result = false; if ((hCpy) && ((p = (LPSTR)GlobalLock(hCpy)) != NULL)) { ModInstrument *pIns = m_SndFile.Instruments[nIns]; @@ -1115,11 +1116,10 @@ } GlobalUnlock(hCpy); CloseClipboard(); - SetModified(); - UpdateAllViews(NULL, (nIns << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); + result = true; } EndWaitCursor(); - return true; + return result; } Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -944,7 +944,7 @@ m->note = newNote; m->instr = newInstr; - modDoc->UpdateAllViews(NULL, (editPos.row << HINT_SHIFT_ROW) | HINT_PATTERNROW, NULL); + modDoc->UpdateAllViews(NULL, RowHint(HINT_PATTERNROW, editPos.row), NULL); if(wasParamControl != m->IsPcNote()) { @@ -989,7 +989,7 @@ m->volcmd = newVolCmd; m->vol = newVol; - modDoc->UpdateAllViews(NULL, (editPos.row << HINT_SHIFT_ROW) | HINT_PATTERNROW, NULL); + modDoc->UpdateAllViews(NULL, RowHint(HINT_PATTERNROW, editPos.row), NULL); if(volCmdChanged) { @@ -1050,7 +1050,7 @@ } UpdateEffectRange(true); - modDoc->UpdateAllViews(NULL, (editPos.row << HINT_SHIFT_ROW) | HINT_PATTERNROW, NULL); + modDoc->UpdateAllViews(NULL, RowHint(HINT_PATTERNROW, editPos.row), NULL); } } @@ -1095,7 +1095,7 @@ m->param = newParam; } - modDoc->UpdateAllViews(NULL, (editPos.row << HINT_SHIFT_ROW) | HINT_PATTERNROW, NULL); + modDoc->UpdateAllViews(NULL, RowHint(HINT_PATTERNROW, editPos.row), NULL); } } } Added: trunk/OpenMPT/mptrack/UpdateHints.h =================================================================== --- trunk/OpenMPT/mptrack/UpdateHints.h (rev 0) +++ trunk/OpenMPT/mptrack/UpdateHints.h 2014-12-02 23:07:06 UTC (rev 4627) @@ -0,0 +1,114 @@ +/* + * UpdateHints.h + * ------------- + * Purpose: Hint type and abstraction class for passing around hints between module views. + * Notes : Please read the note in enum HintMode if you plan to add more hint types. + * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + + +#pragma once + +#include "../common/FlagSet.h" + +// Bit Mask for updating view (hints of what changed) +enum HintType +{ + HINT_NONE = 0x00000, + HINT_MODTYPE = 0x00001, + HINT_MODCOMMENTS = 0x00002, + HINT_MODGENERAL = 0x00004, + HINT_MODSEQUENCE = 0x00008, + HINT_MODCHANNELS = 0x00010, + HINT_PATTERNDATA = 0x00020, + HINT_PATTERNROW = 0x00040, + HINT_PATNAMES = 0x00080, + HINT_MPTOPTIONS = 0x00100, + HINT_SAMPLEINFO = 0x00400, + HINT_SAMPLEDATA = 0x00800, + HINT_INSTRUMENT = 0x01000, + HINT_ENVELOPE = 0x02000, + HINT_SMPNAMES = 0x04000, + HINT_INSNAMES = 0x08000, + HINT_UNDO = 0x10000, + HINT_MIXPLUGINS = 0x20000, + HINT_SEQNAMES = 0x40000, + // NOTE: Hint type and hint data need to fit together into one 32-bit integer. + // At the moment, this means that there are only 14 bits left for hint data! + // This means that it will be difficult to add hints in the current scheme, + // which is only really required because hints are passed through LPARAMs in MFC. + // There are two ways to fix this: + // 1) Override MFC's mechanism to pass around UpdateHints instead (Rewrite OnUpdate/etc) + // 2) Reduce number of bits required for hints. This could for example be done by + // finding mutually exclusive flags that can only be used if a certain "context" + // is set (e.g. have instrument, sample and pattern contexts and then use overlapping + // flags for them) + + HINT_MAXHINTFLAG = HINT_SEQNAMES +}; +DECLARE_FLAGSET(HintType) + + +struct UpdateHint +{ +protected: + uint32_t data; + + template<int v> + static int PowerOf2Exponent() + { + if(v <= 1) return 0; + else return 1 + PowerOf2Exponent<v / 2>(); + } + + void Set(HintType type, uint16_t item = 0) + { + data = type | item << PowerOf2Exponent<HINT_MAXHINTFLAG>(); + } + +public: + UpdateHint(HintType type, uint16_t item = 0) + { + Set(type, item); + } + + explicit UpdateHint(LPARAM data) : data(static_cast<uint32_t>(data)) { } + + HintType GetType() const { return static_cast<HintType>(data & (HINT_MAXHINTFLAG | (HINT_MAXHINTFLAG - 1))); } + uint16_t GetData() const { return static_cast<uint16_t>(data >> PowerOf2Exponent<HINT_MAXHINTFLAG>()); } + + LPARAM AsLPARAM() const { return data; } +}; + +static_assert(sizeof(UpdateHint) <= sizeof(LPARAM), "Update hints are currently tunnelled through LPARAMs in MFC"); + +struct SampleHint : public UpdateHint +{ + SampleHint(HintType type, SAMPLEINDEX item) : UpdateHint(type, item) { } +}; + +struct InstrumentHint : public UpdateHint +{ + InstrumentHint(HintType type, INSTRUMENTINDEX item) : UpdateHint(type, item) { } +}; + +struct PatternHint : public UpdateHint +{ + PatternHint(HintType type, PATTERNINDEX item) : UpdateHint(type, item) { } +}; + +struct RowHint : public UpdateHint +{ + RowHint(HintType type, ROWINDEX item) : UpdateHint(type, static_cast<uint16_t>(item)) { } +}; + +struct SequenceHint : public UpdateHint +{ + SequenceHint(HintType type, SEQUENCEINDEX item) : UpdateHint(type, item) { } +}; + +struct ChannelTabHint : public UpdateHint +{ + ChannelTabHint(HintType type, int item) : UpdateHint(type, static_cast<uint16_t>(item)) { } +}; Property changes on: trunk/OpenMPT/mptrack/UpdateHints.h ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-chdr \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2014-12-02 22:33:39 UTC (rev 4626) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2014-12-02 23:07:06 UTC (rev 4627) @@ -281,8 +281,9 @@ void CViewGlobals::OnUpdate(CView* pView, LPARAM lHint, CObject*pHint) //-------------------------------------------------------------------- { - if ((HintFlagPart(lHint) == HINT_MODCHANNELS) && ((lHint >> HINT_SHIFT_CHNTAB) != m_nActiveTab)) return; - if (pView != this) UpdateView(lHint, pHint); + UpdateHint hint(lHint); + if (hint.GetType() == HINT_MODCHANNELS && hint.GetData () != m_nActiveTab) return; + if (pView != this) UpdateView(hint, pHint); } @@ -297,19 +298,19 @@ } -void CViewGlobals::UpdateView(DWORD dwHintMask, CObject *) -//-------------------------------------------------------- +void CViewGlobals::UpdateView(UpdateHint hint, CObject *) +//------------------------------------------------------- { CHAR s[128]; TC_ITEM tci; CModDoc *pModDoc = GetDocument(); - CSoundFile *pSndFile; int nTabCount, nTabIndex; if (!pModDoc) return; - if (!(dwHintMask & (HINT_MODTYPE|HINT_MODCHANNELS|HINT_MIXPLUGINS))) return; - pSndFile = pModDoc->GetSoundFile(); - nTabCount = (pSndFile->m_nChannels + 3) / 4; + CSoundFile &sndFile = pModDoc->GetrSoundFile(); + HintType hintType = hint.GetType(); + if (!(hintType & (HINT_MODTYPE|HINT_MODCHANNELS|HINT_MIXPLUGINS))) return; + nTabCount = (sndFile.m_nChannels + 3) / 4; if (nTabCount != m_TabCtrl.GetItemCount()) { UINT nOldSel = m_TabCtrl.GetCurSel(); @@ -334,14 +335,14 @@ } nTabIndex = m_TabCtrl.GetCurSel(); if ((nTabIndex < 0) || (nTabIndex >= nTabCount)) return; // ??? - if ((m_nActiveTab != nTabIndex) || (dwHintMask & (HINT_MODTYPE|HINT_MODCHANNELS))) + if ((m_nActiveTab != nTabIndex) || (hintType & (HINT_MODTYPE|HINT_MODCHANNELS))) { LockControls(); m_nActiveTab = static_cast<CHANNELINDEX>(nTabIndex); for (int ichn=0; ichn<4; ichn++) { const UINT nChn = nTabIndex*4+ichn; - const BOOL bEnable = (nChn < pSndFile->GetNumChannels()) ? TRUE : FALSE; + const BOOL bEnable = (nChn < sndFile.GetNumChannels()) ? TRUE : FALSE; if(nChn < MAX_BASECHANNELS) { // Text @@ -349,20 +350,20 @@ if (bEnable) wsprintf(s, "Channel %d", nChn+1); SetDlgItemText(IDC_TEXT1 + ichn, s); // Mute - CheckDlgButton(IDC_CHECK1 + ichn * 2, pSndFile->ChnSettings[nChn].dwFlags[CHN_MUTE] ? TRUE : FALSE); + CheckDlgButton(IDC_CHECK1 + ichn * 2, sndFile.ChnSettings[nChn].dwFlags[CHN_MUTE] ? TRUE : FALSE); // Surround - CheckDlgButton(IDC_CHECK2 + ichn * 2, pSndFile->ChnSettings[nChn].dwFlags[CHN_SURROUND] ? TRUE : FALSE); + CheckDlgButton(IDC_CHECK2 + ichn * 2, sndFile.ChnSettings[nChn].dwFlags[CHN_SURROUND] ? TRUE : FALSE); // Volume - int vol = pSndFile->ChnSettings[nChn].nVolume; + int vol = sndFile.ChnSettings[nChn].nVolume; m_sbVolume[ichn].SetPos(vol); SetDlgItemInt(IDC_EDIT1+ichn*2, vol); // Pan - int pan = pSndFile->ChnSettings[nChn].nPan; + int pan = sndFile.ChnSettings[nChn].nPan; m_sbPan[ichn].SetPos(pan/4); SetDlgItemInt(IDC_EDIT2+ichn*2, pan); // Channel name - memcpy(s, pSndFile->ChnSettings[nChn].szName, MAX_CHANNELNAME); + memcpy(s, sndFile.ChnSettings[nChn].szName, MAX_CHANNELNAME); s[MAX_CHANNELNAME - 1] = 0; SetDlgItemText(IDC_EDIT9 + ichn, s); ((CEdit*)(GetDlgItem(IDC_EDIT9 + ichn)))->LimitText(MAX_CHANNELNAME - 1); @@ -374,14 +375,14 @@ int fxsel = 0; for (UINT ifx=0; ifx<MAX_MIXPLUGINS; ifx++) { - if (pSndFile->m_MixPlugins[ifx].IsValidPlugin() - || (strcmp(pSndFile->m_MixPlugins[ifx].GetName(), "") - || (pSndFile->ChnSettings[nChn].nMixPlugin == ifx + 1))) + if (sndFile.m_MixPlugins[ifx].IsValidPlugin() + || (strcmp(sndFile.m_MixPlugins[ifx].GetName(), "") + || (sndFile.ChnSettings[nChn].nMixPlugin == ifx + 1))) { - wsprintf(s, "FX%d: %s", ifx + 1, pSndFile->m_MixPlugins[ifx].GetName()); + wsprintf(s, "FX%d: %s", ifx + 1, sndFile.m_MixPlugins[ifx].GetName()); int n = m_CbnEffects[ichn].AddString(s); m_CbnEffects[ichn].SetItemData(n, ifx+1); - if (pSndFile->ChnSettings[nChn].nMixPlugin == ifx+1) fxsel = n; + if (sndFile.ChnSettings[nChn].nMixPlugin == ifx+1) fxsel = n; } } m_CbnEffects[ichn].SetRedraw(TRUE); @@ -392,32 +393,32 @@ SetDlgItemText(IDC_TEXT1+ichn, ""); // Enable/Disable controls for this channel - BOOL bIT = ((bEnable) && (pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))); + BOOL bIT = ((bEnable) && (sndFile.m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))); GetDlgItem(IDC_CHECK1 + ichn * 2)->EnableWindow(bEnable); GetDlgItem(IDC_CHECK2 + ichn * 2)->EnableWindow(bIT); m_sbVolume[ichn].EnableWindow(bIT); m_spinVolume[ichn].EnableWindow(bIT); - m_sbPan[ichn].EnableWindow(bEnable && !(pSndFile->GetType() & (MOD_TYPE_XM|MOD_TYPE_MOD))); - m_spinPan[ichn].EnableWindow(bEnable && !(pS... [truncated message content] |