forked from mia/Aegisub
Add option to disable rendering the sample averages in the waveform renderer
Originally committed to SVN as r6063.
This commit is contained in:
parent
0201b8ea9b
commit
55f8cb3685
5 changed files with 38 additions and 4 deletions
|
@ -1252,6 +1252,7 @@ void AudioDisplay::OnAudioOpen(AudioProvider *provider)
|
||||||
connections.push_back(controller->AddSelectionChangedListener(&AudioDisplay::OnSelectionChanged, this));
|
connections.push_back(controller->AddSelectionChangedListener(&AudioDisplay::OnSelectionChanged, this));
|
||||||
connections.push_back(controller->AddStyleRangesChangedListener(&AudioDisplay::OnStyleRangesChanged, this));
|
connections.push_back(controller->AddStyleRangesChangedListener(&AudioDisplay::OnStyleRangesChanged, this));
|
||||||
connections.push_back(OPT_SUB("Audio/Spectrum", &AudioDisplay::ReloadRenderingSettings, this));
|
connections.push_back(OPT_SUB("Audio/Spectrum", &AudioDisplay::ReloadRenderingSettings, this));
|
||||||
|
connections.push_back(OPT_SUB("Audio/Display/Waveform Style", &AudioDisplay::ReloadRenderingSettings, this));
|
||||||
connections.push_back(OPT_SUB("Colour/Audio Display/Spectrum", &AudioDisplay::ReloadRenderingSettings, this));
|
connections.push_back(OPT_SUB("Colour/Audio Display/Spectrum", &AudioDisplay::ReloadRenderingSettings, this));
|
||||||
connections.push_back(OPT_SUB("Colour/Audio Display/Waveform", &AudioDisplay::ReloadRenderingSettings, this));
|
connections.push_back(OPT_SUB("Colour/Audio Display/Waveform", &AudioDisplay::ReloadRenderingSettings, this));
|
||||||
connections.push_back(OPT_SUB("Audio/Renderer/Spectrum/Quality", &AudioDisplay::ReloadRenderingSettings, this));
|
connections.push_back(OPT_SUB("Audio/Renderer/Spectrum/Quality", &AudioDisplay::ReloadRenderingSettings, this));
|
||||||
|
|
|
@ -48,12 +48,22 @@
|
||||||
#include "block_cache.h"
|
#include "block_cache.h"
|
||||||
#include "colorspace.h"
|
#include "colorspace.h"
|
||||||
#include "include/aegisub/audio_provider.h"
|
#include "include/aegisub/audio_provider.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/// Only render the peaks
|
||||||
|
Waveform_MaxOnly = 0,
|
||||||
|
/// Render the peaks and averages
|
||||||
|
Waveform_MaxAvg,
|
||||||
|
Waveform_Continuous
|
||||||
|
};
|
||||||
|
|
||||||
AudioWaveformRenderer::AudioWaveformRenderer(std::string const& color_scheme_name)
|
AudioWaveformRenderer::AudioWaveformRenderer(std::string const& color_scheme_name)
|
||||||
: colors_normal(new AudioColorScheme(6, color_scheme_name, AudioStyle_Normal))
|
: colors_normal(new AudioColorScheme(6, color_scheme_name, AudioStyle_Normal))
|
||||||
, colors_selected(new AudioColorScheme(6, color_scheme_name, AudioStyle_Selected))
|
, colors_selected(new AudioColorScheme(6, color_scheme_name, AudioStyle_Selected))
|
||||||
, colors_inactive(new AudioColorScheme(6, color_scheme_name, AudioStyle_Inactive))
|
, colors_inactive(new AudioColorScheme(6, color_scheme_name, AudioStyle_Inactive))
|
||||||
, audio_buffer(0)
|
, audio_buffer(0)
|
||||||
|
, render_averages(OPT_GET("Audio/Display/Waveform Style")->GetInt() == Waveform_MaxAvg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,12 +133,18 @@ void AudioWaveformRenderer::Render(wxBitmap &bmp, int start, AudioRenderingStyle
|
||||||
|
|
||||||
dc.SetPen(pen_peaks);
|
dc.SetPen(pen_peaks);
|
||||||
dc.DrawLine(x, midpoint - peak_max, x, midpoint - peak_min);
|
dc.DrawLine(x, midpoint - peak_max, x, midpoint - peak_min);
|
||||||
dc.SetPen(pen_avgs);
|
if (render_averages) {
|
||||||
dc.DrawLine(x, midpoint - avg_max, x, midpoint - avg_min);
|
dc.SetPen(pen_avgs);
|
||||||
|
dc.DrawLine(x, midpoint - avg_max, x, midpoint - avg_min);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Horizontal zero-point line
|
// Horizontal zero-point line
|
||||||
dc.SetPen(wxPen(pal->get(1.0f)));
|
if (render_averages)
|
||||||
|
dc.SetPen(wxPen(pal->get(1.0f)));
|
||||||
|
else
|
||||||
|
dc.SetPen(pen_peaks);
|
||||||
|
|
||||||
dc.DrawLine(0, midpoint, rect.width, midpoint);
|
dc.DrawLine(0, midpoint, rect.width, midpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,3 +189,10 @@ const AudioColorScheme *AudioWaveformRenderer::GetColorScheme(AudioRenderingStyl
|
||||||
default: return colors_normal.get();
|
default: return colors_normal.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxArrayString AudioWaveformRenderer::GetWaveformStyles() {
|
||||||
|
wxArrayString ret;
|
||||||
|
ret.push_back(_("Maximum"));
|
||||||
|
ret.push_back(_("Maximum + Average"));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -58,6 +58,9 @@ class AudioWaveformRenderer : public AudioRendererBitmapProvider {
|
||||||
/// Pre-allocated buffer for audio fetched from provider
|
/// Pre-allocated buffer for audio fetched from provider
|
||||||
char *audio_buffer;
|
char *audio_buffer;
|
||||||
|
|
||||||
|
/// Whether to render max+avg or just max
|
||||||
|
bool render_averages;
|
||||||
|
|
||||||
/// Get the color scheme for a rendering style
|
/// Get the color scheme for a rendering style
|
||||||
const AudioColorScheme *GetColorScheme(AudioRenderingStyle style) const;
|
const AudioColorScheme *GetColorScheme(AudioRenderingStyle style) const;
|
||||||
|
|
||||||
|
@ -86,4 +89,7 @@ public:
|
||||||
///
|
///
|
||||||
/// Does nothing for waveform renderer, since it does not have a backend cache
|
/// Does nothing for waveform renderer, since it does not have a backend cache
|
||||||
void AgeCache(size_t max_size) { }
|
void AgeCache(size_t max_size) { }
|
||||||
|
|
||||||
|
/// Get a list of waveform rendering modes
|
||||||
|
static wxArrayString GetWaveformStyles();
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,7 +49,8 @@
|
||||||
"Snap" : {
|
"Snap" : {
|
||||||
"Keyframes" : false,
|
"Keyframes" : false,
|
||||||
"Other Lines" : false
|
"Other Lines" : false
|
||||||
}
|
},
|
||||||
|
"Waveform Style" : 1
|
||||||
},
|
},
|
||||||
"Downmixer" : "ConvertToMono",
|
"Downmixer" : "ConvertToMono",
|
||||||
"Grab Times on Select" : true,
|
"Grab Times on Select" : true,
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
|
|
||||||
#include "preferences.h"
|
#include "preferences.h"
|
||||||
|
|
||||||
|
#include "audio_renderer_waveform.h"
|
||||||
#include "colour_button.h"
|
#include "colour_button.h"
|
||||||
#include "command/command.h"
|
#include "command/command.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
@ -167,6 +168,8 @@ Audio::Audio(wxTreebook *book, Preferences *parent): OptionPage(book, parent, _(
|
||||||
OptionAdd(display, _("Keyframes"), "Audio/Display/Draw/Keyframes in Dialogue Mode");
|
OptionAdd(display, _("Keyframes"), "Audio/Display/Draw/Keyframes in Dialogue Mode");
|
||||||
OptionAdd(display, _("Karaoke keyframes"), "Audio/Display/Draw/Keyframes in Karaoke Mode");
|
OptionAdd(display, _("Karaoke keyframes"), "Audio/Display/Draw/Keyframes in Karaoke Mode");
|
||||||
OptionAdd(display, _("Video position"), "Audio/Display/Draw/Video Position");
|
OptionAdd(display, _("Video position"), "Audio/Display/Draw/Video Position");
|
||||||
|
CellSkip(display);
|
||||||
|
OptionChoice(display, _("Waveform Style"), AudioWaveformRenderer::GetWaveformStyles(), "Audio/Display/Waveform Style");
|
||||||
|
|
||||||
wxFlexGridSizer *color = PageSizer(_("Color Schemes"));
|
wxFlexGridSizer *color = PageSizer(_("Color Schemes"));
|
||||||
wxArrayString schemes = vec_to_arrstr(OPT_GET("Audio/Colour Schemes")->GetListString());
|
wxArrayString schemes = vec_to_arrstr(OPT_GET("Audio/Colour Schemes")->GetListString());
|
||||||
|
|
Loading…
Reference in a new issue