From 1eedb0c3d49b6c6550ee6d411cd6fb8cfc5c44ed Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Fri, 18 Nov 2011 22:57:36 +0000 Subject: [PATCH] Replace InitIcyBlue_Normal and InitIcyBlue_Selected with a single method which takes an audio rendering style as a parameter Originally committed to SVN as r5883. --- aegisub/src/audio_colorscheme.cpp | 43 +++++++++++++++---------- aegisub/src/audio_colorscheme.h | 7 ++-- aegisub/src/audio_renderer_spectrum.cpp | 5 ++- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/aegisub/src/audio_colorscheme.cpp b/aegisub/src/audio_colorscheme.cpp index 8427dfcf5..273b24d42 100644 --- a/aegisub/src/audio_colorscheme.cpp +++ b/aegisub/src/audio_colorscheme.cpp @@ -41,32 +41,41 @@ #endif #include "audio_colorscheme.h" + +#include "audio_renderer.h" #include "colorspace.h" -void AudioColorScheme::InitIcyBlue_Normal() +#include + +static int lum_icy_normal(float t) { + return std::min(255, (int)(128 * 2 * t)); +} + +static int lum_icy_selected(float t) +{ + return std::min(255, (int)(128 * (3 * t/2 + 0.5))); +} + +void AudioColorScheme::InitIcyBlue(int audio_rendering_style) +{ + int (*lum_func)(float); + switch (static_cast(audio_rendering_style)) + { + case AudioStyle_Normal: lum_func = lum_icy_normal; break; + case AudioStyle_Inactive: lum_func = lum_icy_normal; break; + case AudioStyle_Active: lum_func = lum_icy_normal; break; + case AudioStyle_Selected: lum_func = lum_icy_selected; break; + default: throw agi::InternalError("Unknown audio rendering styling", 0); + } + unsigned char *palptr = palette; for (size_t i = 0; i <= factor; ++i) { float t = (float)i / factor; int H = (int)(255 * (1.5 - t) / 2); int S = (int)(255 * (0.5 + t/2)); - int L = std::min(255, (int)(128 * 2 * t)); - hsl_to_rgb(H, S, L, palptr + 0, palptr + 1, palptr + 2); - palptr += 4; - } -} - - -void AudioColorScheme::InitIcyBlue_Selected() -{ - unsigned char *palptr = palette; - for (size_t i = 0; i <= factor; ++i) - { - float t = (float)i / factor; - int H = (int)(255 * (1.5 - t) / 2); - int S = (int)(255 * (0.5 + t/2)); - int L = std::min(255, (int)(128 * (3 * t/2 + 0.5))); + int L = lum_func(t); hsl_to_rgb(H, S, L, palptr + 0, palptr + 1, palptr + 2); palptr += 4; } diff --git a/aegisub/src/audio_colorscheme.h b/aegisub/src/audio_colorscheme.h index 4285ebc13..789c37c15 100644 --- a/aegisub/src/audio_colorscheme.h +++ b/aegisub/src/audio_colorscheme.h @@ -85,10 +85,9 @@ public: delete[] palette; } - /// @brief Initialise the palette to the Aegisub 2.1 "Icy Blue" scheme (unselected) - void InitIcyBlue_Normal(); - /// @brief Initialise the palette to the Aegisub 2.1 "Icy Blue" scheme (selected) - void InitIcyBlue_Selected(); + /// @brief Initialise the palette to the Aegisub 2.1 "Icy Blue" scheme + /// @param audio_rendering_style AudioRenderingStyle to init this colorscheme for + void InitIcyBlue(int audio_rendering_style); /// @brief Map a floating point value to RGB /// @param val [in] The value to map from diff --git a/aegisub/src/audio_renderer_spectrum.cpp b/aegisub/src/audio_renderer_spectrum.cpp index 04f64679d..020d634d7 100644 --- a/aegisub/src/audio_renderer_spectrum.cpp +++ b/aegisub/src/audio_renderer_spectrum.cpp @@ -127,11 +127,10 @@ AudioSpectrumRenderer::AudioSpectrumRenderer() #endif , audio_scratch(0) { - colors_normal.InitIcyBlue_Normal(); - colors_selected.InitIcyBlue_Selected(); + colors_normal.InitIcyBlue(AudioStyle_Normal); + colors_selected.InitIcyBlue(AudioStyle_Selected); } - AudioSpectrumRenderer::~AudioSpectrumRenderer() { // This sequence will clean up