From: <sv...@op...> - 2024-11-16 22:03:43
|
Author: sagamusix Date: Sat Nov 16 23:03:25 2024 New Revision: 22209 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22209 Log: [New] Add experimental hexadecimal volume column mode. Has to be enabled via hidden setting "Pattern.VolumeColumnInHex" and then manually assign the corresponding keys for A-F (and reassign effect keys to something else; https://bugs.openmpt.org/view.php?id=1798) Modified: trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/mptrack/CommandSet.cpp ============================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/CommandSet.cpp Sat Nov 16 23:03:25 2024 (r22209) @@ -1562,6 +1562,12 @@ {2104, kcToggleVisibilityVolumeColumn, _T("Toggle Volume Column Visibility")}, {2105, kcToggleVisibilityEffectColumn, _T("Toggle Effect Column Visibility")}, {2106, kcFileOpenTemplate, _T("File/Open Template")}, + {2107, kcSetVolumeA, _T("Set volume digit A")}, + {2108, kcSetVolumeB, _T("Set volume digit B")}, + {2109, kcSetVolumeC, _T("Set volume digit C")}, + {2110, kcSetVolumeD, _T("Set volume digit D")}, + {2111, kcSetVolumeE, _T("Set volume digit E")}, + {2112, kcSetVolumeF, _T("Set volume digit F")}, }; // clang-format on Modified: trunk/OpenMPT/mptrack/CommandSet.h ============================================================================== --- trunk/OpenMPT/mptrack/CommandSet.h Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/CommandSet.h Sat Nov 16 23:03:25 2024 (r22209) @@ -743,7 +743,13 @@ kcSetVolume7, kcSetVolume8, kcSetVolume9, - kcEndVolumeDigits = kcSetVolume9, + kcSetVolumeA, + kcSetVolumeB, + kcSetVolumeC, + kcSetVolumeD, + kcSetVolumeE, + kcSetVolumeF, + kcEndVolumeDigits = kcSetVolumeF, kcStartVolumeCommands, kcSetVolumeVol = kcStartVolumeCommands, //v kcSetVolumePan, //p Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp Sat Nov 16 23:03:25 2024 (r22209) @@ -476,7 +476,7 @@ } -void CViewPattern::DrawVolumeCommand(int x, int y, const ModCommand &mc, bool drawDefaultVolume) +void CViewPattern::DrawVolumeCommand(int x, int y, const ModCommand &mc, bool drawDefaultVolume, bool hex) { const PATTERNFONT *pfnt = PatternFont::currentFont; @@ -508,10 +508,12 @@ { m_Dib.TextBlt(x, y, pfnt->nVolCmdWidth, pfnt->spacingY, pfnt->nVolX, pfnt->nVolY + volcmd * pfnt->spacingY, pfnt->dib); + const int digit1 = vol / (hex ? 16 : 10); + const int digit2 = vol % (hex ? 16 : 10); m_Dib.TextBlt(x+pfnt->nVolCmdWidth, y, pfnt->nVolHiWidth, pfnt->spacingY, - pfnt->nNumX, pfnt->nNumY + (vol / 10) * pfnt->spacingY, pfnt->dib); + pfnt->nNumX, pfnt->nNumY + digit1 * pfnt->spacingY, pfnt->dib); m_Dib.TextBlt(x+pfnt->nVolCmdWidth + pfnt->nVolHiWidth, y, pfnt->nEltWidths[2] - (pfnt->nVolCmdWidth + pfnt->nVolHiWidth), pfnt->spacingY, - pfnt->nNumX, pfnt->nNumY + (vol % 10) * pfnt->spacingY, pfnt->dib); + pfnt->nNumX, pfnt->nNumY + digit2 * pfnt->spacingY, pfnt->dib); } else { int srcx = pfnt->nEltWidths[0]; @@ -828,6 +830,7 @@ return; const CPattern &pattern = sndFile.Patterns[nPattern]; const auto patternSetupFlags = TrackerSettings::Instance().m_dwPatternSetup.Get(); + const bool volumeColumnIsHex = TrackerSettings::Instance().patternVolColHex; const PATTERNFONT *pfnt = PatternFont::currentFont; CRect rect; @@ -1121,7 +1124,7 @@ } // Drawing Volume m_Dib.SetTextColor(tx_col, bk_col); - DrawVolumeCommand(xbmp + x, 0, *m, drawDefaultVolume); + DrawVolumeCommand(xbmp + x, 0, *m, drawDefaultVolume, volumeColumnIsHex); } x += pfnt->nEltWidths[2]; } Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp ============================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp Sat Nov 16 23:03:25 2024 (r22209) @@ -273,6 +273,7 @@ , gbPatternRecord(conf, UL_("Pattern Editor"), UL_("Record"), true) , patternNoEditPopup(conf, UL_("Pattern Editor"), UL_("NoEditPopup"), false) , patternStepCommands(conf, UL_("Pattern Editor"), UL_("EditStepAppliesToCommands"), false) + , patternVolColHex(conf, UL_("Pattern Editor"), UL_("VolumeColumnInHex"), false) , m_dwPatternSetup(conf, UL_("Pattern Editor"), UL_("PatternSetup"), GetDefaultPatternSetup()) , m_nRowHighlightMeasures(conf, UL_("Pattern Editor"), UL_("RowSpacing"), 16) , m_nRowHighlightBeats(conf, UL_("Pattern Editor"), UL_("RowSpacing2"), 4) Modified: trunk/OpenMPT/mptrack/TrackerSettings.h ============================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/TrackerSettings.h Sat Nov 16 23:03:25 2024 (r22209) @@ -810,6 +810,7 @@ CachedSetting<bool> gbPatternRecord; CachedSetting<bool> patternNoEditPopup; CachedSetting<bool> patternStepCommands; + CachedSetting<bool> patternVolColHex; CachedSetting<uint32> m_dwPatternSetup; CachedSetting<uint32> m_nRowHighlightMeasures; // primary (measures) and secondary (beats) highlight CachedSetting<uint32> m_nRowHighlightBeats; // primary (measures) and secondary (beats) highlight Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/View_pat.cpp Sat Nov 16 23:03:25 2024 (r22209) @@ -4956,7 +4956,8 @@ ModCommand &target = GetCursorCommand(); ModCommand m = target; // This is the command we are about to overwrite - const bool isDigit = (v >= 0) && (v <= 9); + const bool isHex = TrackerSettings::Instance().patternVolColHex; + const bool isDigit = (v >= 0x00) && (v <= 0x0F); if(m.IsPcNote()) { @@ -4968,7 +4969,10 @@ uint16 vol = m.vol; if(isDigit) { - vol = ((vol * 10) + v) % 100; + if(isHex) + vol = ((vol * 16) + v) % 256; + else + vol = ((vol * 10) + v) % 100; if(!volcmd) volcmd = VOLCMD_VOLUME; } else @@ -5009,7 +5013,10 @@ } if(vol > max) - vol %= 10; + { + vol %= (isHex ? 16 : 10); + LimitMax(vol, max); + } if(pSndFile->GetModSpecifications().HasVolCommand(volcmd)) { m_cmdOld.volcmd = m.volcmd = volcmd; Modified: trunk/OpenMPT/mptrack/View_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.h Sat Nov 16 21:18:38 2024 (r22208) +++ trunk/OpenMPT/mptrack/View_pat.h Sat Nov 16 23:03:25 2024 (r22209) @@ -295,7 +295,7 @@ #endif void DrawNote(int x, int y, UINT note, CTuning *pTuning = nullptr); void DrawInstrument(int x, int y, UINT instr); - void DrawVolumeCommand(int x, int y, const ModCommand &mc, bool drawDefaultVolume); + void DrawVolumeCommand(int x, int y, const ModCommand &mc, bool drawDefaultVolume, bool hex); void DrawChannelVUMeter(HDC hdc, int x, int y, UINT nChn); void UpdateAllVUMeters(Notification *pnotify); void DrawDragSel(HDC hdc); |