#include <gtkmm/image.h>
#include <gtkmm/scrolledwindow.h>
-#include <libgnomecanvasmm/line.h>
#include "pbd/memento_command.h"
#include "ardour/automation_list.h"
#include "ardour/audiosource.h"
#include "ardour/region_factory.h"
#include "ardour/profile.h"
+#include "ardour/crossfade_binder.h"
#include <gtkmm2ext/gtk_ui.h>
+#include "canvas/rectangle.h"
+#include "canvas/wave_view.h"
+#include "canvas/line.h"
+#include "canvas/polygon.h"
+
#include "ardour_ui.h"
#include "crossfade_edit.h"
#include "rgb_macros.h"
#include "keyboard.h"
#include "utils.h"
#include "gui_thread.h"
-#include "canvas_impl.h"
-#include "simplerect.h"
-#include "waveview.h"
#include "actions.h"
using namespace std;
select_out_button (_("Fade Out")),
_peaks_ready_connection (0)
-
+
{
set_session (s);
set_wmclass (X_("ardour_automationedit"), PROGRAM_NAME);
set_name ("CrossfadeEditWindow");
- set_position (Gtk::WIN_POS_MOUSE);
add_accel_group (ActionManager::ui_manager->get_accel_group());
point_grabbed = false;
toplevel = 0;
- canvas = new ArdourCanvas::CanvasAA ();
+ canvas = new ArdourCanvas::GtkCanvas ();
canvas->signal_size_allocate().connect (sigc::mem_fun(*this, &CrossfadeEditor::canvas_allocation));
canvas->set_size_request (425, 200);
- toplevel = new ArdourCanvas::SimpleRect (*(canvas->root()));
- toplevel->property_x1() = 0.0;
- toplevel->property_y1() = 0.0;
- toplevel->property_x2() = 10.0;
- toplevel->property_y2() = 10.0;
- toplevel->property_fill() = true;
- toplevel->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorBase.get();
- toplevel->property_outline_pixels() = 0;
- toplevel->signal_event().connect (sigc::mem_fun (*this, &CrossfadeEditor::canvas_event));
+ toplevel = new ArdourCanvas::Rectangle (canvas->root());
+ toplevel->set (ArdourCanvas::Rect (0, 0, 10, 10));
+ toplevel->set_fill (true);
+ toplevel->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorBase());
+ toplevel->set_outline (false);
+ toplevel->Event.connect (sigc::mem_fun (*this, &CrossfadeEditor::canvas_event));
- fade[Out].line = new ArdourCanvas::Line (*(canvas->root()));
- fade[Out].line->property_width_pixels() = 1;
- fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
+ fade[Out].line = new ArdourCanvas::PolyLine (canvas->root());
+ fade[Out].line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorLine());
- fade[Out].shading = new ArdourCanvas::Polygon (*(canvas->root()));
- fade[Out].shading->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLineShading.get();
+ fade[Out].shading = new ArdourCanvas::Polygon (canvas->root());
+ fade[Out].shading->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorLineShading());
- fade[In].line = new ArdourCanvas::Line (*(canvas->root()));
- fade[In].line->property_width_pixels() = 1;
- fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
+ fade[In].line = new ArdourCanvas::PolyLine (canvas->root());
+ fade[In].line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorLine());
- fade[In].shading = new ArdourCanvas::Polygon (*(canvas->root()));
- fade[In].shading->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLineShading.get();
+ fade[In].shading = new ArdourCanvas::Polygon (canvas->root());
+ fade[In].shading->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorLineShading());
- fade[In].shading->signal_event().connect (sigc::mem_fun (*this, &CrossfadeEditor::canvas_event));
- fade[In].line->signal_event().connect (sigc::mem_fun (*this, &CrossfadeEditor::curve_event));
- fade[Out].shading->signal_event().connect (sigc::mem_fun (*this, &CrossfadeEditor::canvas_event));
- fade[Out].line->signal_event().connect (sigc::mem_fun (*this, &CrossfadeEditor::curve_event));
+ fade[In].shading->Event.connect (sigc::mem_fun (*this, &CrossfadeEditor::canvas_event));
+ fade[In].line->Event.connect (sigc::mem_fun (*this, &CrossfadeEditor::curve_event));
+ fade[Out].shading->Event.connect (sigc::mem_fun (*this, &CrossfadeEditor::canvas_event));
+ fade[Out].line->Event.connect (sigc::mem_fun (*this, &CrossfadeEditor::curve_event));
select_in_button.set_name (X_("CrossfadeEditCurveButton"));
select_out_button.set_name (X_("CrossfadeEditCurveButton"));
curve_select_clicked (In);
- xfade->PropertyChanged.connect (state_connection, invalidator (*this), ui_bind (&CrossfadeEditor::xfade_changed, this, _1), gui_context());
+ xfade->PropertyChanged.connect (state_connection, invalidator (*this), boost::bind (&CrossfadeEditor::xfade_changed, this, _1), gui_context());
- _session->AuditionActive.connect (_session_connections, invalidator (*this), ui_bind (&CrossfadeEditor::audition_state_changed, this, _1), gui_context());
+ _session->AuditionActive.connect (_session_connections, invalidator (*this), boost::bind (&CrossfadeEditor::audition_state_changed, this, _1), gui_context());
show_all_children();
}
if (point == fade[current].points.front() || point == fade[current].points.back()) {
new_x = point->x;
- new_y = point->y;
+ new_y = point->y;
} else {
new_x = (event->motion.x - canvas_border)/effective_width();
- new_y = 1.0 - ((event->motion.y - canvas_border)/effective_height());
+ new_y = 1.0 - ((event->motion.y - canvas_border)/effective_height());
}
point->move_to (x_coordinate (new_x), y_coordinate (new_y),
{
Point* p = new Point;
- p->box = new ArdourCanvas::SimpleRect (*(canvas->root()));
- p->box->property_fill() = true;
- p->box->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorPointFill.get();
- p->box->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorPointOutline.get();
- p->box->property_outline_pixels() = 1;
+ p->box = new ArdourCanvas::Rectangle (canvas->root());
+ p->box->set_fill (true);
+ p->box->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorPointFill());
+ p->box->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorPointOutline());
p->curve = fade[current].line;
- p->box->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &CrossfadeEditor::point_event), p));
+ p->box->Event.connect (sigc::bind (sigc::mem_fun (*this, &CrossfadeEditor::point_event), p));
return p;
}
void
CrossfadeEditor::Point::move_to (double nx, double ny, double xfract, double yfract)
{
- if ( xfract < 0.0 ) {
- xfract = 0.0;
- } else if ( xfract > 1.0 ) {
- xfract = 1.0;
- }
-
- if ( yfract < 0.0 ) {
- yfract = 0.0;
- } else if ( yfract > 1.0 ) {
- yfract = 1.0;
- }
+ if ( xfract < 0.0 ) {
+ xfract = 0.0;
+ } else if ( xfract > 1.0 ) {
+ xfract = 1.0;
+ }
+
+ if ( yfract < 0.0 ) {
+ yfract = 0.0;
+ } else if ( yfract > 1.0 ) {
+ yfract = 1.0;
+ }
const double half_size = rint(size/2.0);
double x1 = nx - half_size;
double x2 = nx + half_size;
- box->property_x1() = x1;
- box->property_x2() = x2;
-
- box->property_y1() = ny - half_size;
- box->property_y2() = ny + half_size;
+ box->set (ArdourCanvas::Rect (x1, ny - half_size, x2, ny + half_size));
x = xfract;
y = yfract;
CrossfadeEditor::canvas_allocation (Gtk::Allocation& /*alloc*/)
{
if (toplevel) {
- toplevel->property_x1() = 0.0;
- toplevel->property_y1() = 0.0;
- toplevel->property_x2() = (double) canvas->get_allocation().get_width() + canvas_border;
- toplevel->property_y2() = (double) canvas->get_allocation().get_height() + canvas_border;
+ toplevel->set (
+ ArdourCanvas::Rect (
+ 0,
+ 0,
+ canvas->get_allocation().get_width() + canvas_border,
+ canvas->get_allocation().get_height() + canvas_border
+ )
+ );
}
- canvas->set_scroll_region (0.0, 0.0,
- canvas->get_allocation().get_width(),
- canvas->get_allocation().get_height());
+ /* XXX: CANVAS */
+// canvas->set_scroll_region (0.0, 0.0,
+// canvas->get_allocation().get_width(),
+// canvas->get_allocation().get_height());
Point* end = make_point ();
PointSorter cmp;
yoff = n * ht;
- (*i)->property_y() = yoff;
- (*i)->property_height() = ht;
- (*i)->property_samples_per_unit() = spu;
+ (*i)->set_y_position (yoff);
+ (*i)->set_height (ht);
+ (*i)->set_samples_per_pixel (spu);
}
ht = canvas->get_allocation().get_height() / xfade->out()->n_channels();
yoff = n * ht;
- (*i)->property_y() = yoff;
- (*i)->property_height() = ht;
- (*i)->property_samples_per_unit() = spu;
+ (*i)->set_y_position (yoff);
+ (*i)->set_height (ht);
+ (*i)->set_samples_per_pixel (spu);
}
}
return;
}
- nframes_t len = xfade->length ();
+ framecnt_t len = xfade->length ();
fade[current].normative_curve.clear ();
fade[current].gain_curve.clear ();
ArdourCanvas::Points spts;
while (pts.size() < npoints) {
- pts.push_back (Gnome::Art::Point (0,0));
+ pts.push_back (ArdourCanvas::Duple (0,0));
}
while (spts.size() < npoints + 3) {
- spts.push_back (Gnome::Art::Point (0,0));
+ spts.push_back (ArdourCanvas::Duple (0,0));
}
/* the shade coordinates *MUST* be in anti-clockwise order.
/* lower left */
- spts[0].set_x (canvas_border);
- spts[0].set_y (effective_height() + canvas_border);
+ spts[0].x = canvas_border;
+ spts[0].y = effective_height() + canvas_border;
/* lower right */
- spts[1].set_x (effective_width() + canvas_border);
- spts[1].set_y (effective_height() + canvas_border);
+ spts[1].x = effective_width() + canvas_border;
+ spts[1].y = effective_height() + canvas_border;
/* upper right */
- spts[2].set_x (effective_width() + canvas_border);
- spts[2].set_y (canvas_border);
+ spts[2].x = effective_width() + canvas_border;
+ spts[2].y = canvas_border;
} else {
/* upper left */
- spts[0].set_x (canvas_border);
- spts[0].set_y (canvas_border);
+ spts[0].x = canvas_border;
+ spts[0].y = canvas_border;
/* lower left */
- spts[1].set_x (canvas_border);
- spts[1].set_y (effective_height() + canvas_border);
+ spts[1].x = canvas_border;
+ spts[1].y = effective_height() + canvas_border;
/* lower right */
- spts[2].set_x (effective_width() + canvas_border);
- spts[2].set_y (effective_height() + canvas_border);
+ spts[2].x = effective_width() + canvas_border;
+ spts[2].y = effective_height() + canvas_border;
}
double y = vec[i];
- pts[i].set_x (canvas_border + i);
- pts[i].set_y (y_coordinate (y));
+ pts[i].x = canvas_border + i;
+ pts[i].y = y_coordinate (y);
- spts[last_spt - i].set_x (canvas_border + i);
- spts[last_spt - i].set_y (pts[i].get_y());
+ spts[last_spt - i].x = canvas_border + i;
+ spts[last_spt - i].y = pts[i].y;
}
- fade[current].line->property_points() = pts;
- fade[current].shading->property_points() = spts;
+ fade[current].line->set (pts);
+ fade[current].shading->set (pts);
for (vector<ArdourCanvas::WaveView*>::iterator i = fade[current].waves.begin(); i != fade[current].waves.end(); ++i) {
(*i)->property_gain_src() = static_cast<Evoral::Curve*>(&fade[current].gain_curve.curve());
_apply_to (xfade);
- _session->add_command (new MementoCommand<Crossfade> (*xfade.get(), &before, &xfade->get_state()));
+ _session->add_command (
+ new MementoCommand<Crossfade> (
+ new ARDOUR::CrossfadeBinder (_session->playlists, xfade->id ()),
+ &before, &xfade->get_state ()
+ )
+ );
+
_session->commit_reversible_command ();
}
double firstx = (*in.begin())->when;
double endx = (*the_end)->when;
- double miny = in.get_min_y ();
- double maxy = in.get_max_y ();
in.freeze ();
in.clear ();
for (list<Point*>::iterator i = fade[In].points.begin(); i != fade[In].points.end(); ++i) {
double when = firstx + ((*i)->x * (endx - firstx));
- double value = (*i)->y; // miny + ((*i)->y * (maxy - miny));
+ double value = (*i)->y;
in.add (when, value);
}
firstx = (*out.begin())->when;
endx = (*the_end)->when;
- miny = out.get_min_y ();
- maxy = out.get_max_y ();
out.freeze ();
out.clear ();
for (list<Point*>::iterator i = fade[Out].points.begin(); i != fade[Out].points.end(); ++i) {
double when = firstx + ((*i)->x * (endx - firstx));
- double value = (*i)->y; // miny + ((*i)->y * (maxy - miny));
+ double value = (*i)->y;
out.add (when, value);
}
set (xfade->fade_in(), In);
set (xfade->fade_out(), Out);
- curve_select_clicked (current);
+ curve_select_clicked (current);
}
void
/* FADE IN */
- p = new Preset ("Linear (-6dB)", "crossfade-in-linear");
+ p = new Preset ("Linear (-6dB)", "fadein-linear");
p->push_back (PresetPoint (0, 0));
p->push_back (PresetPoint (0.000000, 0.000000));
p->push_back (PresetPoint (0.166667, 0.166366));
p->push_back (PresetPoint (1.000000, 1.000000));
fade_in_presets->push_back (p);
- p = new Preset ("S(1)-curve", "crossfade-in-S1");
+ p = new Preset ("S(1)-curve", "fadein-S1");
p->push_back (PresetPoint (0, 0));
p->push_back (PresetPoint (0.1, 0.01));
p->push_back (PresetPoint (0.2, 0.03));
p->push_back (PresetPoint (1, 1));
fade_in_presets->push_back (p);
- p = new Preset ("S(2)-curve", "crossfade-in-S2");
+ p = new Preset ("S(2)-curve", "fadein-S2");
p->push_back (PresetPoint (0.0, 0.0));
p->push_back (PresetPoint (0.055, 0.222));
p->push_back (PresetPoint (0.163, 0.35));
p->push_back (PresetPoint (1.0, 1.0));
fade_in_presets->push_back (p);
- p = new Preset ("Constant Power (-3dB)", "crossfade-in-constant-power");
+ p = new Preset ("Constant power (-3dB)", "fadein-constant-power");
p->push_back (PresetPoint (0.000000, 0.000000));
p->push_back (PresetPoint (0.166667, 0.282192));
if (!Profile->get_sae()) {
- p = new Preset ("Short cut", "crossfade-in-short-cut");
+ p = new Preset ("Short cut", "fadein-short-cut");
p->push_back (PresetPoint (0, 0));
p->push_back (PresetPoint (0.389401, 0.0333333));
p->push_back (PresetPoint (0.629032, 0.0861111));
p->push_back (PresetPoint (1, 1));
fade_in_presets->push_back (p);
- p = new Preset ("Slow cut", "crossfade-in-slow-cut");
+ p = new Preset ("Slow cut", "fadein-slow-cut");
p->push_back (PresetPoint (0, 0));
p->push_back (PresetPoint (0.304147, 0.0694444));
p->push_back (PresetPoint (0.529954, 0.152778));
p->push_back (PresetPoint (1, 1));
fade_in_presets->push_back (p);
- p = new Preset ("Fast cut", "crossfade-in-fast-cut");
+ p = new Preset ("Fast cut", "fadein-fast-cut");
p->push_back (PresetPoint (0, 0));
p->push_back (PresetPoint (0.0737327, 0.308333));
p->push_back (PresetPoint (0.246544, 0.658333));
p->push_back (PresetPoint (1, 1));
fade_in_presets->push_back (p);
- p = new Preset ("Long cut", "crossfade-in-long-cut");
+ p = new Preset ("Long cut", "fadein-long-cut");
p->push_back (PresetPoint (0, 0));
p->push_back (PresetPoint (0.0207373, 0.197222));
p->push_back (PresetPoint (0.0645161, 0.525));
/* FADE OUT */
// p = new Preset ("regout.xpm");
- p = new Preset ("Linear (-6dB cut)", "crossfade-out-linear");
+ p = new Preset ("Linear (-6dB cut)", "fadeout-linear");
p->push_back (PresetPoint (0, 1));
p->push_back (PresetPoint (0.000000, 1.000000));
p->push_back (PresetPoint (0.166667, 0.833033));
p->push_back (PresetPoint (1.000000, 0.000000));
fade_out_presets->push_back (p);
- p = new Preset ("S(1)-Curve", "crossfade-out-S1");
+ p = new Preset ("S(1)-Curve", "fadeout-S1");
p->push_back (PresetPoint (0, 1));
p->push_back (PresetPoint (0.1, 0.99));
p->push_back (PresetPoint (0.2, 0.97));
p->push_back (PresetPoint (1, 0));
fade_out_presets->push_back (p);
- p = new Preset ("S(2)-Curve", "crossfade-out-S2");
+ p = new Preset ("S(2)-Curve", "fadeout-S2");
p->push_back (PresetPoint (0.0, 1.0));
p->push_back (PresetPoint (0.163, 0.678));
p->push_back (PresetPoint (0.055, 0.783));
fade_out_presets->push_back (p);
// p = new Preset ("linout.xpm");
- p = new Preset ("Constant Power (-3dB cut)", "crossfade-out-constant-power");
+ p = new Preset ("Constant power (-3dB cut)", "fadeout-constant-power");
p->push_back (PresetPoint (0.000000, 1.000000));
p->push_back (PresetPoint (0.166667, 0.948859));
p->push_back (PresetPoint (0.333333, 0.851507));
if (!Profile->get_sae()) {
// p = new Preset ("hiout.xpm");
- p = new Preset ("Short cut", "crossfade-out-short-cut");
+ p = new Preset ("Short cut", "fadeout-short-cut");
p->push_back (PresetPoint (0, 1));
p->push_back (PresetPoint (0.305556, 1));
p->push_back (PresetPoint (0.548611, 0.991736));
p->push_back (PresetPoint (1, 0));
fade_out_presets->push_back (p);
- p = new Preset ("Slow cut", "crossfade-out-slow-cut");
+ p = new Preset ("Slow cut", "fadeout-slow-cut");
p->push_back (PresetPoint (0, 1));
p->push_back (PresetPoint (0.228111, 0.988889));
p->push_back (PresetPoint (0.347926, 0.972222));
p->push_back (PresetPoint (1, 0));
fade_out_presets->push_back (p);
- p = new Preset ("Fast cut", "crossfade-out-fast-cut");
+ p = new Preset ("Fast cut", "fadeout-fast-cut");
p->push_back (PresetPoint (0, 1));
p->push_back (PresetPoint (0.080645, 0.730556));
p->push_back (PresetPoint (0.277778, 0.289256));
fade_out_presets->push_back (p);
// p = new Preset ("loout.xpm");
- p = new Preset ("Long cut", "crossfade-out-long-cut");
+ p = new Preset ("Long cut", "fadeout-long-cut");
p->push_back (PresetPoint (0, 1));
p->push_back (PresetPoint (0.023041, 0.697222));
p->push_back (PresetPoint (0.0553, 0.483333));
if (wf == In) {
for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) {
- (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
- (*i)->property_fill_color() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
+ (*i)->set_outline_color (ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorWave());
+ (*i)->set_fill_color (ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorWave());
}
for (vector<ArdourCanvas::WaveView*>::iterator i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i) {
- (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
- (*i)->property_fill_color() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
+ (*i)->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorWave());
+ (*i)->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorWave());
}
- fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorLine.get();
- fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
+ fade[In].line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorLine());
+ fade[Out].line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorLine());
fade[Out].shading->hide();
fade[In].shading->show();
} else {
for (vector<ArdourCanvas::WaveView*>::iterator i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i) {
- (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
- (*i)->property_fill_color() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
+ (*i)->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorWave());
+ (*i)->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorWave());
}
for (vector<ArdourCanvas::WaveView*>::iterator i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i) {
- (*i)->property_wave_color() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
- (*i)->property_fill_color() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
+ (*i)->set_outline_color (ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorWave());
+ (*i)->set_fill_color (ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorWave());
}
- fade[Out].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorLine.get();
- fade[In].line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeEditorLine.get();
+ fade[Out].line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorLine());
+ fade[In].line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorLine());
fade[In].shading->hide();
fade[Out].shading->show();
double spu;
if (which == In) {
- color = ARDOUR_UI::config()->canvasvar_SelectedCrossfadeEditorWave.get();
+ color = ARDOUR_UI::config()->get_canvasvar_SelectedCrossfadeEditorWave();
} else {
- color = ARDOUR_UI::config()->canvasvar_CrossfadeEditorWave.get();
+ color = ARDOUR_UI::config()->get_canvasvar_CrossfadeEditorWave();
}
ht = canvas->get_allocation().get_height() / (double) nchans;
delete _peaks_ready_connection;
_peaks_ready_connection = 0;
-
+
for (uint32_t n = 0; n < nchans; ++n) {
gdouble yoff = n * ht;
if (region->audio_source(n)->peaks_ready (boost::bind (&CrossfadeEditor::peaks_ready, this, boost::weak_ptr<AudioRegion>(region), which), &_peaks_ready_connection, gui_context())) {
- WaveView* waveview = new WaveView (*(canvas->root()));
-
- waveview->property_data_src() = region.get();
- waveview->property_cache_updater() = true;
- waveview->property_cache() = WaveView::create_cache();
- waveview->property_channel() = n;
- waveview->property_length_function() = (void*) region_length_from_c;
- waveview->property_sourcefile_length_function() = (void*) sourcefile_length_from_c;
- waveview->property_peak_function() = (void*) region_read_peaks_from_c;
+ ArdourCanvas::WaveView* waveview = new ArdourCanvas::WaveView (canvas->root(), region);
+
+ waveview->set_channel (n);
waveview->property_gain_function() = (void*) curve_get_vector_from_c;
waveview->property_gain_src() = static_cast<Evoral::Curve*>(&fade[which].gain_curve.curve());
- waveview->property_x() = canvas_border;
- waveview->property_y() = yoff;
- waveview->property_height() = ht;
- waveview->property_samples_per_unit() = spu;
+ waveview->set_x_position (canvas_border);
+ waveview->set_y_position (yoff);
+ waveview->set_height (ht);
+ waveview->set_samples_per_pixel (spu);
waveview->property_amplitude_above_axis() = 2.0;
- waveview->property_wave_color() = color;
- waveview->property_fill_color() = color;
+ waveview->set_outline_color (color);
+ waveview->set_fill_color (color);
- if (which==In)
- waveview->property_region_start() = region->start();
- else
- waveview->property_region_start() = region->start()+region->length()-xfade->length();
+ if (which != In) {
+ waveview->set_region_start (region->start() + region->length() - xfade->length());
+ }
waveview->lower_to_bottom();
fade[which].waves.push_back (waveview);
*/
delete _peaks_ready_connection;
_peaks_ready_connection = 0;
-
+
make_waves (r, which);
}
CrossfadeEditor::audition (Audition which)
{
AudioPlaylist& pl (_session->the_auditioner()->prepare_playlist());
- nframes_t preroll;
- nframes_t postroll;
- nframes_t left_start_offset;
- nframes_t right_length;
- nframes_t left_length;
+ framecnt_t preroll;
+ framecnt_t postroll;
+ framecnt_t left_start_offset;
+ framecnt_t right_length;
+ framecnt_t left_length;
if (which != Right && preroll_button.get_active()) {
preroll = _session->frame_rate() * 2; //2 second hardcoded preroll for now
right_length = xfade->in()->length();
}
- PropertyList left_plist;
- PropertyList right_plist;
+ PropertyList left_plist;
+ PropertyList right_plist;
+
-
left_plist.add (ARDOUR::Properties::start, left_start_offset);
left_plist.add (ARDOUR::Properties::length, left_length);
left_plist.add (ARDOUR::Properties::name, string ("xfade out"));
left_plist.add (ARDOUR::Properties::layer, 0);
left_plist.add (ARDOUR::Properties::fade_in_active, true);
-
+
right_plist.add (ARDOUR::Properties::start, 0);
right_plist.add (ARDOUR::Properties::length, right_length);
right_plist.add (ARDOUR::Properties::name, string("xfade in"));
left_plist.add (ARDOUR::Properties::scale_amplitude, 0.0f);
}
- boost::shared_ptr<AudioRegion> left (boost::dynamic_pointer_cast<AudioRegion>
+ boost::shared_ptr<AudioRegion> left (boost::dynamic_pointer_cast<AudioRegion>
(RegionFactory::create (xfade->out(), left_plist, false)));
- boost::shared_ptr<AudioRegion> right (boost::dynamic_pointer_cast<AudioRegion>
+ boost::shared_ptr<AudioRegion> right (boost::dynamic_pointer_cast<AudioRegion>
(RegionFactory::create (xfade->in(), right_plist, false)));
// apply a 20ms declicking fade at the start and end of auditioning
void
CrossfadeEditor::audition_left_dry ()
{
- PropertyList plist;
+ PropertyList plist;
plist.add (ARDOUR::Properties::start, xfade->out()->length() - xfade->length());
plist.add (ARDOUR::Properties::length, xfade->length());
plist.add (ARDOUR::Properties::name, string("xfade left"));
plist.add (ARDOUR::Properties::layer, 0);
-
- boost::shared_ptr<AudioRegion> left (boost::dynamic_pointer_cast<AudioRegion>
+
+ boost::shared_ptr<AudioRegion> left (boost::dynamic_pointer_cast<AudioRegion>
(RegionFactory::create (xfade->out(), plist, false)));
_session->audition_region (left);
void
CrossfadeEditor::audition_right_dry ()
{
- PropertyList plist;
+ PropertyList plist;
plist.add (ARDOUR::Properties::start, 0);
plist.add (ARDOUR::Properties::length, xfade->length());
plist.add (ARDOUR::Properties::name, string ("xfade right"));
plist.add (ARDOUR::Properties::layer, 0);
- boost::shared_ptr<AudioRegion> right (boost::dynamic_pointer_cast<AudioRegion>
+ boost::shared_ptr<AudioRegion> right (boost::dynamic_pointer_cast<AudioRegion>
(RegionFactory::create (xfade->in(), plist, false)));
_session->audition_region (right);