#include <ardour/audiosource.h>
#include <ardour/audio_diskstream.h>
#include <pbd/memento_command.h>
+#include <pbd/stacktrace.h>
#include "streamview.h"
#include "audio_region_view.h"
gain_line->show ();
}
- reset_width_dependent_items ((double) _region->length() / samples_per_unit);
-
gain_line->reset ();
set_height (trackview.height);
{
reset_fade_out_shape ();
}
-
-void
-AudioRegionView::set_fade_in_active (bool yn)
-{
- audio_region()->set_fade_in_active (yn);
-}
-
-void
-AudioRegionView::set_fade_out_active (bool yn)
-{
- audio_region()->set_fade_out_active (yn);
-}
-
void
AudioRegionView::fade_in_active_changed ()
{
// trackview.editor.ensure_float (*editor);
}
- editor->show_all ();
- editor->get_window()->raise();
+ editor->present ();
+ editor->show_all();
}
void
for (uint32_t n = 0; n < nchans; ++n) {
tmp_waves.push_back (0);
}
-
+
for (uint32_t n = 0; n < nchans; ++n) {
if (n >= audio_region()->n_channels()) {
wave->property_amplitude_above_axis() = _amplitude_above_axis;
wave->property_wave_color() = _region->muted() ? color_map[cMutedWaveForm] : color_map[cWaveForm];
wave->property_region_start() = _region->start();
+ wave->property_rectified() = (bool) (_flags & WaveformRectified);
+ wave->property_logscaled() = (bool) (_flags & WaveformLogScaled);
if (!(_flags & WaveformVisible)) {
wave->hide();
break;
}
}
-
+
if (n == nwaves && waves.empty()) {
/* all waves are ready */
tmp_waves.resize(nwaves);
waves = tmp_waves;
tmp_waves.clear ();
+ /* all waves created, don't hook into peaks ready anymore */
+ data_ready_connection.disconnect ();
+
if (!zero_line) {
zero_line = new ArdourCanvas::SimpleLine (*group);
zero_line->property_x1() = (gdouble) 1.0;
AudioRegionView::peaks_ready_handler (uint32_t which)
{
Gtkmm2ext::UI::instance()->call_slot (bind (mem_fun(*this, &AudioRegionView::create_one_wave), which, false));
-
- if (!waves.empty()) {
- /* all waves created, don't hook into peaks ready anymore */
- data_ready_connection.disconnect ();
- }
}
void
trackview.session().begin_reversible_command (_("add gain control point"));
XMLNode &before = audio_region()->envelope().get_state();
-
if (!audio_region()->envelope_active()) {
- XMLNode &before = audio_region()->get_state();
+ XMLNode ®ion_before = audio_region()->get_state();
audio_region()->set_envelope_active(true);
- XMLNode &after = audio_region()->get_state();
- trackview.session().add_command (new MementoCommand<AudioRegion>(*(audio_region().get()), &before, &after));
+ XMLNode ®ion_after = audio_region()->get_state();
+ trackview.session().add_command (new MementoCommand<AudioRegion>(*(audio_region().get()), ®ion_before, ®ion_after));
}
audio_region()->envelope().add (fx, y);
node->add_property ("waveform-visible", (_flags & WaveformVisible) ? "yes" : "no");
node->add_property ("envelope-visible", (_flags & EnvelopeVisible) ? "yes" : "no");
+ node->add_property ("waveform-rectified", (_flags & WaveformRectified) ? "yes" : "no");
+ node->add_property ("waveform-logscaled", (_flags & WaveformLogScaled) ? "yes" : "no");
_region->add_extra_xml (*node);
}
_flags |= EnvelopeVisible;
}
}
+
+ if ((prop = node->property ("waveform-rectified")) != 0) {
+ if (prop->value() == "yes") {
+ _flags |= WaveformRectified;
+ }
+ }
+
+ if ((prop = node->property ("waveform-logscaled")) != 0) {
+ if (prop->value() == "yes") {
+ _flags |= WaveformLogScaled;
+ }
+ }
}
void
} else {
_flags &= ~WaveformRectified;
}
+ store_flags ();
}
}
+void
+AudioRegionView::set_waveform_scale (WaveformScale scale)
+{
+ bool yn = (scale == LogWaveform);
+
+ if (yn != (bool) (_flags & WaveformLogScaled)) {
+ for (vector<WaveView *>::iterator wave = waves.begin(); wave != waves.end() ; ++wave) {
+ (*wave)->property_logscaled() = yn;
+ }
+
+ if (yn) {
+ _flags |= WaveformLogScaled;
+ } else {
+ _flags &= ~WaveformLogScaled;
+ }
+ store_flags ();
+ }
+}
+
+
GhostRegion*
AudioRegionView::add_ghost (AutomationTimeAxisView& atv)
{