mirror of
https://github.com/Boof2015/prism.git
synced 2026-08-19 12:04:18 +02:00
experimental 120fps tui
This commit is contained in:
@@ -19,7 +19,7 @@ const std::vector<SettingDescriptor> kAppearanceSettings = {
|
|||||||
|
|
||||||
const std::vector<SettingDescriptor> kGeneralSettings = {
|
const std::vector<SettingDescriptor> kGeneralSettings = {
|
||||||
{SettingId::InputTrim, "Input trim", "Applies gain before every analyzer."},
|
{SettingId::InputTrim, "Input trim", "Applies gain before every analyzer."},
|
||||||
{SettingId::RefreshRate, "Refresh rate", "Controls how often the terminal display is published."},
|
{SettingId::RefreshRate, "Refresh rate", "120 FPS is experimental and depends heavily on the terminal."},
|
||||||
};
|
};
|
||||||
|
|
||||||
const std::vector<SettingDescriptor> kSpectrumSettings = {
|
const std::vector<SettingDescriptor> kSpectrumSettings = {
|
||||||
@@ -305,7 +305,9 @@ TuiSettings normalizeSettings(TuiSettings settings) {
|
|||||||
}), settings.themeId.end());
|
}), settings.themeId.end());
|
||||||
if (settings.themeId.empty()) settings.themeId = "Default";
|
if (settings.themeId.empty()) settings.themeId = "Default";
|
||||||
settings.inputTrimDb = std::clamp(snap(settings.inputTrimDb, 0.5f), -12.0f, 12.0f);
|
settings.inputTrimDb = std::clamp(snap(settings.inputTrimDb, 0.5f), -12.0f, 12.0f);
|
||||||
settings.refreshRate = settings.refreshRate <= 30 ? 30 : 60;
|
settings.refreshRate = settings.refreshRate <= 30
|
||||||
|
? 30
|
||||||
|
: settings.refreshRate <= 60 ? 60 : 120;
|
||||||
settings.rackLayout = normalizeRackLayout(std::move(settings.rackLayout));
|
settings.rackLayout = normalizeRackLayout(std::move(settings.rackLayout));
|
||||||
settings.spectrumTiltDbPerOctave = std::clamp(
|
settings.spectrumTiltDbPerOctave = std::clamp(
|
||||||
snap(settings.spectrumTiltDbPerOctave, 0.1f), -2.0f, 8.0f);
|
snap(settings.spectrumTiltDbPerOctave, 0.1f), -2.0f, 8.0f);
|
||||||
@@ -430,7 +432,8 @@ std::string settingValue(const TuiSettings& settings, SettingId setting) {
|
|||||||
return (settings.inputTrimDb > 0.0f ? "+" : "") +
|
return (settings.inputTrimDb > 0.0f ? "+" : "") +
|
||||||
trimFloat(settings.inputTrimDb, 1) + " dB";
|
trimFloat(settings.inputTrimDb, 1) + " dB";
|
||||||
case SettingId::RefreshRate:
|
case SettingId::RefreshRate:
|
||||||
return std::to_string(settings.refreshRate) + " FPS";
|
return std::to_string(settings.refreshRate) + " FPS" +
|
||||||
|
(settings.refreshRate == 120 ? " (experimental)" : "");
|
||||||
case SettingId::SpectrumPeakReadout:
|
case SettingId::SpectrumPeakReadout:
|
||||||
return boolValue(settings.spectrumPeakReadout);
|
return boolValue(settings.spectrumPeakReadout);
|
||||||
case SettingId::SpectrumTilt:
|
case SettingId::SpectrumTilt:
|
||||||
@@ -503,7 +506,15 @@ bool adjustSetting(TuiSettings& settings, SettingId setting, int direction) {
|
|||||||
settings.inputTrimDb += direction > 0 ? 0.5f : -0.5f;
|
settings.inputTrimDb += direction > 0 ? 0.5f : -0.5f;
|
||||||
break;
|
break;
|
||||||
case SettingId::RefreshRate:
|
case SettingId::RefreshRate:
|
||||||
settings.refreshRate = settings.refreshRate == 60 ? 30 : 60;
|
if (direction > 0) {
|
||||||
|
settings.refreshRate = settings.refreshRate == 30
|
||||||
|
? 60
|
||||||
|
: settings.refreshRate == 60 ? 120 : 30;
|
||||||
|
} else {
|
||||||
|
settings.refreshRate = settings.refreshRate == 120
|
||||||
|
? 60
|
||||||
|
: settings.refreshRate == 60 ? 30 : 120;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SettingId::SpectrumPeakReadout:
|
case SettingId::SpectrumPeakReadout:
|
||||||
settings.spectrumPeakReadout = !settings.spectrumPeakReadout;
|
settings.spectrumPeakReadout = !settings.spectrumPeakReadout;
|
||||||
|
|||||||
@@ -477,6 +477,20 @@ void testSettingsModelAndPersistence() {
|
|||||||
Prism::Tui::settingsForPage(Prism::Tui::SettingsPage::General).size() == 2,
|
Prism::Tui::settingsForPage(Prism::Tui::SettingsPage::General).size() == 2,
|
||||||
"settings should expose shallow category pages");
|
"settings should expose shallow category pages");
|
||||||
Prism::Tui::TuiSettings adjusted;
|
Prism::Tui::TuiSettings adjusted;
|
||||||
|
require(Prism::Tui::adjustSetting(
|
||||||
|
adjusted, Prism::Tui::SettingId::RefreshRate, 1) &&
|
||||||
|
adjusted.refreshRate == 120 &&
|
||||||
|
Prism::Tui::settingValue(
|
||||||
|
adjusted, Prism::Tui::SettingId::RefreshRate).find("experimental") !=
|
||||||
|
std::string::npos,
|
||||||
|
"refresh settings should expose an explicit experimental 120 FPS mode");
|
||||||
|
require(Prism::Tui::adjustSetting(
|
||||||
|
adjusted, Prism::Tui::SettingId::RefreshRate, 1) &&
|
||||||
|
adjusted.refreshRate == 30 &&
|
||||||
|
Prism::Tui::adjustSetting(
|
||||||
|
adjusted, Prism::Tui::SettingId::RefreshRate, -1) &&
|
||||||
|
adjusted.refreshRate == 120,
|
||||||
|
"refresh settings should cycle through 30, 60, and 120 FPS in both directions");
|
||||||
require(Prism::Tui::adjustSetting(
|
require(Prism::Tui::adjustSetting(
|
||||||
adjusted, Prism::Tui::SettingId::InputTrim, 1) &&
|
adjusted, Prism::Tui::SettingId::InputTrim, 1) &&
|
||||||
adjusted.inputTrimDb == 0.5f,
|
adjusted.inputTrimDb == 0.5f,
|
||||||
|
|||||||
Reference in New Issue
Block a user