From: <man...@us...> - 2013-12-12 13:23:28
|
Revision: 3452 http://sourceforge.net/p/modplug/code/3452 Author: manxorist Date: 2013-12-12 13:23:19 +0000 (Thu, 12 Dec 2013) Log Message: ----------- [Ref] Move effect byte -> effect type mapping table from Draw_pat.cpp into modcommand.cpp so that libopenmpt can use it. Modified Paths: -------------- trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/soundlib/modcommand.cpp trunk/OpenMPT/soundlib/modcommand.h Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2013-12-11 20:33:09 UTC (rev 3451) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2013-12-12 13:23:19 UTC (rev 3452) @@ -112,35 +112,19 @@ ///////////////////////////////////////////////////////////////////////////// // Effect colour codes -// Effect number => Effect colour assignment +// CommandTypes => Effect colour assignment const int effectColors[] = { - 0, 0, MODCOLOR_PITCH, MODCOLOR_PITCH, - MODCOLOR_PITCH, MODCOLOR_PITCH, MODCOLOR_VOLUME, MODCOLOR_VOLUME, - MODCOLOR_VOLUME, MODCOLOR_PANNING, 0, MODCOLOR_VOLUME, - MODCOLOR_GLOBALS, MODCOLOR_VOLUME, MODCOLOR_GLOBALS, 0, - MODCOLOR_GLOBALS, MODCOLOR_GLOBALS, 0, 0, - 0, MODCOLOR_VOLUME, MODCOLOR_VOLUME, MODCOLOR_GLOBALS, - MODCOLOR_GLOBALS, 0, MODCOLOR_PITCH, MODCOLOR_PANNING, - MODCOLOR_PITCH, MODCOLOR_PANNING, 0, 0, - 0, 0, 0, MODCOLOR_PITCH, - MODCOLOR_PITCH, MODCOLOR_PITCH, MODCOLOR_PITCH, 0, + 0, + MODCOLOR_GLOBALS, + MODCOLOR_VOLUME, + MODCOLOR_PANNING, + MODCOLOR_PITCH, }; -STATIC_ASSERT(CountOf(effectColors) == MAX_EFFECTS); +STATIC_ASSERT(CountOf(effectColors) == MAX_EFFECT_TYPE); -// Volume effect number => Effect colour assignment -const int volEffectColors[] = -{ - 0, MODCOLOR_VOLUME, MODCOLOR_PANNING, MODCOLOR_VOLUME, - MODCOLOR_VOLUME, MODCOLOR_VOLUME, MODCOLOR_VOLUME, MODCOLOR_PITCH, - MODCOLOR_PITCH, MODCOLOR_PANNING, MODCOLOR_PANNING, MODCOLOR_PITCH, - MODCOLOR_PITCH, MODCOLOR_PITCH, 0, 0, -}; -STATIC_ASSERT(CountOf(volEffectColors) == MAX_VOLCMDS); - - ///////////////////////////////////////////////////////////////////////////// // CViewPattern Drawing Implementation @@ -1026,9 +1010,9 @@ bk_col = MODCOLOR_BACKSELECTED; } else if (!m->IsPcNote() && (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_EFFECTHILIGHT)) { - if(m->volcmd != VOLCMD_NONE && m->volcmd < MAX_VOLCMDS && volEffectColors[m->volcmd] != 0) + if(m->volcmd != VOLCMD_NONE && m->volcmd < MAX_VOLCMDS && effectColors[m->GetVolumeEffectType()] != 0) { - tx_col = volEffectColors[m->volcmd]; + tx_col = effectColors[m->GetVolumeEffectType()]; } else if(drawDefaultVolume) { tx_col = MODCOLOR_DEFAULTVOLUME; @@ -1049,8 +1033,8 @@ fx_col = row_col; if (!isPCnote && m->command != CMD_NONE && m->command < MAX_EFFECTS && (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_EFFECTHILIGHT)) { - if(effectColors[m->command] != 0) - fx_col = effectColors[m->command]; + if(effectColors[m->GetEffectType()] != 0) + fx_col = effectColors[m->GetEffectType()]; } if (!(dwSpeedUpMask & 0x08)) { Modified: trunk/OpenMPT/soundlib/modcommand.cpp =================================================================== --- trunk/OpenMPT/soundlib/modcommand.cpp 2013-12-11 20:33:09 UTC (rev 3451) +++ trunk/OpenMPT/soundlib/modcommand.cpp 2013-12-12 13:23:19 UTC (rev 3452) @@ -13,6 +13,60 @@ #include "Tables.h" +const EffectType effectTypes[] = +{ + EFFECT_TYPE_NORMAL, EFFECT_TYPE_NORMAL, EFFECT_TYPE_PITCH, EFFECT_TYPE_PITCH, + EFFECT_TYPE_PITCH, EFFECT_TYPE_PITCH, EFFECT_TYPE_VOLUME, EFFECT_TYPE_VOLUME, + EFFECT_TYPE_VOLUME, EFFECT_TYPE_PANNING, EFFECT_TYPE_NORMAL, EFFECT_TYPE_VOLUME, + EFFECT_TYPE_GLOBAL, EFFECT_TYPE_VOLUME, EFFECT_TYPE_GLOBAL, EFFECT_TYPE_NORMAL, + EFFECT_TYPE_GLOBAL, EFFECT_TYPE_GLOBAL, EFFECT_TYPE_NORMAL, EFFECT_TYPE_NORMAL, + EFFECT_TYPE_NORMAL, EFFECT_TYPE_VOLUME, EFFECT_TYPE_VOLUME, EFFECT_TYPE_GLOBAL, + EFFECT_TYPE_GLOBAL, EFFECT_TYPE_NORMAL, EFFECT_TYPE_PITCH, EFFECT_TYPE_PANNING, + EFFECT_TYPE_PITCH, EFFECT_TYPE_PANNING, EFFECT_TYPE_NORMAL, EFFECT_TYPE_NORMAL, + EFFECT_TYPE_NORMAL, EFFECT_TYPE_NORMAL, EFFECT_TYPE_NORMAL, EFFECT_TYPE_PITCH, + EFFECT_TYPE_PITCH, EFFECT_TYPE_PITCH, EFFECT_TYPE_PITCH, EFFECT_TYPE_NORMAL, +}; + +STATIC_ASSERT(CountOf(effectTypes) == MAX_EFFECTS); + + +const EffectType volumeEffectTypes[] = +{ + EFFECT_TYPE_NORMAL, EFFECT_TYPE_VOLUME, EFFECT_TYPE_PANNING, EFFECT_TYPE_VOLUME, + EFFECT_TYPE_VOLUME, EFFECT_TYPE_VOLUME, EFFECT_TYPE_VOLUME, EFFECT_TYPE_PITCH, + EFFECT_TYPE_PITCH, EFFECT_TYPE_PANNING, EFFECT_TYPE_PANNING, EFFECT_TYPE_PITCH, + EFFECT_TYPE_PITCH, EFFECT_TYPE_PITCH, EFFECT_TYPE_NORMAL, EFFECT_TYPE_NORMAL, +}; + +STATIC_ASSERT(CountOf(volumeEffectTypes) == MAX_VOLCMDS); + + +EffectType ModCommand::GetEffectType(COMMAND cmd) +//----------------------------------------------- +{ + if(cmd < CountOf(effectTypes)) + { + return effectTypes[cmd]; + } else + { + return EFFECT_TYPE_NORMAL; + } +} + + +EffectType ModCommand::GetVolumeEffectType(VOLCMD volcmd) +//------------------------------------------------------- +{ + if(volcmd < CountOf(volumeEffectTypes)) + { + return volumeEffectTypes[volcmd]; + } else + { + return EFFECT_TYPE_NORMAL; + } +} + + // Convert an Exx command (MOD) to Sxx command (S3M) void ModCommand::ExtendedMODtoS3MEffect() //--------------------------------------- Modified: trunk/OpenMPT/soundlib/modcommand.h =================================================================== --- trunk/OpenMPT/soundlib/modcommand.h 2013-12-11 20:33:09 UTC (rev 3451) +++ trunk/OpenMPT/soundlib/modcommand.h 2013-12-12 13:23:19 UTC (rev 3452) @@ -100,6 +100,17 @@ }; +enum EffectType +{ + EFFECT_TYPE_NORMAL = 0, + EFFECT_TYPE_GLOBAL = 1, + EFFECT_TYPE_VOLUME = 2, + EFFECT_TYPE_PANNING = 3, + EFFECT_TYPE_PITCH = 4, + MAX_EFFECT_TYPE = 5 +}; + + //============== class ModCommand //============== @@ -162,6 +173,11 @@ bool IsNoteOrEmpty() const { return note == NOTE_NONE || IsNote(); } static bool IsNoteOrEmpty(NOTE note) { return note == NOTE_NONE || IsNote(note); } + static EffectType GetEffectType(COMMAND cmd); + EffectType GetEffectType() const { return GetEffectType(command); } + static EffectType GetVolumeEffectType(VOLCMD volcmd); + EffectType GetVolumeEffectType() const { return GetVolumeEffectType(volcmd); } + // Convert a complete ModCommand item from one format to another void Convert(MODTYPE fromType, MODTYPE toType); // Convert MOD/XM Exx to S3M/IT Sxx This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |