From: <sag...@us...> - 2012-09-28 15:36:40
|
Revision: 1366 http://modplug.svn.sourceforge.net/modplug/?rev=1366&view=rev Author: saga-games Date: 2012-09-28 15:36:28 +0000 (Fri, 28 Sep 2012) Log Message: ----------- [Fix] Scroll wheel should now also work correctly on spin buttons in sample tab [Fix] WAV Export / Mass sample export file names were sometimes not sanitized correctly (http://bugs.openmpt.org/view.php?id=300). Modified Paths: -------------- trunk/OpenMPT/common/misc_util.h trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/common/misc_util.h =================================================================== --- trunk/OpenMPT/common/misc_util.h 2012-09-28 14:08:40 UTC (rev 1365) +++ trunk/OpenMPT/common/misc_util.h 2012-09-28 15:36:28 UTC (rev 1366) @@ -165,11 +165,7 @@ buffer[i] == '>' || buffer[i] == '*') { - for(size_t j = i + 1; j < size; j++) - { - buffer[j - 1] = buffer[j]; - } - buffer[size - 1] = 0; + buffer[i] = '_'; } } } Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2012-09-28 14:08:40 UTC (rev 1365) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2012-09-28 15:36:28 UTC (rev 1366) @@ -2810,7 +2810,7 @@ ModSample &sample = m_pSndFile->GetSample(m_nSample); LPSTR pSample = sample.pSample; short int pos; - bool bRedraw = false; + bool redraw = false; LockControls(); if ((!sample.nLength) || (!pSample)) goto NoSample; @@ -2860,7 +2860,7 @@ wsprintf(s, "%u", sample.nLoopStart); m_EditLoopStart.SetWindowText(s); m_pModDoc->AdjustEndOfSample(m_nSample); - bRedraw = true; + redraw = true; } m_SpinLoopStart.SetPos(0); } @@ -2904,7 +2904,7 @@ wsprintf(s, "%u", sample.nLoopEnd); m_EditLoopEnd.SetWindowText(s); m_pModDoc->AdjustEndOfSample(m_nSample); - bRedraw = true; + redraw = true; } m_SpinLoopEnd.SetPos(0); } @@ -2948,7 +2948,7 @@ { wsprintf(s, "%u", sample.nSustainStart); m_EditSustainStart.SetWindowText(s); - bRedraw = true; + redraw = true; } m_SpinSustainStart.SetPos(0); } @@ -2991,7 +2991,7 @@ { wsprintf(s, "%u", sample.nSustainEnd); m_EditSustainEnd.SetWindowText(s); - bRedraw = true; + redraw = true; } m_SpinSustainEnd.SetPos(0); } @@ -3030,11 +3030,11 @@ } SetDlgItemInt(IDC_EDIT5, ftune, TRUE); } - bRedraw = true; + redraw = true; m_SpinFineTune.SetPos(0); } - if ((nCode == SB_ENDSCROLL) || (nCode == SB_THUMBPOSITION)) SwitchToView(); - if (bRedraw) + if(nCode == SB_ENDSCROLL) SwitchToView(); + if(redraw) { m_pModDoc->UpdateAllViews(NULL, (m_nSample << HINT_SHIFT_SMP) | HINT_SAMPLEDATA, this); m_pModDoc->SetModified(); Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2012-09-28 14:08:40 UTC (rev 1365) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2012-09-28 15:36:28 UTC (rev 1366) @@ -1543,15 +1543,16 @@ // will set default dir here because there's no setup option for export dir yet (feel free to add one...) CMainFrame::GetSettings().SetDefaultDirectory(files.workingDirectory.c_str(), DIR_EXPORT, true); - TCHAR sFilename[_MAX_PATH]; - strcpy(sFilename, files.first_file.c_str()); + CString fileName, fileExt; + { + char drive[_MAX_DRIVE], dir[_MAX_DIR], name[_MAX_FNAME], ext[_MAX_EXT]; + _splitpath(files.first_file.c_str(), drive, dir, name, ext); + fileName = CString(drive) + CString(dir) + CString(name); + fileExt = CString(ext); + } // Saving as wave file - // Keep position of the character just before ".wav" in path string - size_t p = strlen(sFilename) - 4; - TCHAR sFilenameAdd[_MAX_PATH] = _T(""); - int nRenderPasses = 1; // Channel mode vector<bool> usedChannels; @@ -1601,19 +1602,14 @@ } } - CDoWaveConvert dwcdlg(&m_SndFile, sFilename, &wsdlg.WaveFormat.Format, wsdlg.m_bNormalize, pMainFrm); - dwcdlg.m_dwFileLimit = static_cast<DWORD>(wsdlg.m_dwFileLimit); - dwcdlg.m_bGivePlugsIdleTime = wsdlg.m_bGivePlugsIdleTime; - dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit; - dwcdlg.m_nMaxPatterns = (wsdlg.m_bSelectPlay) ? wsdlg.m_nMaxOrder - wsdlg.m_nMinOrder + 1 : 0; - //if(wsdlg.m_bHighQuality) CSoundFile::SetResamplingMode(SRCMODE_POLYPHASE); - UINT pos = m_SndFile.GetCurrentPos(); pMainFrm->PauseMod(); int oldRepeat = m_SndFile.GetRepeatCount(); for(int i = 0 ; i < nRenderPasses ; i++) { + CString thisName = fileName; + char fileNameAdd[_MAX_FNAME]; // Channel mode if(wsdlg.m_bChannelMode) @@ -1625,10 +1621,10 @@ if(usedChannels[i] == false) continue; // Add channel number & name (if available) to path string - if(strlen(m_SndFile.ChnSettings[i].szName) > 0) - wsprintf(sFilenameAdd, "-%03d_%s.wav", i + 1, m_SndFile.ChnSettings[i].szName); + if(strcmp(m_SndFile.ChnSettings[i].szName, "")) + sprintf(fileNameAdd, "-%03d_%s", i + 1, m_SndFile.ChnSettings[i].szName); else - wsprintf(sFilenameAdd, "-%03d.wav", i + 1); + sprintf(fileNameAdd, "-%03d", i + 1); // Unmute channel to process m_SndFile.ChnSettings[i].dwFlags.reset(CHN_MUTE); } @@ -1643,10 +1639,10 @@ if(m_SndFile.GetSample((SAMPLEINDEX)(i + 1)).pSample == nullptr || !m_SndFile.IsSampleUsed((SAMPLEINDEX)(i + 1))) continue; // Add sample number & name (if available) to path string - if(strlen(m_SndFile.m_szNames[i + 1]) > 0) - wsprintf(sFilenameAdd, "-%03d_%s.wav", i + 1, m_SndFile.m_szNames[i + 1]); + if(strcmp(m_SndFile.m_szNames[i + 1], "")) + sprintf(fileNameAdd, "-%03d_%s", i + 1, m_SndFile.m_szNames[i + 1]); else - wsprintf(sFilenameAdd, "-%03d.wav", i + 1); + sprintf(fileNameAdd, "-%03d", i + 1); // Unmute sample to process MuteSample((SAMPLEINDEX)(i + 1), false); } else @@ -1656,21 +1652,21 @@ if(m_SndFile.Instruments[i + 1] == nullptr || !m_SndFile.IsInstrumentUsed((INSTRUMENTINDEX)(i + 1))) continue; - if(strlen(m_SndFile.Instruments[i + 1]->name) > 0) - wsprintf(sFilenameAdd, "-%03d_%s.wav", i + 1, m_SndFile.Instruments[i + 1]->name); + if(strcmp(m_SndFile.Instruments[i + 1]->name, "")) + sprintf(fileNameAdd, "-%03d_%s", i + 1, m_SndFile.Instruments[i + 1]->name); else - wsprintf(sFilenameAdd, "-%03d.wav", i + 1); + sprintf(fileNameAdd, "-%03d", i + 1); // Unmute instrument to process MuteInstrument((INSTRUMENTINDEX)(i + 1), false); } } - if(_tcslen(sFilenameAdd) > 0) + + if(strcmp(fileNameAdd, "")) { - SanitizeFilename(sFilenameAdd); - sFilename[p] = 0; - _tcscat(sFilename, sFilenameAdd); - _tcscpy(sFilenameAdd, _T("")); + SanitizeFilename(fileNameAdd); + thisName += CString(fileNameAdd); } + thisName += fileExt; // Render song (or current channel, or current sample/instrument) m_SndFile.visitedSongRows.Initialize(true); @@ -1687,6 +1683,14 @@ { m_SndFile.SetRepeatCount(Util::Max(0, wsdlg.loopCount - 1)); } + + CDoWaveConvert dwcdlg(&m_SndFile, thisName, &wsdlg.WaveFormat.Format, wsdlg.m_bNormalize, pMainFrm); + dwcdlg.m_dwFileLimit = static_cast<DWORD>(wsdlg.m_dwFileLimit); + dwcdlg.m_bGivePlugsIdleTime = wsdlg.m_bGivePlugsIdleTime; + dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit; + dwcdlg.m_nMaxPatterns = (wsdlg.m_bSelectPlay) ? wsdlg.m_nMaxOrder - wsdlg.m_nMinOrder + 1 : 0; + //if(wsdlg.m_bHighQuality) CSoundFile::SetResamplingMode(SRCMODE_POLYPHASE); + if(dwcdlg.DoModal() != IDOK) break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |