From: <sag...@us...> - 2011-09-04 18:02:43
|
Revision: 1018 http://modplug.svn.sourceforge.net/modplug/?rev=1018&view=rev Author: saga-games Date: 2011-09-04 18:02:35 +0000 (Sun, 04 Sep 2011) Log Message: ----------- [Ref] The refactoring frenzy doesn't stop. Added some const modifiers here and there, plus some minor stuff. Modified Paths: -------------- trunk/OpenMPT/common/Reporting.h trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_xm.cpp trunk/OpenMPT/soundlib/ModSequence.cpp trunk/OpenMPT/soundlib/ModSequence.h trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h Modified: trunk/OpenMPT/common/Reporting.h =================================================================== --- trunk/OpenMPT/common/Reporting.h 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/common/Reporting.h 2011-09-04 18:02:35 UTC (rev 1018) @@ -30,8 +30,10 @@ public: +#ifdef MODPLUG_TRACKER // TODO Quick'n'dirty workaround for MsgBox(). Shouldn't be public. static UINT CustomNotification(const char *text, const char *caption, UINT flags, const CWnd *parent) { return ShowNotification(text, caption, flags, parent); }; +#endif // MODPLUG_TRACKER // Show a simple notification static void Notification(const char *text, const CWnd *parent = nullptr); Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -384,14 +384,13 @@ { DrawLetter(x, y, noteStr[0], 7, 0); DrawLetter(x + 7, y, noteStr[1], 6, 0); - DrawLetter(x + 13, y, noteStr[2], 7, 1); } else { DrawLetter(x, y, noteStr[0], 5, 0); DrawLetter(x + 5, y, noteStr[1], 5, 0); - DrawLetter(x + 10, y, noteStr[2], 6, 0); } + DrawLetter(x + pfnt->nNoteWidth, y, noteStr[2], pfnt->nOctaveWidth, 0); } else //Original { @@ -1657,7 +1656,3 @@ ::ReleaseDC(m_hWnd, hdc); } - - - - Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -2302,24 +2302,7 @@ return FALSE; } -//rewbs.crashHandler -LRESULT CTrackApp::ProcessWndProcException(CException* e, const MSG* pMsg) -//----------------------------------------------------------------------- -{ - // TODO: Add your specialized code here and/or call the base class - Log("Unhandled Exception\n"); - Log("Attempting to close sound device\n"); - - if (CMainFrame::gpSoundDevice) { - CMainFrame::gpSoundDevice->Reset(); - CMainFrame::gpSoundDevice->Close(); - } - return CWinApp::ProcessWndProcException(e, pMsg); -} -//end rewbs.crashHandler - - /* Open or save one or multiple files using the system's file dialog * Parameter list: * - load: true: load dialog. false: save dialog. Modified: trunk/OpenMPT/mptrack/Mptrack.h =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/mptrack/Mptrack.h 2011-09-04 18:02:35 UTC (rev 1018) @@ -235,7 +235,6 @@ afx_msg void OnHelpSearch(); //}}AFX_MSG DECLARE_MESSAGE_MAP() - virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg); protected: static void LoadRegistryDLS(); Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -1491,31 +1491,36 @@ { UINT nOldPos = 0; UINT nNewPos = 0; - BOOL bAll; + bool showAll; if ((!m_pSndFile) || (m_nInstrument >= MAX_INSTRUMENTS)) return; if (m_CbnSample.GetCount() > 0) { nOldPos = m_CbnSample.GetItemData(m_CbnSample.GetCurSel()); } m_CbnSample.ResetContent(); - bAll = IsDlgButtonChecked(IDC_CHECK1); + showAll = (IsDlgButtonChecked(IDC_CHECK1) != FALSE); UINT nInsertPos; nInsertPos = m_CbnSample.AddString("0: No sample"); m_CbnSample.SetItemData(nInsertPos, 0); - for (UINT i=1; i<=m_pSndFile->m_nSamples; i++) { - BOOL bUsed = bAll; + for (UINT i=1; i<=m_pSndFile->m_nSamples; i++) + { + bool isUsed = showAll; - if (!bUsed) { - for (UINT j=0; j<NOTE_MAX; j++) { - if (KeyboardMap[j] == i) { - bUsed = TRUE; + if (!isUsed) + { + for (UINT j=0; j<NOTE_MAX; j++) + { + if (KeyboardMap[j] == i) + { + isUsed = true; break; } } } - if (bUsed) { + if (isUsed) + { CString sampleName; sampleName.Format("%d: %s", i, m_pSndFile->GetSampleName(i)); nInsertPos = m_CbnSample.AddString(sampleName); Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -1730,7 +1730,7 @@ { UINT len = 0; BYTE buf[8 * MAX_BASECHANNELS]; - MODCOMMAND *m = Patterns[npat].GetRow(row); + const MODCOMMAND *m = Patterns[npat].GetRow(row); for (UINT ch = 0; ch < specs.channelsMax; ch++, m++) { @@ -1888,28 +1888,28 @@ // Writing Sample Data for (UINT nsmp=1; nsmp<=header.smpnum; nsmp++) { - MODSAMPLE *psmp = &Samples[nsmp]; + const MODSAMPLE &sample = Samples[nsmp]; MemsetZero(itss); - memcpy(itss.filename, psmp->filename, 12); + memcpy(itss.filename, sample.filename, 12); memcpy(itss.name, m_szNames[nsmp], 26); StringFixer::SetNullTerminator(itss.name); itss.id = LittleEndian(IT_IMPS); - itss.gvl = (BYTE)psmp->nGlobalVol; + itss.gvl = (BYTE)sample.nGlobalVol; UINT flags = RS_PCM8S; - if(psmp->nLength && psmp->pSample) + if(sample.nLength && sample.pSample) { itss.flags = 0x01; - if (psmp->uFlags & CHN_LOOP) itss.flags |= 0x10; - if (psmp->uFlags & CHN_SUSTAINLOOP) itss.flags |= 0x20; - if (psmp->uFlags & CHN_PINGPONGLOOP) itss.flags |= 0x40; - if (psmp->uFlags & CHN_PINGPONGSUSTAIN) itss.flags |= 0x80; + if (sample.uFlags & CHN_LOOP) itss.flags |= 0x10; + if (sample.uFlags & CHN_SUSTAINLOOP) itss.flags |= 0x20; + if (sample.uFlags & CHN_PINGPONGLOOP) itss.flags |= 0x40; + if (sample.uFlags & CHN_PINGPONGSUSTAIN) itss.flags |= 0x80; #ifndef NO_PACKING if (nPacking && !compatExport) { - if ((!(psmp->uFlags & (CHN_16BIT|CHN_STEREO))) - && (CanPackSample(psmp->pSample, psmp->nLength, nPacking))) + if ((!(sample.uFlags & (CHN_16BIT|CHN_STEREO))) + && (CanPackSample(sample.pSample, sample.nLength, nPacking))) { flags = RS_ADPCM4; itss.cvt = 0xFF; @@ -1917,15 +1917,15 @@ } else #endif // NO_PACKING { - if (psmp->uFlags & CHN_STEREO) + if (sample.uFlags & CHN_STEREO) { flags = RS_STPCM8S; itss.flags |= 0x04; } - if (psmp->uFlags & CHN_16BIT) + if (sample.uFlags & CHN_16BIT) { itss.flags |= 0x02; - flags = (psmp->uFlags & CHN_STEREO) ? RS_STPCM16S : RS_PCM16S; + flags = (sample.uFlags & CHN_STEREO) ? RS_STPCM16S : RS_PCM16S; } } itss.cvt = 0x01; @@ -1935,35 +1935,35 @@ itss.flags = 0x00; } - itss.C5Speed = psmp->nC5Speed; + itss.C5Speed = sample.nC5Speed; if (!itss.C5Speed) itss.C5Speed = 8363; - itss.length = psmp->nLength; - itss.loopbegin = psmp->nLoopStart; - itss.loopend = psmp->nLoopEnd; - itss.susloopbegin = psmp->nSustainStart; - itss.susloopend = psmp->nSustainEnd; - itss.vol = psmp->nVolume >> 2; - itss.dfp = psmp->nPan >> 2; - itss.vit = autovibxm2it[psmp->nVibType & 7]; - itss.vis = min(psmp->nVibRate, 64); - itss.vid = min(psmp->nVibDepth, 32); - itss.vir = min(psmp->nVibSweep, 255); //(psmp->nVibSweep < 64) ? psmp->nVibSweep * 4 : 255; - if (psmp->uFlags & CHN_PANNING) itss.dfp |= 0x80; + itss.length = sample.nLength; + itss.loopbegin = sample.nLoopStart; + itss.loopend = sample.nLoopEnd; + itss.susloopbegin = sample.nSustainStart; + itss.susloopend = sample.nSustainEnd; + itss.vol = sample.nVolume >> 2; + itss.dfp = sample.nPan >> 2; + itss.vit = autovibxm2it[sample.nVibType & 7]; + itss.vis = min(sample.nVibRate, 64); + itss.vid = min(sample.nVibDepth, 32); + itss.vir = min(sample.nVibSweep, 255); //(sample.nVibSweep < 64) ? sample.nVibSweep * 4 : 255; + if (sample.uFlags & CHN_PANNING) itss.dfp |= 0x80; itss.samplepointer = dwPos; fseek(f, smppos[nsmp-1], SEEK_SET); fwrite(&itss, 1, sizeof(ITSAMPLESTRUCT), f); fseek(f, dwPos, SEEK_SET); - if ((psmp->pSample) && (psmp->nLength)) + if ((sample.pSample) && (sample.nLength)) { - dwPos += WriteSample(f, psmp, flags); + dwPos += WriteSample(f, &sample, flags); } } //Save hacked-on extra info if(!compatExport) { - SaveExtendedInstrumentProperties(Instruments, header.insnum, f); + SaveExtendedInstrumentProperties(header.insnum, f); SaveExtendedSongProperties(f); } @@ -2439,13 +2439,13 @@ } -void CSoundFile::SaveExtendedInstrumentProperties(MODINSTRUMENT *instruments[], UINT nInstruments, FILE* f) -//------------------------------------------------------------------------------------------------------------ // Used only when saving IT, XM and MPTM. // ITI, ITP saves using Ericus' macros etc... // The reason is that ITs and XMs save [code][size][ins1.Value][ins2.Value]... // whereas ITP saves [code][size][ins1.Value][code][size][ins2.Value]... // too late to turn back.... +void CSoundFile::SaveExtendedInstrumentProperties(UINT nInstruments, FILE* f) const +//--------------------------------------------------------------------------------- { __int32 code=0; @@ -2459,24 +2459,24 @@ if (nInstruments == 0) return; - WriteInstrumentPropertyForAllInstruments('VR..', sizeof(m_defaultInstrument.nVolRamp), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('MiP.', sizeof(m_defaultInstrument.nMixPlug), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('MC..', sizeof(m_defaultInstrument.nMidiChannel),f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('MP..', sizeof(m_defaultInstrument.nMidiProgram),f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('MB..', sizeof(m_defaultInstrument.wMidiBank), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('P...', sizeof(m_defaultInstrument.nPan), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('GV..', sizeof(m_defaultInstrument.nGlobalVol), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('FO..', sizeof(m_defaultInstrument.nFadeOut), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('R...', sizeof(m_defaultInstrument.nResampling), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('CS..', sizeof(m_defaultInstrument.nCutSwing), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('RS..', sizeof(m_defaultInstrument.nResSwing), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('FM..', sizeof(m_defaultInstrument.nFilterMode), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PERN', sizeof(m_defaultInstrument.PitchEnv.nReleaseNode ), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('AERN', sizeof(m_defaultInstrument.PanEnv.nReleaseNode), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('VERN', sizeof(m_defaultInstrument.VolEnv.nReleaseNode), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PTTL', sizeof(m_defaultInstrument.wPitchToTempoLock), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PVEH', sizeof(m_defaultInstrument.nPluginVelocityHandling), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PVOH', sizeof(m_defaultInstrument.nPluginVolumeHandling), f, instruments, nInstruments); + WriteInstrumentPropertyForAllInstruments('VR..', sizeof(m_defaultInstrument.nVolRamp), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('MiP.', sizeof(m_defaultInstrument.nMixPlug), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('MC..', sizeof(m_defaultInstrument.nMidiChannel),f, nInstruments); + WriteInstrumentPropertyForAllInstruments('MP..', sizeof(m_defaultInstrument.nMidiProgram),f, nInstruments); + WriteInstrumentPropertyForAllInstruments('MB..', sizeof(m_defaultInstrument.wMidiBank), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('P...', sizeof(m_defaultInstrument.nPan), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('GV..', sizeof(m_defaultInstrument.nGlobalVol), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('FO..', sizeof(m_defaultInstrument.nFadeOut), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('R...', sizeof(m_defaultInstrument.nResampling), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('CS..', sizeof(m_defaultInstrument.nCutSwing), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('RS..', sizeof(m_defaultInstrument.nResSwing), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('FM..', sizeof(m_defaultInstrument.nFilterMode), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PERN', sizeof(m_defaultInstrument.PitchEnv.nReleaseNode ), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('AERN', sizeof(m_defaultInstrument.PanEnv.nReleaseNode), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('VERN', sizeof(m_defaultInstrument.VolEnv.nReleaseNode), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PTTL', sizeof(m_defaultInstrument.wPitchToTempoLock), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PVEH', sizeof(m_defaultInstrument.nPluginVelocityHandling), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PVOH', sizeof(m_defaultInstrument.nPluginVolumeHandling), f, nInstruments); if(m_nType & MOD_TYPE_MPT) { @@ -2490,34 +2490,34 @@ // write full envelope information for MPTM files (more env points) if(maxNodes > 25) { - WriteInstrumentPropertyForAllInstruments('VE..', sizeof(m_defaultInstrument.VolEnv.nNodes), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('VP[.', sizeof(m_defaultInstrument.VolEnv.Ticks ), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('VE[.', sizeof(m_defaultInstrument.VolEnv.Values), f, instruments, nInstruments); + WriteInstrumentPropertyForAllInstruments('VE..', sizeof(m_defaultInstrument.VolEnv.nNodes), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('VP[.', sizeof(m_defaultInstrument.VolEnv.Ticks ), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('VE[.', sizeof(m_defaultInstrument.VolEnv.Values), f, nInstruments); - WriteInstrumentPropertyForAllInstruments('PE..', sizeof(m_defaultInstrument.PanEnv.nNodes), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PP[.', sizeof(m_defaultInstrument.PanEnv.Ticks), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PE[.', sizeof(m_defaultInstrument.PanEnv.Values), f, instruments, nInstruments); + WriteInstrumentPropertyForAllInstruments('PE..', sizeof(m_defaultInstrument.PanEnv.nNodes), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PP[.', sizeof(m_defaultInstrument.PanEnv.Ticks), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PE[.', sizeof(m_defaultInstrument.PanEnv.Values), f, nInstruments); - WriteInstrumentPropertyForAllInstruments('PiE.', sizeof(m_defaultInstrument.PitchEnv.nNodes), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PiP[', sizeof(m_defaultInstrument.PitchEnv.Ticks), f, instruments, nInstruments); - WriteInstrumentPropertyForAllInstruments('PiE[', sizeof(m_defaultInstrument.PitchEnv.Values), f, instruments, nInstruments); + WriteInstrumentPropertyForAllInstruments('PiE.', sizeof(m_defaultInstrument.PitchEnv.nNodes), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PiP[', sizeof(m_defaultInstrument.PitchEnv.Ticks), f, nInstruments); + WriteInstrumentPropertyForAllInstruments('PiE[', sizeof(m_defaultInstrument.PitchEnv.Values), f, nInstruments); } } return; } -void CSoundFile::WriteInstrumentPropertyForAllInstruments(__int32 code, __int16 size, FILE* f, MODINSTRUMENT *instruments[], UINT nInstruments) -//--------------------------------------------------------------------------------------------------------------------------------------------- +void CSoundFile::WriteInstrumentPropertyForAllInstruments(__int32 code, __int16 size, FILE* f, UINT nInstruments) const +//--------------------------------------------------------------------------------------------------------------------- { fwrite(&code, 1, sizeof(__int32), f); //write code fwrite(&size, 1, sizeof(__int16), f); //write size for(UINT nins=1; nins<=nInstruments; nins++) //for all instruments... { BYTE* pField; - if (instruments[nins]) + if (Instruments[nins]) { - pField = GetInstrumentHeaderFieldPointer(instruments[nins], code, size); //get ptr to field + pField = GetInstrumentHeaderFieldPointer(Instruments[nins], code, size); //get ptr to field } else { pField = GetInstrumentHeaderFieldPointer(&m_defaultInstrument, code, size); //get ptr to field @@ -2526,8 +2526,8 @@ } } -void CSoundFile::SaveExtendedSongProperties(FILE* f) -//-------------------------------------------------- +void CSoundFile::SaveExtendedSongProperties(FILE* f) const +//-------------------------------------------------------- { //Extra song data - Yet Another Hack. __int16 size; Modified: trunk/OpenMPT/soundlib/Load_xm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_xm.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/soundlib/Load_xm.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -936,7 +936,6 @@ // Writing instruments for (i = 1; i <= xmheader.instruments; i++) { - MODSAMPLE *pSmp; WORD smptable[32]; BYTE flags[32]; @@ -1010,11 +1009,11 @@ fwrite(&xmih, 1, sizeof(xmih), f); if (smptable[0]) { - MODSAMPLE *pvib = &Samples[smptable[0]]; - xmsh.vibtype = pvib->nVibType; - xmsh.vibsweep = min(pvib->nVibSweep, 0xFF); - xmsh.vibdepth = min(pvib->nVibDepth, 0x0F); - xmsh.vibrate = min(pvib->nVibRate, 0x3F); + const MODSAMPLE &sample = Samples[smptable[0]]; + xmsh.vibtype = sample.nVibType; + xmsh.vibsweep = min(sample.nVibSweep, 0xFF); + xmsh.vibdepth = min(sample.nVibDepth, 0x0F); + xmsh.vibrate = min(sample.nVibRate, 0x3F); } WORD samples = xmih.samples; xmih.samples = LittleEndianW(xmih.samples); @@ -1024,20 +1023,20 @@ { MemsetZero(xmss); if (smptable[ins]) memcpy(xmss.name, m_szNames[smptable[ins]], 22); - pSmp = &Samples[smptable[ins]]; - xmss.samplen = pSmp->nLength; - xmss.loopstart = pSmp->nLoopStart; - xmss.looplen = pSmp->nLoopEnd - pSmp->nLoopStart; - xmss.vol = pSmp->nVolume / 4; - xmss.finetune = (char)pSmp->nFineTune; + const MODSAMPLE &sample = Samples[smptable[ins]]; + xmss.samplen = sample.nLength; + xmss.loopstart = sample.nLoopStart; + xmss.looplen = sample.nLoopEnd - sample.nLoopStart; + xmss.vol = sample.nVolume / 4; + xmss.finetune = (char)sample.nFineTune; xmss.type = 0; - if (pSmp->uFlags & CHN_LOOP) xmss.type = (pSmp->uFlags & CHN_PINGPONGLOOP) ? 2 : 1; + if (sample.uFlags & CHN_LOOP) xmss.type = (sample.uFlags & CHN_PINGPONGLOOP) ? 2 : 1; flags[ins] = RS_PCM8D; #ifndef NO_PACKING - if (nPacking) + if (nPacking && !bCompatibilityExport) { - if ((!(pSmp->uFlags & (CHN_16BIT|CHN_STEREO))) - && (CanPackSample(pSmp->pSample, pSmp->nLength, nPacking))) + if ((!(sample.uFlags & (CHN_16BIT|CHN_STEREO))) + && (CanPackSample(sample.pSample, sample.nLength, nPacking))) { flags[ins] = RS_ADPCM4; xmss.res = 0xAD; @@ -1045,7 +1044,7 @@ } else #endif { - if (pSmp->uFlags & CHN_16BIT) + if (sample.uFlags & CHN_16BIT) { flags[ins] = RS_PCM16D; xmss.type |= 0x10; @@ -1053,9 +1052,9 @@ xmss.loopstart *= 2; xmss.samplen *= 2; } - if (pSmp->uFlags & CHN_STEREO && !bCompatibilityExport) + if (sample.uFlags & CHN_STEREO && !bCompatibilityExport) { - flags[ins] = (pSmp->uFlags & CHN_16BIT) ? RS_STPCM16D : RS_STPCM8D; + flags[ins] = (sample.uFlags & CHN_16BIT) ? RS_STPCM16D : RS_STPCM8D; xmss.type |= 0x20; xmss.looplen *= 2; xmss.loopstart *= 2; @@ -1063,8 +1062,8 @@ } } xmss.pan = 255; - if (pSmp->nPan < 256) xmss.pan = (BYTE)pSmp->nPan; - xmss.relnote = (signed char)pSmp->RelativeTone; + if (sample.nPan < 256) xmss.pan = (BYTE)sample.nPan; + xmss.relnote = (signed char)sample.RelativeTone; xmss.samplen = LittleEndianW(xmss.samplen); xmss.loopstart = LittleEndianW(xmss.loopstart); xmss.looplen = LittleEndianW(xmss.looplen); @@ -1072,13 +1071,13 @@ } for (UINT ismpd=0; ismpd<xmih.samples; ismpd++) { - pSmp = &Samples[smptable[ismpd]]; - if (pSmp->pSample) + const MODSAMPLE &sample = Samples[smptable[ismpd]]; + if (sample.pSample) { #ifndef NO_PACKING - if ((flags[ismpd] == RS_ADPCM4) && (xmih.samples>1)) CanPackSample(pSmp->pSample, pSmp->nLength, nPacking); + if ((flags[ismpd] == RS_ADPCM4) && (xmih.samples > 1)) CanPackSample(sample.pSample, sample.nLength, nPacking); #endif // NO_PACKING - WriteSample(f, pSmp, flags[ismpd]); + WriteSample(f, &sample, flags[ismpd]); } } } @@ -1143,7 +1142,7 @@ //Save hacked-on extra info SaveMixPlugins(f); - SaveExtendedInstrumentProperties(Instruments, xmheader.instruments, f); + SaveExtendedInstrumentProperties(xmheader.instruments, f); SaveExtendedSongProperties(f); } Modified: trunk/OpenMPT/soundlib/ModSequence.cpp =================================================================== --- trunk/OpenMPT/soundlib/ModSequence.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/soundlib/ModSequence.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -590,28 +590,35 @@ } -size_t ModSequence::WriteToByteArray(BYTE* dest, const UINT numOfBytes, const UINT destSize) -//----------------------------------------------------------------------------- +size_t ModSequence::WriteToByteArray(BYTE* dest, const UINT numOfBytes, const UINT destSize) const +//------------------------------------------------------------------------------------------------ { if(numOfBytes > destSize || numOfBytes > MAX_ORDERS) return true; - if(GetLength() < numOfBytes) resize(ORDERINDEX(numOfBytes), 0xFF); - UINT i = 0; - for(i = 0; i<numOfBytes; i++) + + const size_t limit = min(numOfBytes, GetLength()); + + size_t i = 0; + for(i = 0; i < limit; i++) { dest[i] = static_cast<BYTE>((*this)[i]); } + // Fill non-existing order items with stop indices + for(i = limit; i < numOfBytes; i++) + { + dest[i] = 0xFF; + } return i; //Returns the number of bytes written. } -size_t ModSequence::WriteAsByte(FILE* f, const uint16 count) -//---------------------------------------------------------- +size_t ModSequence::WriteAsByte(FILE* f, const uint16 count) const +//---------------------------------------------------------------- { - if(GetLength() < count) resize(count); + const size_t limit = min(count, GetLength()); size_t i = 0; - for(i = 0; i<count; i++) + for(i = 0; i < limit; i++) { const PATTERNINDEX pat = (*this)[i]; BYTE temp = static_cast<BYTE>((*this)[i]); @@ -623,6 +630,12 @@ } fwrite(&temp, 1, 1, f); } + // Fill non-existing order items with stop indices + for(i = limit; i < count; i++) + { + BYTE temp = 0xFF; + fwrite(&temp, 1, 1, f); + } return i; //Returns the number of bytes written. } Modified: trunk/OpenMPT/soundlib/ModSequence.h =================================================================== --- trunk/OpenMPT/soundlib/ModSequence.h 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/soundlib/ModSequence.h 2011-09-04 18:02:35 UTC (rev 1018) @@ -82,8 +82,8 @@ ModSequence& operator=(const ModSequence& seq); // Read/write. - size_t WriteAsByte(FILE* f, const uint16 count); - size_t WriteToByteArray(BYTE* dest, const UINT numOfBytes, const UINT destSize); + size_t WriteAsByte(FILE* f, const uint16 count) const; + size_t WriteToByteArray(BYTE* dest, const UINT numOfBytes, const UINT destSize) const; bool ReadAsByte(const BYTE* pFrom, const int howMany, const int memLength); // Deprecated function used for MPTm's created in 1.17.02.46 - 1.17.02.48. Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2011-09-04 18:02:35 UTC (rev 1018) @@ -359,7 +359,7 @@ break; // Return a pointer on the wanted field in 'input' MODINSTRUMENT given field code & size -BYTE * GetInstrumentHeaderFieldPointer(MODINSTRUMENT * input, __int32 fcode, __int16 fsize) +BYTE * GetInstrumentHeaderFieldPointer(const MODINSTRUMENT * input, __int32 fcode, __int16 fsize) { if(input == NULL) return NULL; BYTE * pointer = NULL; @@ -1305,21 +1305,24 @@ //m_nSeqOverride = 0; } -ORDERINDEX CSoundFile::FindOrder(PATTERNINDEX nPat, UINT startFromOrder, bool direction) -//-------------------------------------------------------------------------------------- +ORDERINDEX CSoundFile::FindOrder(PATTERNINDEX nPat, ORDERINDEX startFromOrder, bool direction) +//-------------------------------------------------------------------------------------------- { + const ORDERINDEX maxOrder = Order.GetLength(); ORDERINDEX foundAtOrder = ORDERINDEX_INVALID; ORDERINDEX candidateOrder = 0; - for (ORDERINDEX p = 0; p < Order.size(); p++) + for (ORDERINDEX p = 0; p < maxOrder; p++) { if (direction) { - candidateOrder = (startFromOrder + p) % Order.size(); //wrap around MAX_ORDERS - } else { - candidateOrder = (startFromOrder - p + Order.size()) % Order.size(); //wrap around 0 and MAX_ORDERS + candidateOrder = (startFromOrder + p) % maxOrder; //wrap around MAX_ORDERS + } else + { + candidateOrder = (startFromOrder - p + maxOrder) % maxOrder; //wrap around 0 and MAX_ORDERS } - if (Order[candidateOrder] == nPat) { + if (Order[candidateOrder] == nPat) + { foundAtOrder = candidateOrder; break; } @@ -1370,9 +1373,12 @@ LPCTSTR CSoundFile::GetSampleName(UINT nSample) const //--------------------------------------------------- { - if (nSample<MAX_SAMPLES) { + ASSERT(nSample <= GetNumSamples()); + if (nSample < MAX_SAMPLES) + { return m_szNames[nSample]; - } else { + } else + { return gszEmpty; } } @@ -1384,6 +1390,7 @@ if ((nInstr >= MAX_INSTRUMENTS) || (!Instruments[nInstr])) return TEXT(""); + ASSERT(nInstr <= GetNumInstruments()); const size_t nSize = ARRAYELEMCOUNT(Instruments[nInstr]->name); CString str; LPTSTR p = str.GetBuffer(nSize + 1); @@ -1556,8 +1563,8 @@ #ifndef MODPLUG_NO_FILESAVE -UINT CSoundFile::WriteSample(FILE *f, MODSAMPLE *pSmp, UINT nFlags, UINT nMaxLen) -//------------------------------------------------------------------------------- +UINT CSoundFile::WriteSample(FILE *f, const MODSAMPLE *pSmp, UINT nFlags, UINT nMaxLen) const +//------------------------------------------------------------------------------------------- { UINT len = 0, bufcount; char buffer[4096]; Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2011-09-04 15:19:40 UTC (rev 1017) +++ trunk/OpenMPT/soundlib/Sndfile.h 2011-09-04 18:02:35 UTC (rev 1018) @@ -163,7 +163,7 @@ // MODULAR MODINSTRUMENT FIELD ACCESS : body content at the (near) top of Sndfile.cpp !!! // ----------------------------------------------------------------------------------------- extern void WriteInstrumentHeaderStruct(MODINSTRUMENT * input, FILE * file); -extern BYTE * GetInstrumentHeaderFieldPointer(MODINSTRUMENT * input, __int32 fcode, __int16 fsize); +extern BYTE * GetInstrumentHeaderFieldPointer(const MODINSTRUMENT * input, __int32 fcode, __int16 fsize); // -! NEW_FEATURE#0027 @@ -721,7 +721,7 @@ static const CModSpecifications& GetModSpecifications(const MODTYPE type); double GetCurrentBPM() const; - ORDERINDEX FindOrder(PATTERNINDEX nPat, UINT startFromOrder=0, bool direction = true); //rewbs.playSongFromCursor + ORDERINDEX FindOrder(PATTERNINDEX nPat, ORDERINDEX startFromOrder = 0, bool direction = true); //rewbs.playSongFromCursor void DontLoopPattern(PATTERNINDEX nPat, ROWINDEX nRow = 0); //rewbs.playSongFromCursor void SetCurrentPos(UINT nPos); void SetCurrentOrder(ORDERINDEX nOrder); @@ -789,16 +789,16 @@ // Save Functions #ifndef MODPLUG_NO_FILESAVE - UINT WriteSample(FILE *f, MODSAMPLE *pSmp, UINT nFlags, UINT nMaxLen=0); + UINT WriteSample(FILE *f, const MODSAMPLE *pSmp, UINT nFlags, UINT nMaxLen=0) const; bool SaveXM(LPCSTR lpszFileName, UINT nPacking=0, const bool bCompatibilityExport = false); bool SaveS3M(LPCSTR lpszFileName, UINT nPacking=0); bool SaveMod(LPCSTR lpszFileName, UINT nPacking=0, const bool bCompatibilityExport = false); bool SaveIT(LPCSTR lpszFileName, UINT nPacking=0, const bool compatExport = false); bool SaveITProject(LPCSTR lpszFileName); // -> CODE#0023 -> DESC="IT project files (.itp)" -! NEW_FEATURE#0023 UINT SaveMixPlugins(FILE *f=NULL, BOOL bUpdate=TRUE); - void WriteInstrumentPropertyForAllInstruments(__int32 code, __int16 size, FILE* f, MODINSTRUMENT* instruments[], UINT nInstruments); - void SaveExtendedInstrumentProperties(MODINSTRUMENT *instruments[], UINT nInstruments, FILE* f); - void SaveExtendedSongProperties(FILE* f); + void WriteInstrumentPropertyForAllInstruments(__int32 code, __int16 size, FILE* f, UINT nInstruments) const; + void SaveExtendedInstrumentProperties(UINT nInstruments, FILE* f) const; + void SaveExtendedSongProperties(FILE* f) const; void LoadExtendedSongProperties(const MODTYPE modtype, LPCBYTE ptr, const LPCBYTE startpos, const size_t seachlimit, bool* pInterpretMptMade = nullptr); #endif // MODPLUG_NO_FILESAVE This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |