From: <sag...@us...> - 2013-07-04 23:22:08
|
Revision: 2499 http://sourceforge.net/p/modplug/code/2499 Author: saga-games Date: 2013-07-04 23:22:02 +0000 (Thu, 04 Jul 2013) Log Message: ----------- [Mod] Pattern Clipboard Manager: Better handling of lost focus in renaming box [Mod] Don't save some superfluous extended song properties, depending on output format. [Fix] Song Length Estimation: Pattern loop duration was still off. Modified Paths: -------------- trunk/OpenMPT/mptrack/PatternClipboard.cpp trunk/OpenMPT/mptrack/PatternClipboard.h trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Snd_fx.cpp Modified: trunk/OpenMPT/mptrack/PatternClipboard.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternClipboard.cpp 2013-07-04 23:15:17 UTC (rev 2498) +++ trunk/OpenMPT/mptrack/PatternClipboard.cpp 2013-07-04 23:22:02 UTC (rev 2499) @@ -908,7 +908,7 @@ PatternClipboardDialog PatternClipboardDialog::instance; -void PatternClipboardDialog::DoDataExchange(CDataExchange* pDX) +void PatternClipboardDialog::DoDataExchange(CDataExchange *pDX) //------------------------------------------------------------- { DDX_Control(pDX, IDC_SPIN1, numClipboardsSpin); @@ -916,8 +916,8 @@ } -PatternClipboardDialog::PatternClipboardDialog() : isLocked(true), isCreated(false), posX(-1) -//------------------------------------------------------------------------------------------- +PatternClipboardDialog::PatternClipboardDialog() : isLocked(true), isCreated(false), posX(-1), editNameBox(*this) +//--------------------------------------------------------------------------------------------------------------- { } @@ -962,7 +962,7 @@ } instance.clipList.ResetContent(); PatternClipboard::clipindex_t i = 0; - for(std::deque<PatternClipboardElement>::const_iterator clip = PatternClipboard::instance.clipboards.begin(); clip != PatternClipboard::instance.clipboards.end(); clip++, i++) + for(std::vector<PatternClipboardElement>::const_iterator clip = PatternClipboard::instance.clipboards.begin(); clip != PatternClipboard::instance.clipboards.end(); clip++, i++) { const int item = instance.clipList.AddString(clip->description); instance.clipList.SetItemDataPtr(item, reinterpret_cast<void *>(i)); @@ -1083,3 +1083,23 @@ UpdateList(); } + + +BEGIN_MESSAGE_MAP(PatternClipboardDialog::CInlineEdit, CEdit) + ON_WM_KILLFOCUS() +END_MESSAGE_MAP() + + +PatternClipboardDialog::CInlineEdit::CInlineEdit(PatternClipboardDialog &dlg) : parent(dlg) +//----------------------------------------------------------------------------------------- +{ + CEdit::CEdit(); +} + + +void PatternClipboardDialog::CInlineEdit::OnKillFocus(CWnd *newWnd) +//----------------------------------------------------------------- +{ + parent.OnEndEdit(true); + CEdit::OnKillFocus(newWnd); +} Modified: trunk/OpenMPT/mptrack/PatternClipboard.h =================================================================== --- trunk/OpenMPT/mptrack/PatternClipboard.h 2013-07-04 23:15:17 UTC (rev 2498) +++ trunk/OpenMPT/mptrack/PatternClipboard.h 2013-07-04 23:22:02 UTC (rev 2499) @@ -10,7 +10,6 @@ #pragma once -#include <deque> #include "Snd_defs.h" #include "PatternCursor.h" @@ -61,7 +60,7 @@ // Active internal clipboard index clipindex_t activeClipboard; // Internal clipboard collection - std::deque<PatternClipboardElement> clipboards; + std::vector<PatternClipboardElement> clipboards; public: @@ -114,9 +113,22 @@ // The one and only pattern clipboard dialog object static PatternClipboardDialog instance; + // Edit class for clipboard name editing + class CInlineEdit : public CEdit + { + protected: + PatternClipboardDialog &parent; + public: + CInlineEdit(PatternClipboardDialog &dlg); + + DECLARE_MESSAGE_MAP(); + + afx_msg void OnKillFocus(CWnd *newWnd); + }; + CSpinButtonCtrl numClipboardsSpin; CListBox clipList; - CEdit editNameBox; + CInlineEdit editNameBox; int posX, posY; bool isLocked, isCreated; Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2013-07-04 23:15:17 UTC (rev 2498) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2013-07-04 23:22:02 UTC (rev 2499) @@ -1971,40 +1971,46 @@ //-------------------------------------------------------- { //Extra song data - Yet Another Hack. - int16 size; + uint16 size; uint32 code = MULTICHAR4_LE_MSVC('M','P','T','S'); //Extra song file data fwrite(&code, 1, sizeof(uint32), f); - code = MULTICHAR4_LE_MSVC('D','T','.','.'); //write m_nDefaultTempo field code - fwrite(&code, 1, sizeof(uint32), f); - size = sizeof(m_nDefaultTempo); //write m_nDefaultTempo field size - fwrite(&size, 1, sizeof(int16), f); - fwrite(&m_nDefaultTempo, 1, size, f); //write m_nDefaultTempo + if(m_nDefaultTempo > 255) + { + code = MULTICHAR4_LE_MSVC('D','T','.','.'); //write m_nDefaultTempo field code + fwrite(&code, 1, sizeof(uint32), f); + size = sizeof(m_nDefaultTempo); //write m_nDefaultTempo field size + fwrite(&size, 1, sizeof(uint16), f); + fwrite(&m_nDefaultTempo, 1, size, f); //write m_nDefaultTempo + } code = MULTICHAR4_LE_MSVC('R','P','B','.'); //write m_nRowsPerBeat fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_nDefaultRowsPerBeat); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_nDefaultRowsPerBeat, 1, size, f); code = MULTICHAR4_LE_MSVC('R','P','M','.'); //write m_nRowsPerMeasure fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_nDefaultRowsPerMeasure); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_nDefaultRowsPerMeasure, 1, size, f); - code = MULTICHAR4_LE_MSVC('C','.','.','.'); //write m_nChannels - fwrite(&code, 1, sizeof(uint32), f); - size = sizeof(m_nChannels); - fwrite(&size, 1, sizeof(int16), f); - fwrite(&m_nChannels, 1, size, f); + if(GetType() != MOD_TYPE_XM) + { + code = MULTICHAR4_LE_MSVC('C','.','.','.'); //write m_nChannels + fwrite(&code, 1, sizeof(uint32), f); + size = sizeof(m_nChannels); + fwrite(&size, 1, sizeof(uint16), f); + fwrite(&m_nChannels, 1, size, f); + } if(TypeIsIT_MPT() && GetNumChannels() > 64) //IT header has room only for 64 channels. Save the { //settings that do not fit to the header here as an extension. code = MULTICHAR4_LE_MSVC('C','h','n','S'); fwrite(&code, 1, sizeof(uint32), f); size = (GetNumChannels() - 64) * 2; - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); for(CHANNELINDEX chn = 64; chn < GetNumChannels(); chn++) { uint8 panvol[2]; @@ -2019,59 +2025,67 @@ code = MULTICHAR4_LE_MSVC('T','M','.','.'); //write m_nTempoMode fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_nTempoMode); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_nTempoMode, 1, size, f); code = MULTICHAR4_LE_MSVC('P','M','M','.'); //write m_nMixLevels fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_nMixLevels); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_nMixLevels, 1, size, f); - code = MULTICHAR4_LE_MSVC('C','W','V','.'); //write m_dwCreatedWithVersion - fwrite(&code, 1, sizeof(uint32), f); - size = sizeof(m_dwCreatedWithVersion); - fwrite(&size, 1, sizeof(int16), f); - fwrite(&m_dwCreatedWithVersion, 1, size, f); + if(m_dwCreatedWithVersion) + { + code = MULTICHAR4_LE_MSVC('C','W','V','.'); //write m_dwCreatedWithVersion + fwrite(&code, 1, sizeof(uint32), f); + size = sizeof(m_dwCreatedWithVersion); + fwrite(&size, 1, sizeof(uint16), f); + fwrite(&m_dwCreatedWithVersion, 1, size, f); + } code = MULTICHAR4_LE_MSVC('L','S','W','V'); //write m_dwLastSavedWithVersion fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_dwLastSavedWithVersion); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_dwLastSavedWithVersion, 1, size, f); code = MULTICHAR4_LE_MSVC('S','P','A','.'); //write m_nSamplePreAmp fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_nSamplePreAmp); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_nSamplePreAmp, 1, size, f); code = MULTICHAR4_LE_MSVC('V','S','T','V'); //write m_nVSTiVolume fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_nVSTiVolume); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_nVSTiVolume, 1, size, f); - code = MULTICHAR4_LE_MSVC('D','G','V','.'); //write m_nDefaultGlobalVolume - fwrite(&code, 1, sizeof(uint32), f); - size = sizeof(m_nDefaultGlobalVolume); - fwrite(&size, 1, sizeof(int16), f); - fwrite(&m_nDefaultGlobalVolume, 1, size, f); + if(GetType() == MOD_TYPE_XM && m_nDefaultGlobalVolume != MAX_GLOBAL_VOLUME) + { + code = MULTICHAR4_LE_MSVC('D','G','V','.'); //write m_nDefaultGlobalVolume + fwrite(&code, 1, sizeof(uint32), f); + size = sizeof(m_nDefaultGlobalVolume); + fwrite(&size, 1, sizeof(uint16), f); + fwrite(&m_nDefaultGlobalVolume, 1, size, f); + } - code = MULTICHAR4_LE_MSVC('R','P','.','.'); //write m_nRestartPos - fwrite(&code, 1, sizeof(uint32), f); - size = sizeof(m_nRestartPos); - fwrite(&size, 1, sizeof(int16), f); - fwrite(&m_nRestartPos, 1, size, f); + if(GetType() != MOD_TYPE_XM && m_nRestartPos != 0) + { + code = MULTICHAR4_LE_MSVC('R','P','.','.'); //write m_nRestartPos + fwrite(&code, 1, sizeof(uint32), f); + size = sizeof(m_nRestartPos); + fwrite(&size, 1, sizeof(uint16), f); + fwrite(&m_nRestartPos, 1, size, f); + } - //Additional flags for XM/IT/MPTM if(m_ModFlags) { code = MULTICHAR4_LE_MSVC('M','S','F','.'); fwrite(&code, 1, sizeof(uint32), f); size = sizeof(m_ModFlags); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); fwrite(&m_ModFlags, 1, size, f); } @@ -2089,7 +2103,7 @@ code = MULTICHAR4_LE_MSVC('M','I','M','A'); fwrite(&code, 1, sizeof(uint32), f); size = static_cast<int16>(objectsize); - fwrite(&size, 1, sizeof(int16), f); + fwrite(&size, 1, sizeof(uint16), f); GetMIDIMapper().Serialize(f); } } @@ -2239,7 +2253,7 @@ Limit(m_nDefaultTempo, GetModSpecifications().tempoMin, GetModSpecifications().tempoMax); //m_nRowsPerBeat //m_nRowsPerMeasure - LimitMax(m_nChannels, GetModSpecifications().channelsMax); + Limit(m_nChannels, CHANNELINDEX(1), GetModSpecifications().channelsMax); //m_nTempoMode //m_nMixLevels //m_dwCreatedWithVersion Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp =================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp 2013-07-04 23:15:17 UTC (rev 2498) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp 2013-07-04 23:22:02 UTC (rev 2499) @@ -402,7 +402,7 @@ firstChn = 0; lastChn = GetNumChannels() - 1; } - for(CHANNELINDEX c = firstChn; c < lastChn; c++) + for(CHANNELINDEX c = firstChn; c <= lastChn; c++) { memory.chnSettings[c].patLoop = memory.elapsedTime; memory.chnSettings[c].patLoopStart = nRow; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |