From: <sag...@us...> - 2013-02-11 21:57:15
|
Revision: 1518 http://sourceforge.net/p/modplug/code/1518 Author: saga-games Date: 2013-02-11 21:57:08 +0000 (Mon, 11 Feb 2013) Log Message: ----------- [Ref] Small code changes. [Fix] Note slide up/down were missing from the string of supported effects in the mod specs and were thus not drawn correctly. Modified Paths: -------------- trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/test/test.cpp trunk/OpenMPT/soundlib/RowVisitor.cpp Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2013-02-09 15:47:25 UTC (rev 1517) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2013-02-11 21:57:08 UTC (rev 1518) @@ -479,7 +479,7 @@ else { static_assert(MAX_VOLCMDS <= 16, "Pattern draw code assumes <= 16 volume commands"); - int volcmd = (mc.volcmd & 0x0F); + ModCommand::VOLCMD volcmd = (mc.volcmd & 0x0F); int vol = (mc.vol & 0x7F); if(drawDefaultVolume) @@ -507,14 +507,14 @@ } } - if (volcmd) + if(volcmd != VOLCMD_NONE) { m_Dib.TextBlt(x, y, pfnt->nVolCmdWidth, COLUMN_HEIGHT, - pfnt->nVolX, pfnt->nVolY+volcmd*COLUMN_HEIGHT); + pfnt->nVolX, pfnt->nVolY + volcmd * COLUMN_HEIGHT); m_Dib.TextBlt(x+pfnt->nVolCmdWidth, y, pfnt->nVolHiWidth, COLUMN_HEIGHT, - pfnt->nNumX, pfnt->nNumY+(vol / 10)*COLUMN_HEIGHT); - m_Dib.TextBlt(x+pfnt->nVolCmdWidth+pfnt->nVolHiWidth, y, pfnt->nEltWidths[2]-(pfnt->nVolCmdWidth+pfnt->nVolHiWidth), COLUMN_HEIGHT, - pfnt->nNumX, pfnt->nNumY+(vol % 10)*COLUMN_HEIGHT); + pfnt->nNumX, pfnt->nNumY + (vol / 10) * COLUMN_HEIGHT); + m_Dib.TextBlt(x+pfnt->nVolCmdWidth + pfnt->nVolHiWidth, y, pfnt->nEltWidths[2] - (pfnt->nVolCmdWidth + pfnt->nVolHiWidth), COLUMN_HEIGHT, + pfnt->nNumX, pfnt->nNumY + (vol % 10) * COLUMN_HEIGHT); } else { int srcx = pfnt->nEltWidths[0] + pfnt->nEltWidths[1]; @@ -1044,7 +1044,7 @@ uint16 val = m->GetValueEffectCol(); if(val > ModCommand::maxColumnValue) val = ModCommand::maxColumnValue; fx_col = row_col; - if (!isPCnote && (m->command) && (m->command < MAX_EFFECTS) && (CMainFrame::GetSettings().m_dwPatternSetup & PATTERN_EFFECTHILIGHT)) + if (!isPCnote && m->command != CMD_NONE && m->command < MAX_EFFECTS && (CMainFrame::GetSettings().m_dwPatternSetup & PATTERN_EFFECTHILIGHT)) { if(effectColors[m->command] != 0) fx_col = effectColors[m->command]; @@ -1065,15 +1065,13 @@ { m_Dib.TextBlt(xbmp + x, 0, 2, COLUMN_HEIGHT, pfnt->nClrX+x, pfnt->nClrY); m_Dib.TextBlt(xbmp + x + 2, 0, pfnt->nEltWidths[3], m_szCell.cy, pfnt->nNumX, pfnt->nNumY+(val / 100)*COLUMN_HEIGHT); - } - else + } else { - if (m->command) + if(m->command != CMD_NONE) { - ModCommand::COMMAND command = m->command & 0x3F; - int n = pSndFile->GetModSpecifications().GetEffectLetter(command); + char n = pSndFile->GetModSpecifications().GetEffectLetter(m->command); ASSERT(n > ' '); - DrawLetter(xbmp+x, 0, (char)n, pfnt->nEltWidths[3], pfnt->nCmdOfs); + DrawLetter(xbmp+x, 0, n, pfnt->nEltWidths[3], pfnt->nCmdOfs); } else { m_Dib.TextBlt(xbmp+x, 0, pfnt->nEltWidths[3], COLUMN_HEIGHT, pfnt->nClrX+x, pfnt->nClrY); Modified: trunk/OpenMPT/mptrack/test/test.cpp =================================================================== --- trunk/OpenMPT/mptrack/test/test.cpp 2013-02-09 15:47:25 UTC (rev 1517) +++ trunk/OpenMPT/mptrack/test/test.cpp 2013-02-11 21:57:08 UTC (rev 1518) @@ -264,8 +264,15 @@ //Util::Round<uint64>(1.0); // This should trigger assert in Round. - //VERIFY_EQUAL( Util::Round<int8>(-129), 0 ); + //VERIFY_EQUAL( Util::Round<int8>(-129), 0 ); + // Check for completeness of supported effect list in mod specifications + for(size_t i = 0; i < CountOf(ModSpecs::Collection); i++) + { + ASSERT(strlen(ModSpecs::Collection[i]->commands) == MAX_EFFECTS); + ASSERT(strlen(ModSpecs::Collection[i]->volcommands) == MAX_VOLCMDS); + } + } @@ -315,7 +322,7 @@ // Check if our test file was loaded correctly. void TestLoadXMFile(const CModDoc *pModDoc) -//--------------------------------------- +//----------------------------------------- { const CSoundFile *pSndFile = pModDoc->GetSoundFile(); Modified: trunk/OpenMPT/soundlib/RowVisitor.cpp =================================================================== --- trunk/OpenMPT/soundlib/RowVisitor.cpp 2013-02-09 15:47:25 UTC (rev 1517) +++ trunk/OpenMPT/soundlib/RowVisitor.cpp 2013-02-11 21:57:08 UTC (rev 1518) @@ -13,7 +13,7 @@ * there's no problem with (infinite) pattern loops in this code. * * Normal player code: - * Bare in mind that rows inside pattern loops should only be evaluated once, or else the algorithm will cancel too early! + * Bear in mind that rows inside pattern loops should only be evaluated once, or else the algorithm will cancel too early! * So in that case, the pattern loop rows have to be reset when looping back. * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. @@ -177,10 +177,10 @@ // Unvisit all rows that are in the visited row buffer, until we hit the start row for this pattern loop. ROWINDEX row = ROWINDEX_INVALID; - while(!visitOrder.empty() && row != startRow) + vector<ROWINDEX>::reverse_iterator iter = visitOrder.rbegin(); + while(iter != visitOrder.rend() && row != startRow) { - row = visitOrder.back(); - visitOrder.pop_back(); + row = *(iter++); Unvisit(order, row); } visitOrder.clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |