From: <sag...@us...> - 2011-06-14 20:23:56
|
Revision: 901 http://modplug.svn.sourceforge.net/modplug/?rev=901&view=rev Author: saga-games Date: 2011-06-14 20:23:49 +0000 (Tue, 14 Jun 2011) Log Message: ----------- [Imp] General Tab: When editing panning, surround is disabled and when enabling surround, panning is reset. [Imp] Tagging: ID3 tags also contain a TDRC tag now, since this should be used instead of TYER in ID3v2.4 [Ref] Rewrote WAV tagging a bit. [Mod] OpenMPT: Version is now 1.19.02.06 Modified Paths: -------------- trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/View_gen.cpp trunk/OpenMPT/mptrack/tagging.cpp trunk/OpenMPT/mptrack/version.h Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2011-06-14 19:33:46 UTC (rev 900) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2011-06-14 20:23:49 UTC (rev 901) @@ -848,7 +848,7 @@ //---------------------------------------------------------------------------------------------------------------------------------------------------- { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - UINT nChn = m_SndFile.m_nChannels; + UINT nChn = GetNumChannels(); if ((!pMainFrm) || (!note)) return FALSE; if (nVol > 256) nVol = 256; @@ -866,7 +866,7 @@ // All notes off for (UINT i=0; i<MAX_CHANNELS; i++) { - if ((i < m_SndFile.m_nChannels) || (m_SndFile.Chn[i].nMasterChn)) + if ((i < GetNumChannels()) || (m_SndFile.Chn[i].nMasterChn)) { m_SndFile.Chn[i].dwFlags |= CHN_KEYOFF | CHN_NOTEFADE; m_SndFile.Chn[i].nFadeOutVol = 0; @@ -939,7 +939,7 @@ m_SndFile.NoteChange(nChn, note, false, true, true); if (nVol >= 0) pChn->nVolume = nVol; - // handle sample looping. + // Handle sample looping. // Changed line to fix http://forum.openmpt.org/index.php?topic=1700.0 //if ((loopstart + 16 < loopend) && (loopstart >= 0) && (loopend <= (LONG)pChn->nLength)) { if ((loopstart + 16 < loopend) && (loopstart >= 0) && (pChn->pModSample != nullptr)) @@ -951,7 +951,7 @@ pChn->nLength = min(UINT(loopend), pChn->pModSample->nLength); } - // handle extra-loud flag + // Handle extra-loud flag if ((!(CMainFrame::m_dwPatternSetup & PATTERN_NOEXTRALOUD)) && (nsmp)) { pChn->dwFlags |= CHN_EXTRALOUD; @@ -1284,8 +1284,15 @@ if (d != (m_SndFile.ChnSettings[nChn].dwFlags & CHN_SURROUND)) { if (m_SndFile.m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); - if (d) m_SndFile.ChnSettings[nChn].dwFlags |= CHN_SURROUND; - else m_SndFile.ChnSettings[nChn].dwFlags &= ~CHN_SURROUND; + if (d) + { + m_SndFile.ChnSettings[nChn].dwFlags |= CHN_SURROUND; + m_SndFile.ChnSettings[nChn].nPan = 128; + } + else + { + m_SndFile.ChnSettings[nChn].dwFlags &= ~CHN_SURROUND; + } } if (d) m_SndFile.Chn[nChn].dwFlags |= CHN_SURROUND; @@ -1318,6 +1325,7 @@ if (m_SndFile.ChnSettings[nChn].nPan != nPan) { m_SndFile.ChnSettings[nChn].nPan = nPan; + m_SndFile.ChnSettings[nChn].dwFlags &= ~CHN_SURROUND; if (m_SndFile.m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT | MOD_TYPE_MPT)) SetModified(); bOk = true; } Modified: trunk/OpenMPT/mptrack/View_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_gen.cpp 2011-06-14 19:33:46 UTC (rev 900) +++ trunk/OpenMPT/mptrack/View_gen.cpp 2011-06-14 20:23:49 UTC (rev 901) @@ -593,6 +593,7 @@ const CHANNELINDEX nChn = (CHANNELINDEX)(m_nActiveTab * 4) + chnMod4; pModDoc->SurroundChannel(nChn, b); pModDoc->UpdateAllViews(this, HINT_MODCHANNELS | (m_nActiveTab << HINT_SHIFT_CHNTAB)); + UpdateView(HINT_MODCHANNELS); } } @@ -635,6 +636,7 @@ { m_sbPan[chnMod4].SetPos(pan/4); pModDoc->UpdateAllViews(this, HINT_MODCHANNELS | (m_nActiveTab << HINT_SHIFT_CHNTAB)); + UpdateView(HINT_MODCHANNELS); } } } @@ -683,6 +685,7 @@ if (pModDoc->SetChannelDefaultPan(nChn+iCh, pos*4)) { SetDlgItemInt(IDC_EDIT2+iCh*2, pos*4); + CheckDlgButton(IDC_CHECK2 + iCh * 2, BST_UNCHECKED); bUpdate = TRUE; } } Modified: trunk/OpenMPT/mptrack/tagging.cpp =================================================================== --- trunk/OpenMPT/mptrack/tagging.cpp 2011-06-14 19:33:46 UTC (rev 900) +++ trunk/OpenMPT/mptrack/tagging.cpp 2011-06-14 20:23:49 UTC (rev 901) @@ -56,19 +56,20 @@ tHeader.flags = 0x00; // No flags fwrite(&tHeader, 1, sizeof(tHeader), f); - // Write TIT2 (Title), TCOM / TPE1 (Composer), TALB (Album), TCON (Genre), TYER (Date), WXXX (URL), TENC (Encoder), COMM (Comment) + // Write TIT2 (Title), TCOM / TPE1 (Composer), TALB (Album), TCON (Genre), TYER / TDRC (Date), WXXX (URL), TENC (Encoder), COMM (Comment) WriteID3v2Frame("TIT2", title, f); WriteID3v2Frame("TPE1", artist, f); WriteID3v2Frame("TCOM", artist, f); WriteID3v2Frame("TALB", album, f); WriteID3v2Frame("TCON", genre, f); WriteID3v2Frame("TYER", year, f); + WriteID3v2Frame("TDRC", year, f); WriteID3v2Frame("WXXX", url, f); WriteID3v2Frame("TENC", encoder, f); WriteID3v2Frame("COMM", comments, f); // Write Padding - for(UINT i = 0; i < ID3v2_PADDING; i++) + for(size_t i = 0; i < ID3v2_PADDING; i++) { fputc(0, f); } @@ -123,10 +124,25 @@ WAVEFILEHEADER list; WAVEDATAHEADER chunk; - CHAR s[256]; DWORD info_ofs, end_ofs; - const DWORD zero = 0; + const uint8 zero = 0; + struct + { + DWORD id; + string *data; + } chunks[] = + { + { IFFID_ICMT, &comments }, + { IFFID_INAM, &title }, + { IFFID_IART, &artist }, + { IFFID_IPRD, &album }, + { IFFID_ICOP, &url }, + { IFFID_IGNR, &genre }, + { IFFID_ISFT, &encoder }, + { IFFID_ICRD, &year }, + }; + info_ofs = ftell(f); if (info_ofs & 1) { @@ -138,55 +154,35 @@ list.id_WAVE = IFFID_INFO; list.filesize = 4; fwrite(&list, 1, sizeof(list), f); - // ICMT - if (!comments.empty()) + + for(size_t iCmt = 0; iCmt < CountOf(chunks); iCmt++) { - chunk.id_data = IFFID_ICMT; - chunk.length = strlen(comments.c_str()) + 1; + if(chunks[iCmt].data->empty()) + { + continue; + } + + string data = *chunks[iCmt].data; + // Special case: Expand year to full date + if(chunks[iCmt].id == IFFID_ICRD) + { + data += "-01-01"; + } + + chunk.id_data = chunks[iCmt].id; + chunk.length = data.length() + 1; + fwrite(&chunk, 1, sizeof(chunk), f); - fwrite(comments.c_str(), 1, chunk.length, f); + fwrite(data.c_str(), 1, chunk.length, f); list.filesize += chunk.length + sizeof(chunk); - if (chunk.length & 1) + + // Chunks must be even-sized + if(chunk.length & 1) { fwrite(&zero, 1, 1, f); list.filesize++; } } - for (UINT iCmt=0; iCmt<=6; iCmt++) - { - s[0] = 0; - switch(iCmt) - { - // INAM - case 0: memcpy(s, title.c_str(), 255); s[255] = 0; chunk.id_data = IFFID_INAM; break; - // IART - case 1: memcpy(s, artist.c_str(), 255); s[255] = 0; chunk.id_data = IFFID_IART; break; - // IPRD - case 2: memcpy(s, album.c_str(), 255); s[255] = 0; chunk.id_data = IFFID_IPRD; break; - // ICOP - case 3: memcpy(s, url.c_str(), 255); s[255] = 0; chunk.id_data = IFFID_ICOP; break; - // IGNR - case 4: memcpy(s, genre.c_str(), 255); s[255] = 0; chunk.id_data = IFFID_IGNR; break; - // ISFT - case 5: memcpy(s, encoder.c_str(), 255); s[255] = 0; chunk.id_data = IFFID_ISFT; break; - // ICRD - case 6: memcpy(s, year.c_str(), 4); s[4] = 0; strcat(s, "-01-01"); if (s[0] <= '0') s[0] = 0; chunk.id_data = IFFID_ICRD; break; - } - int l = strlen(s); - while ((l > 0) && (s[l-1] == ' ')) s[--l] = 0; - if (s[0]) - { - chunk.length = strlen(s)+1; - fwrite(&chunk, 1, sizeof(chunk), f); - fwrite(s, 1, chunk.length, f); - list.filesize += chunk.length + sizeof(chunk); - if (chunk.length & 1) - { - fwrite(&zero, 1, 1, f); - list.filesize++; - } - } - } // Update INFO size end_ofs = ftell(f); fseek(f, info_ofs, SEEK_SET); Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-06-14 19:33:46 UTC (rev 900) +++ trunk/OpenMPT/mptrack/version.h 2011-06-14 20:23:49 UTC (rev 901) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 19 #define VER_MINOR 02 -#define VER_MINORMINOR 05 +#define VER_MINORMINOR 06 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |