From ca584436446b39048c3ee84baa264310967e28e3 Mon Sep 17 00:00:00 2001 From: dofuuz Date: Fri, 11 Jun 2021 16:30:10 +0900 Subject: [PATCH 1/5] Refactor AColor.cpp --- src/AColor.cpp | 159 ++++++++++++++++++++++++++++--------------------- 1 file changed, 91 insertions(+), 68 deletions(-) diff --git a/src/AColor.cpp b/src/AColor.cpp index 097ad04ba..f45847215 100644 --- a/src/AColor.cpp +++ b/src/AColor.cpp @@ -638,85 +638,108 @@ void AColor::DarkMIDIChannel(wxDC * dc, int channel /* 1 - 16 */ ) unsigned char AColor::gradient_pre[ColorGradientTotal][2][gradientSteps][3]; void AColor::PreComputeGradient() { - { - if (!gradient_inited) { - gradient_inited = 1; + if (gradient_inited) return; + gradient_inited = 1; - for (int selected = 0; selected < ColorGradientTotal; selected++) - for (int grayscale = 0; grayscale <= 1; grayscale++) { - float r, g, b; + for (int selected = 0; selected < ColorGradientTotal; selected++) { + const int gsteps = 4; + float gradient[gsteps + 1][3]; + theTheme.Colour( clrSpectro1 ) = theTheme.Colour( clrUnselected ); + theTheme.Colour( clrSpectro1Sel ) = theTheme.Colour( clrSelected ); + int clrFirst = (selected == ColorGradientUnselected ) ? clrSpectro1 : clrSpectro1Sel; + for(int j=0;j<(gsteps+1);j++){ + wxColour c = theTheme.Colour( clrFirst+j ); + gradient[ j] [0] = c.Red()/255.0; + gradient[ j] [1] = c.Green()/255.0; + gradient[ j] [2] = c.Blue()/255.0; + } - int i; - for (i=0; i Date: Fri, 11 Jun 2021 16:30:41 +0900 Subject: [PATCH 2/5] New colormap for Spectrogram - Add color scheme preference Add 'Spectro. Color scheme' to 'Set Track Visuals' macro command --- src/AColor.cpp | 66 +- src/AColor.h | 13 +- src/AColorResources.h | 789 ++++++++++++++++++ src/Experimental.cmake | 2 +- src/commands/SetTrackInfoCommand.cpp | 17 +- src/commands/SetTrackInfoCommand.h | 4 +- src/prefs/SpectrogramSettings.cpp | 32 +- src/prefs/SpectrogramSettings.h | 13 +- src/prefs/SpectrumPrefs.cpp | 11 +- .../wavetrack/ui/SpectrumView.cpp | 4 +- 10 files changed, 912 insertions(+), 39 deletions(-) create mode 100644 src/AColorResources.h diff --git a/src/AColor.cpp b/src/AColor.cpp index f45847215..052b78bd8 100644 --- a/src/AColor.cpp +++ b/src/AColor.cpp @@ -19,7 +19,7 @@ It is also a place to document colour usage policy in Audacity #include "AColor.h" - +#include "AColorResources.h" #include @@ -635,13 +635,23 @@ void AColor::DarkMIDIChannel(wxDC * dc, int channel /* 1 - 16 */ ) -unsigned char AColor::gradient_pre[ColorGradientTotal][2][gradientSteps][3]; +unsigned char AColor::gradient_pre[ColorGradientTotal][colorSchemes][gradientSteps][3]; void AColor::PreComputeGradient() { if (gradient_inited) return; gradient_inited = 1; + // Keep in correspondence with enum SpectrogramSettings::ColorScheme + + // colorScheme 0: Color (New) + std::copy_n(&specColormap[0][0], gradientSteps * 3, &gradient_pre[ColorGradientUnselected][0][0][0]); + std::copy_n(&selColormap[0][0], gradientSteps * 3, &gradient_pre[ColorGradientTimeSelected][0][0][0]); + std::copy_n(&freqSelColormap[0][0], gradientSteps * 3, &gradient_pre[ColorGradientTimeAndFrequencySelected][0][0][0]); + std::fill_n(&gradient_pre[ColorGradientEdge][0][0][0], gradientSteps * 3, 0); + + for (int selected = 0; selected < ColorGradientTotal; selected++) { + // Get color scheme from Theme const int gsteps = 4; float gradient[gsteps + 1][3]; theTheme.Colour( clrSpectro1 ) = theTheme.Colour( clrUnselected ); @@ -654,7 +664,7 @@ void AColor::PreComputeGradient() { gradient[ j] [2] = c.Blue()/255.0; } - // Color + // colorScheme 1: Color (from theme) for (int i = 0; iGetSpectrogramSettings().spectralSelection = bSpectralSelect; } - if( wt && bHasGrayScale ){ - wt->GetSpectrogramSettings().isGrayscale = bGrayScale; + if (wt && bHasSpecColorScheme) { + wt->GetSpectrogramSettings().colorScheme = mSpecColorScheme; } return true; diff --git a/src/commands/SetTrackInfoCommand.h b/src/commands/SetTrackInfoCommand.h index d6b695d70..e51f228bf 100644 --- a/src/commands/SetTrackInfoCommand.h +++ b/src/commands/SetTrackInfoCommand.h @@ -124,7 +124,7 @@ public: bool bUseSpecPrefs; bool bSpectralSelect; - bool bGrayScale; + int mSpecColorScheme; // For tracking optional parameters. bool bHasColour; @@ -137,7 +137,7 @@ public: bool bHasUseSpecPrefs; bool bHasSpectralSelect; - bool bHasGrayScale; + bool bHasSpecColorScheme; }; class SetTrackCommand : public SetTrackBase diff --git a/src/prefs/SpectrogramSettings.cpp b/src/prefs/SpectrogramSettings.cpp index 6cde50a2b..b97945d44 100644 --- a/src/prefs/SpectrogramSettings.cpp +++ b/src/prefs/SpectrogramSettings.cpp @@ -70,7 +70,7 @@ SpectrogramSettings::SpectrogramSettings(const SpectrogramSettings &other) #ifdef EXPERIMENTAL_ZERO_PADDED_SPECTROGRAMS , zeroPaddingFactor(other.zeroPaddingFactor) #endif - , isGrayscale(other.isGrayscale) + , colorScheme(other.colorScheme) , scaleType(other.scaleType) #ifndef SPECTRAL_SELECTION_GLOBAL_SWITCH , spectralSelection(other.spectralSelection) @@ -107,7 +107,7 @@ SpectrogramSettings &SpectrogramSettings::operator= (const SpectrogramSettings & #ifdef EXPERIMENTAL_ZERO_PADDED_SPECTROGRAMS zeroPaddingFactor = other.zeroPaddingFactor; #endif - isGrayscale = other.isGrayscale; + colorScheme = other.colorScheme; scaleType = other.scaleType; #ifndef SPECTRAL_SELECTION_GLOBAL_SWITCH spectralSelection = other.spectralSelection; @@ -154,6 +154,23 @@ const EnumValueSymbols &SpectrogramSettings::GetScaleNames() return result; } +//static +const EnumValueSymbols &SpectrogramSettings::GetColorSchemeNames() +{ + static const EnumValueSymbols result{ + // Keep in correspondence with enum SpectrogramSettings::ColorScheme: + /* i18n-hint: New color scheme for spectrograms */ + XO("Color (New)") , + /* i18n-hint: color scheme from theme for spectrograms */ + XO("Color (from Theme)") , + /* i18n-hint: grayscale color scheme for spectrograms */ + XO("Grayscale") , + /* i18n-hint: inverse grayscale color scheme for spectrograms */ + XO("Inv. Grayscale") , + }; + return result; +} + //static const TranslatableStrings &SpectrogramSettings::GetAlgorithmNames() { @@ -227,6 +244,7 @@ bool SpectrogramSettings::Validate(bool quiet) ScaleType(std::max(0, std::min((int)(SpectrogramSettings::stNumScaleTypes) - 1, (int)(scaleType)))); + colorScheme = std::max(0, std::min(csNumColorScheme-1, colorScheme)); algorithm = Algorithm( std::max(0, std::min((int)(algNumAlgorithms) - 1, (int)(algorithm))) ); @@ -254,7 +272,7 @@ void SpectrogramSettings::LoadPrefs() gPrefs->Read(wxT("/Spectrum/WindowType"), &windowType, eWinFuncHann); - isGrayscale = (gPrefs->Read(wxT("/Spectrum/Grayscale"), 0L) != 0); + colorScheme = ColorScheme(gPrefs->Read(wxT("/Spectrum/ColorScheme"), 0L)); scaleType = ScaleType(gPrefs->Read(wxT("/Spectrum/ScaleType"), 0L)); @@ -302,7 +320,7 @@ void SpectrogramSettings::SavePrefs() gPrefs->Write(wxT("/Spectrum/WindowType"), windowType); - gPrefs->Write(wxT("/Spectrum/Grayscale"), isGrayscale); + gPrefs->Write(wxT("/Spectrum/ColorScheme"), (int) colorScheme); gPrefs->Write(wxT("/Spectrum/ScaleType"), (int) scaleType); @@ -361,10 +379,10 @@ void SpectrogramSettings::UpdatePrefs() gPrefs->Read(wxT("/Spectrum/WindowType"), &windowType, eWinFuncHann); } - if (isGrayscale == defaults().isGrayscale) { + if (colorScheme == defaults().colorScheme) { int temp; - gPrefs->Read(wxT("/Spectrum/Grayscale"), &temp, 0L); - isGrayscale = (temp != 0); + gPrefs->Read(wxT("/Spectrum/ColorScheme"), &temp, 0L); + colorScheme = ColorScheme(temp); } if (scaleType == defaults().scaleType) { diff --git a/src/prefs/SpectrogramSettings.h b/src/prefs/SpectrogramSettings.h index f608a5133..5a486ccc9 100644 --- a/src/prefs/SpectrogramSettings.h +++ b/src/prefs/SpectrogramSettings.h @@ -67,6 +67,7 @@ public: }; static const EnumValueSymbols &GetScaleNames(); + static const EnumValueSymbols &GetColorSchemeNames(); static const TranslatableStrings &GetAlgorithmNames(); static SpectrogramSettings &defaults(); @@ -128,7 +129,17 @@ public: size_t GetFFTLength() const; // window size (times zero padding, if STFT) size_t NBins() const; - bool isGrayscale; + typedef int ColorScheme; + enum ColorSchemeValues : int { + // Keep in correspondence with AColor::gradient_pre + csColorNew = 0, + csColorTheme, + csGrayscale, + csInvGrayscale, + + csNumColorScheme, + }; + ColorScheme colorScheme; ScaleType scaleType; diff --git a/src/prefs/SpectrumPrefs.cpp b/src/prefs/SpectrumPrefs.cpp index 2f6a9143c..e78f39279 100644 --- a/src/prefs/SpectrumPrefs.cpp +++ b/src/prefs/SpectrumPrefs.cpp @@ -101,7 +101,7 @@ enum { ID_GAIN, ID_RANGE, ID_FREQUENCY_GAIN, - ID_GRAYSCALE, + ID_COLOR_SCHEME, ID_SPECTRAL_SELECTION, #endif ID_DEFAULTS, @@ -223,11 +223,12 @@ void SpectrumPrefs::PopulateOrExchange(ShuttleGui & S) S.Id(ID_FREQUENCY_GAIN).TieNumericTextBox(XXO("High &boost (dB/dec):"), mTempSettings.frequencyGain, 8); + + S.Id(ID_COLOR_SCHEME).TieChoice(XXO("Color Sche&me:"), + mTempSettings.colorScheme, + Msgids( SpectrogramSettings::GetColorSchemeNames() ) ); } S.EndMultiColumn(); - - S.Id(ID_GRAYSCALE).TieCheckBox(XXO("Gra&yscale"), - mTempSettings.isGrayscale); } S.EndStatic(); } @@ -584,7 +585,7 @@ BEGIN_EVENT_TABLE(SpectrumPrefs, PrefsPanel) EVT_TEXT(ID_GAIN, SpectrumPrefs::OnControl) EVT_TEXT(ID_RANGE, SpectrumPrefs::OnControl) EVT_TEXT(ID_FREQUENCY_GAIN, SpectrumPrefs::OnControl) - EVT_CHECKBOX(ID_GRAYSCALE, SpectrumPrefs::OnControl) + EVT_CHOICE(ID_COLOR_SCHEME, SpectrumPrefs::OnControl) EVT_CHECKBOX(ID_SPECTRAL_SELECTION, SpectrumPrefs::OnControl) END_EVENT_TABLE() diff --git a/src/tracks/playabletrack/wavetrack/ui/SpectrumView.cpp b/src/tracks/playabletrack/wavetrack/ui/SpectrumView.cpp index bb0204d61..8b29d9c99 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SpectrumView.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/SpectrumView.cpp @@ -215,7 +215,7 @@ void DrawClipSpectrum(TrackPanelDrawingContext &context, freqHi = selectedRegion.f1(); #endif - const bool &isGrayscale = settings.isGrayscale; + const int &colorScheme = settings.colorScheme; const int &range = settings.range; const int &gain = settings.gain; @@ -576,7 +576,7 @@ void DrawClipSpectrum(TrackPanelDrawingContext &context, : clip->mSpecPxCache->values[correctedX * hiddenMid.height + yy]; unsigned char rv, gv, bv; - GetColorGradient(value, selected, isGrayscale, &rv, &gv, &bv); + GetColorGradient(value, selected, colorScheme, &rv, &gv, &bv); #ifdef EXPERIMENTAL_FFT_Y_GRID if (fftYGrid && yGrid[yy]) { From e135bcf16fd3bcd5e967a0ca3990be8469ff01fa Mon Sep 17 00:00:00 2001 From: dofuuz Date: Thu, 3 Jun 2021 22:42:34 +0900 Subject: [PATCH 3/5] Some more cleanup for new spectrogram color scheme - Add some assertion - Define spectrogram color scheme name using the two-argument constructor. (i18n) --- src/AColorResources.h | 5 +++-- src/CMakeLists.txt | 1 + src/prefs/SpectrogramSettings.cpp | 13 +++++++++---- src/prefs/SpectrogramSettings.h | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/AColorResources.h b/src/AColorResources.h index c23e2f93a..fb6a94b16 100644 --- a/src/AColorResources.h +++ b/src/AColorResources.h @@ -2,8 +2,9 @@ Audacity: A Digital Audio Editor - AColorResources.h - + @file AColorResources.h + @brief RGB data of 'Color (New)' spectrogram color scheme + Colormap generated by using gen_wheel.py at https://github.com/dofuuz/audacity-colormap diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b35934665..3a71d5a6b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -75,6 +75,7 @@ list( APPEND SOURCES PRIVATE AColor.cpp AColor.h + AColorResources.h ActiveProjects.cpp ActiveProjects.h AboutDialog.cpp diff --git a/src/prefs/SpectrogramSettings.cpp b/src/prefs/SpectrogramSettings.cpp index b97945d44..7f3e330e2 100644 --- a/src/prefs/SpectrogramSettings.cpp +++ b/src/prefs/SpectrogramSettings.cpp @@ -16,6 +16,7 @@ Paul Licameli #include "SpectrogramSettings.h" +#include "../AColor.h" #include "../NumberScale.h" #include @@ -160,14 +161,18 @@ const EnumValueSymbols &SpectrogramSettings::GetColorSchemeNames() static const EnumValueSymbols result{ // Keep in correspondence with enum SpectrogramSettings::ColorScheme: /* i18n-hint: New color scheme for spectrograms */ - XO("Color (New)") , + { wxT("SpecColorNew"), XO("Color (New)") }, /* i18n-hint: color scheme from theme for spectrograms */ - XO("Color (from Theme)") , + { wxT("SpecColorTheme"), XO("Color (from Theme)") }, /* i18n-hint: grayscale color scheme for spectrograms */ - XO("Grayscale") , + { wxT("SpecGrayscale"), XO("Grayscale") }, /* i18n-hint: inverse grayscale color scheme for spectrograms */ - XO("Inv. Grayscale") , + { wxT("SpecInvGrayscale"), XO("Inv. Grayscale") }, }; + + wxASSERT(csNumColorScheme == result.size()); + static_assert(csNumColorScheme == AColor::colorSchemes, "Broken correspondence"); + return result; } diff --git a/src/prefs/SpectrogramSettings.h b/src/prefs/SpectrogramSettings.h index 5a486ccc9..a3545c928 100644 --- a/src/prefs/SpectrogramSettings.h +++ b/src/prefs/SpectrogramSettings.h @@ -131,7 +131,7 @@ public: typedef int ColorScheme; enum ColorSchemeValues : int { - // Keep in correspondence with AColor::gradient_pre + // Keep in correspondence with AColor::colorSchemes, AColor::gradient_pre csColorNew = 0, csColorTheme, csGrayscale, From e9f0590c287d4e5ec1e444b681471b6e255fa42f Mon Sep 17 00:00:00 2001 From: dofuuz Date: Sat, 5 Jun 2021 00:10:18 +0900 Subject: [PATCH 4/5] Add spectrogram preference migration from old 'Grayscale' checkbox to new 'Color Scheme' choice --- src/commands/SetTrackInfoCommand.cpp | 2 +- src/prefs/SpectrogramSettings.cpp | 32 ++++++++++++++++++++++------ src/prefs/SpectrogramSettings.h | 9 ++++++-- src/prefs/SpectrumPrefs.cpp | 2 +- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/commands/SetTrackInfoCommand.cpp b/src/commands/SetTrackInfoCommand.cpp index 4119facab..abe1363dc 100644 --- a/src/commands/SetTrackInfoCommand.cpp +++ b/src/commands/SetTrackInfoCommand.cpp @@ -445,7 +445,7 @@ bool SetTrackVisualsCommand::ApplyInner(const CommandContext & context, Track * wt->GetSpectrogramSettings().spectralSelection = bSpectralSelect; } if (wt && bHasSpecColorScheme) { - wt->GetSpectrogramSettings().colorScheme = mSpecColorScheme; + wt->GetSpectrogramSettings().colorScheme = (SpectrogramSettings::ColorScheme)mSpecColorScheme; } return true; diff --git a/src/prefs/SpectrogramSettings.cpp b/src/prefs/SpectrogramSettings.cpp index 7f3e330e2..74521c8cf 100644 --- a/src/prefs/SpectrogramSettings.cpp +++ b/src/prefs/SpectrogramSettings.cpp @@ -176,6 +176,26 @@ const EnumValueSymbols &SpectrogramSettings::GetColorSchemeNames() return result; } + +void SpectrogramSettings::ColorSchemeEnumSetting::Migrate(wxString &value) +{ + // Migrate old grayscale option to Color scheme choice + bool isGrayscale = (gPrefs->Read(wxT("/Spectrum/Grayscale"), 0L) != 0); + if (isGrayscale && !gPrefs->Read(wxT("/Spectrum/ColorScheme"), &value)) { + value = GetColorSchemeNames().at(csInvGrayscale).Internal(); + Write(value); + gPrefs->Flush(); + } +} + +SpectrogramSettings::ColorSchemeEnumSetting SpectrogramSettings::colorSchemeSetting{ + wxT("/Spectrum/ColorScheme"), + GetColorSchemeNames(), + csColorNew, // default to Color(New) + { csColorNew, csColorTheme, csGrayscale, csInvGrayscale }, +}; + + //static const TranslatableStrings &SpectrogramSettings::GetAlgorithmNames() { @@ -249,7 +269,9 @@ bool SpectrogramSettings::Validate(bool quiet) ScaleType(std::max(0, std::min((int)(SpectrogramSettings::stNumScaleTypes) - 1, (int)(scaleType)))); - colorScheme = std::max(0, std::min(csNumColorScheme-1, colorScheme)); + colorScheme = ColorScheme( + std::max(0, std::min(csNumColorScheme-1, colorScheme)) + ); algorithm = Algorithm( std::max(0, std::min((int)(algNumAlgorithms) - 1, (int)(algorithm))) ); @@ -277,7 +299,7 @@ void SpectrogramSettings::LoadPrefs() gPrefs->Read(wxT("/Spectrum/WindowType"), &windowType, eWinFuncHann); - colorScheme = ColorScheme(gPrefs->Read(wxT("/Spectrum/ColorScheme"), 0L)); + colorScheme = colorSchemeSetting.ReadEnum(); scaleType = ScaleType(gPrefs->Read(wxT("/Spectrum/ScaleType"), 0L)); @@ -325,7 +347,7 @@ void SpectrogramSettings::SavePrefs() gPrefs->Write(wxT("/Spectrum/WindowType"), windowType); - gPrefs->Write(wxT("/Spectrum/ColorScheme"), (int) colorScheme); + colorSchemeSetting.WriteEnum(colorScheme); gPrefs->Write(wxT("/Spectrum/ScaleType"), (int) scaleType); @@ -385,9 +407,7 @@ void SpectrogramSettings::UpdatePrefs() } if (colorScheme == defaults().colorScheme) { - int temp; - gPrefs->Read(wxT("/Spectrum/ColorScheme"), &temp, 0L); - colorScheme = ColorScheme(temp); + colorScheme = colorSchemeSetting.ReadEnum(); } if (scaleType == defaults().scaleType) { diff --git a/src/prefs/SpectrogramSettings.h b/src/prefs/SpectrogramSettings.h index a3545c928..5eedd5f0f 100644 --- a/src/prefs/SpectrogramSettings.h +++ b/src/prefs/SpectrogramSettings.h @@ -129,8 +129,7 @@ public: size_t GetFFTLength() const; // window size (times zero padding, if STFT) size_t NBins() const; - typedef int ColorScheme; - enum ColorSchemeValues : int { + enum ColorScheme : int { // Keep in correspondence with AColor::colorSchemes, AColor::gradient_pre csColorNew = 0, csColorTheme, @@ -141,6 +140,12 @@ public: }; ColorScheme colorScheme; + class ColorSchemeEnumSetting : public EnumSetting< ColorScheme > { + using EnumSetting< ColorScheme >::EnumSetting; + void Migrate(wxString &value) override; + }; + static ColorSchemeEnumSetting colorSchemeSetting; + ScaleType scaleType; #ifndef SPECTRAL_SELECTION_GLOBAL_SWITCH diff --git a/src/prefs/SpectrumPrefs.cpp b/src/prefs/SpectrumPrefs.cpp index e78f39279..a66d974cb 100644 --- a/src/prefs/SpectrumPrefs.cpp +++ b/src/prefs/SpectrumPrefs.cpp @@ -225,7 +225,7 @@ void SpectrumPrefs::PopulateOrExchange(ShuttleGui & S) 8); S.Id(ID_COLOR_SCHEME).TieChoice(XXO("Color Sche&me:"), - mTempSettings.colorScheme, + (int&)mTempSettings.colorScheme, Msgids( SpectrogramSettings::GetColorSchemeNames() ) ); } S.EndMultiColumn(); From 060885c4f6237708711ec00d2dc333ad11b4e03a Mon Sep 17 00:00:00 2001 From: dofuuz Date: Fri, 11 Jun 2021 11:59:50 +0900 Subject: [PATCH 5/5] Changes to Spectrogram color scheme user-visible strings because of string freeze --- libraries/lib-strings/FutureStrings.h | 11 ----------- src/commands/SetTrackInfoCommand.cpp | 2 +- src/prefs/SpectrogramSettings.cpp | 14 +++++++------- src/prefs/SpectrumPrefs.cpp | 3 ++- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/libraries/lib-strings/FutureStrings.h b/libraries/lib-strings/FutureStrings.h index 7980eeb92..3c4fe3fa3 100644 --- a/libraries/lib-strings/FutureStrings.h +++ b/libraries/lib-strings/FutureStrings.h @@ -111,17 +111,6 @@ XO("Unknown error"), XO("Failed to send crash report"), -// i18n-hint Scheme refers to a color scheme for spectrogram colors -XC("Sche&me", "spectrum prefs"), -// i18n-hint Choice of spectrogram colors -XC("Color (default)", "spectrum prefs"), -// i18n-hint Choice of spectrogram colors -XC("Color (classic)", "spectrum prefs"), -// i18n-hint Choice of spectrogram colors -XC("Grayscale", "spectrum prefs"), -// i18n-hint Choice of spectrogram colors -XC("Inverse grayscale", "spectrum prefs"), - // Update version dialog XC("Update Audacity", "update dialog"), XC("&Skip", "update dialog"), diff --git a/src/commands/SetTrackInfoCommand.cpp b/src/commands/SetTrackInfoCommand.cpp index abe1363dc..4b5f8e7ce 100644 --- a/src/commands/SetTrackInfoCommand.cpp +++ b/src/commands/SetTrackInfoCommand.cpp @@ -364,7 +364,7 @@ void SetTrackVisualsCommand::PopulateOrExchange(ShuttleGui & S) { S.SetStretchyCol( 2 ); auto schemes = SpectrogramSettings::GetColorSchemeNames(); - S.Optional( bHasSpecColorScheme).TieChoice( XXO("Spectro. Color scheme:"), mSpecColorScheme, + S.Optional( bHasSpecColorScheme).TieChoice( XC("Sche&me", "spectrum prefs"), mSpecColorScheme, Msgids( schemes.data(), schemes.size() ) ); } S.EndMultiColumn(); diff --git a/src/prefs/SpectrogramSettings.cpp b/src/prefs/SpectrogramSettings.cpp index 74521c8cf..d70d5dd8e 100644 --- a/src/prefs/SpectrogramSettings.cpp +++ b/src/prefs/SpectrogramSettings.cpp @@ -161,13 +161,13 @@ const EnumValueSymbols &SpectrogramSettings::GetColorSchemeNames() static const EnumValueSymbols result{ // Keep in correspondence with enum SpectrogramSettings::ColorScheme: /* i18n-hint: New color scheme for spectrograms */ - { wxT("SpecColorNew"), XO("Color (New)") }, - /* i18n-hint: color scheme from theme for spectrograms */ - { wxT("SpecColorTheme"), XO("Color (from Theme)") }, - /* i18n-hint: grayscale color scheme for spectrograms */ - { wxT("SpecGrayscale"), XO("Grayscale") }, - /* i18n-hint: inverse grayscale color scheme for spectrograms */ - { wxT("SpecInvGrayscale"), XO("Inv. Grayscale") }, + { wxT("SpecColorNew"), XC("Color (default)", "spectrum prefs") }, + /* i18n-hint: Classic color scheme(from theme) for spectrograms */ + { wxT("SpecColorTheme"), XC("Color (classic)", "spectrum prefs") }, + /* i18n-hint: Grayscale color scheme for spectrograms */ + { wxT("SpecGrayscale"), XC("Grayscale", "spectrum prefs") }, + /* i18n-hint: Inverse grayscale color scheme for spectrograms */ + { wxT("SpecInvGrayscale"), XC("Inverse grayscale", "spectrum prefs") }, }; wxASSERT(csNumColorScheme == result.size()); diff --git a/src/prefs/SpectrumPrefs.cpp b/src/prefs/SpectrumPrefs.cpp index a66d974cb..b1b851b11 100644 --- a/src/prefs/SpectrumPrefs.cpp +++ b/src/prefs/SpectrumPrefs.cpp @@ -224,7 +224,8 @@ void SpectrumPrefs::PopulateOrExchange(ShuttleGui & S) mTempSettings.frequencyGain, 8); - S.Id(ID_COLOR_SCHEME).TieChoice(XXO("Color Sche&me:"), + // i18n-hint Scheme refers to a color scheme for spectrogram colors + S.Id(ID_COLOR_SCHEME).TieChoice(XC("Sche&me", "spectrum prefs"), (int&)mTempSettings.colorScheme, Msgids( SpectrogramSettings::GetColorSchemeNames() ) ); }