X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcrossfade_edit.cc;h=a69383c7ee4c96ef20797e93cb0abe289e8686d3;hb=767984b486086e3682e521179c2fb8364b3bba76;hp=b2967dc4a9dfc60b453f8cc769ef176c377765f5;hpb=cc2767caf32486365a33814149e75c6e588e8603;p=ardour.git diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index b2967dc4a9..a69383c7ee 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -36,6 +35,7 @@ #include #include #include +#include #include @@ -71,7 +71,7 @@ CrossfadeEditor::Half::Half () { } -CrossfadeEditor::CrossfadeEditor (Session& s, Crossfade& xf, double my, double mxy) +CrossfadeEditor::CrossfadeEditor (Session& s, boost::shared_ptr xf, double my, double mxy) : ArdourDialog (_("ardour: x-fade edit")), xfade (xf), session (s), @@ -95,7 +95,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, Crossfade& xf, double my, double m select_in_button (_("Fade In")), select_out_button (_("Fade Out")) { - set_wmclass ("ardour_automationedit", "Ardour"); + set_wmclass (X_("ardour_automationedit"), "Ardour"); set_name ("CrossfadeEditWindow"); set_position (Gtk::WIN_POS_MOUSE); @@ -193,7 +193,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, Crossfade& xf, double my, double m for (list::iterator i = fade_in_presets->begin(); i != fade_in_presets->end(); ++i) { - pxmap = manage (new Image (get_xpm((*i)->xpm))); + pxmap = manage (new Image (::get_icon ((*i)->image_name))); pbutton = manage (new Button); pbutton->add (*pxmap); pbutton->set_name ("CrossfadeEditButton"); @@ -214,7 +214,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, Crossfade& xf, double my, double m for (list::iterator i = fade_out_presets->begin(); i != fade_out_presets->end(); ++i) { - pxmap = manage (new Image (get_xpm((*i)->xpm))); + pxmap = manage (new Image (::get_icon ((*i)->image_name))); pbutton = manage (new Button); pbutton->add (*pxmap); pbutton->set_name ("CrossfadeEditButton"); @@ -278,14 +278,14 @@ CrossfadeEditor::CrossfadeEditor (Session& s, Crossfade& xf, double my, double m // vpacker.pack_start (*foobut, false, false); current = In; - set (xfade.fade_in(), In); + set (xfade->fade_in(), In); current = Out; - set (xfade.fade_out(), Out); + set (xfade->fade_out(), Out); curve_select_clicked (In); - xfade.StateChanged.connect (mem_fun(*this, &CrossfadeEditor::xfade_changed)); + xfade->StateChanged.connect (mem_fun(*this, &CrossfadeEditor::xfade_changed)); session.AuditionActive.connect (mem_fun(*this, &CrossfadeEditor::audition_state_changed)); show_all_children(); @@ -576,21 +576,21 @@ CrossfadeEditor::canvas_allocation (Gtk::Allocation& alloc) redraw (); current = old_current; - double spu = xfade.length() / (double) effective_width(); + double spu = xfade->length() / (double) effective_width(); if (fade[In].waves.empty()) { - make_waves (xfade.in(), In); + make_waves (xfade->in(), In); } if (fade[Out].waves.empty()) { - make_waves (xfade.out(), Out); + make_waves (xfade->out(), Out); } double ht; vector::iterator i; uint32_t n; - ht = canvas->get_allocation().get_height() / xfade.in().n_channels(); + ht = canvas->get_allocation().get_height() / xfade->in()->n_channels(); for (n = 0, i = fade[In].waves.begin(); i != fade[In].waves.end(); ++i, ++n) { double yoff; @@ -602,7 +602,7 @@ CrossfadeEditor::canvas_allocation (Gtk::Allocation& alloc) (*i)->property_samples_per_unit() = spu; } - ht = canvas->get_allocation().get_height() / xfade.out().n_channels(); + ht = canvas->get_allocation().get_height() / xfade->out()->n_channels(); for (n = 0, i = fade[Out].waves.begin(); i != fade[Out].waves.end(); ++i, ++n) { double yoff; @@ -620,8 +620,8 @@ CrossfadeEditor::canvas_allocation (Gtk::Allocation& alloc) void CrossfadeEditor::xfade_changed (Change ignored) { - set (xfade.fade_in(), In); - set (xfade.fade_out(), Out); + set (xfade->fade_in(), In); + set (xfade->fade_out(), Out); } void @@ -631,7 +631,7 @@ CrossfadeEditor::redraw () return; } - jack_nframes_t len = xfade.length (); + nframes_t len = xfade->length (); fade[current].normative_curve.clear (); fade[current].gain_curve.clear (); @@ -697,8 +697,6 @@ CrossfadeEditor::redraw () } - // GTK2FIX some odd math to fix up here - size_t last_spt = (npoints + 3) - 1; for (size_t i = 0; i < npoints; ++i) { @@ -742,11 +740,11 @@ CrossfadeEditor::apply_preset (Preset *preset) void CrossfadeEditor::apply () { - _apply_to (&xfade); + _apply_to (xfade); } void -CrossfadeEditor::_apply_to (Crossfade* xf) +CrossfadeEditor::_apply_to (boost::shared_ptr xf) { ARDOUR::Curve& in (xf->fade_in()); ARDOUR::Curve& out (xf->fade_out()); @@ -797,7 +795,7 @@ CrossfadeEditor::_apply_to (Crossfade* xf) } void -CrossfadeEditor::setup (Crossfade* xfade) +CrossfadeEditor::setup (boost::shared_ptr xfade) { _apply_to (xfade); xfade->set_active (true); @@ -820,8 +818,8 @@ CrossfadeEditor::clear () void CrossfadeEditor::reset () { - set (xfade.fade_in(), In); - set (xfade.fade_out(), Out); + set (xfade->fade_in(), In); + set (xfade->fade_out(), Out); } void @@ -833,7 +831,8 @@ CrossfadeEditor::build_presets () fade_out_presets = new Presets; /* FADE OUT */ - p = new Preset ("hiin.xpm"); + // p = new Preset ("hiin.xpm"); + p = new Preset ("crossfade_in_fast-cut"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.0207373, 0.197222)); p->push_back (PresetPoint (0.0645161, 0.525)); @@ -844,7 +843,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("loin.xpm"); + // p = new Preset ("loin.xpm"); + p = new Preset ("crossfade_in_transition"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.389401, 0.0333333)); p->push_back (PresetPoint (0.629032, 0.0861111)); @@ -854,7 +854,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("regin.xpm"); + // p = new Preset ("regin.xpm"); + p = new Preset ("crossfade_in_constant"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.0737327, 0.308333)); p->push_back (PresetPoint (0.246544, 0.658333)); @@ -864,7 +865,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("regin2.xpm"); + // p = new Preset ("regin2.xpm"); + p = new Preset ("crossfade_in_slow-cut"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.304147, 0.0694444)); p->push_back (PresetPoint (0.529954, 0.152778)); @@ -874,14 +876,16 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("linin.xpm"); + // p = new Preset ("linin.xpm"); + p = new Preset ("crossfade_in_dipped"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); /* FADE OUT */ - p = new Preset ("hiout.xpm"); + // p = new Preset ("hiout.xpm"); + p = new Preset ("crossfade_out_fast-cut"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.305556, 1)); p->push_back (PresetPoint (0.548611, 0.991736)); @@ -891,7 +895,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("regout.xpm"); + // p = new Preset ("regout.xpm"); + p = new Preset ("crossfade_out_constant"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.228111, 0.988889)); p->push_back (PresetPoint (0.347926, 0.972222)); @@ -901,7 +906,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("loout.xpm"); + // p = new Preset ("loout.xpm"); + p = new Preset ("crossfade_out_transition"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.023041, 0.697222)); p->push_back (PresetPoint (0.0553, 0.483333)); @@ -911,7 +917,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("regout2.xpm"); + // p = new Preset ("regout2.xpm"); + p = new Preset ("crossfade_out_slow-fade"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.080645, 0.730556)); p->push_back (PresetPoint (0.277778, 0.289256)); @@ -920,7 +927,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("linout.xpm"); + // p = new Preset ("linout.xpm"); + p = new Preset ("crossfade_out_dipped"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); @@ -1015,10 +1023,10 @@ CrossfadeEditor::y_coordinate (double& yfract) const } void -CrossfadeEditor::make_waves (AudioRegion& region, WhichFade which) +CrossfadeEditor::make_waves (boost::shared_ptr region, WhichFade which) { gdouble ht; - uint32_t nchans = region.n_channels(); + uint32_t nchans = region->n_channels(); guint32 color; double spu; @@ -1029,17 +1037,17 @@ CrossfadeEditor::make_waves (AudioRegion& region, WhichFade which) } ht = canvas->get_allocation().get_height() / (double) nchans; - spu = xfade.length() / (double) effective_width(); + spu = xfade->length() / (double) effective_width(); for (uint32_t n = 0; n < nchans; ++n) { gdouble yoff = n * ht; - if (region.source(n).peaks_ready (bind (mem_fun(*this, &CrossfadeEditor::peaks_ready), ®ion, which), peaks_ready_connection)) { + if (region->source(n)->peaks_ready (bind (mem_fun(*this, &CrossfadeEditor::peaks_ready), region, which), peaks_ready_connection)) { WaveView* waveview = new WaveView (*(canvas->root())); - waveview->property_data_src() = ®ion; + waveview->property_data_src() = region.get(); waveview->property_cache_updater() = true; waveview->property_cache() = WaveView::create_cache(); waveview->property_channel() = n; @@ -1064,26 +1072,26 @@ CrossfadeEditor::make_waves (AudioRegion& region, WhichFade which) } void -CrossfadeEditor::peaks_ready (AudioRegion* r, WhichFade which) +CrossfadeEditor::peaks_ready (boost::shared_ptr r, WhichFade which) { /* this should never be called, because the peak files for an xfade will be ready by the time we want them. but our API forces us to provide this, so .. */ peaks_ready_connection.disconnect (); - make_waves (*r, which); + make_waves (r, which); } void CrossfadeEditor::audition_both () { AudioPlaylist& pl (session.the_auditioner()->prepare_playlist()); - jack_nframes_t preroll; - jack_nframes_t postroll; - jack_nframes_t length; - jack_nframes_t left_start_offset; - jack_nframes_t right_length; - jack_nframes_t left_length; + nframes_t preroll; + nframes_t postroll; + nframes_t length; + nframes_t left_start_offset; + nframes_t right_length; + nframes_t left_length; if (preroll_button.get_active()) { preroll = ARDOUR_UI::instance()->preroll_clock.current_duration (); @@ -1097,29 +1105,29 @@ CrossfadeEditor::audition_both () postroll = 0; } - if ((left_start_offset = xfade.out().length() - xfade.length()) >= preroll) { + if ((left_start_offset = xfade->out()->length() - xfade->length()) >= preroll) { left_start_offset -= preroll; } length = 0; - if ((left_length = xfade.length()) < xfade.out().length() - left_start_offset) { + if ((left_length = xfade->length()) < xfade->out()->length() - left_start_offset) { length += postroll; } - right_length = xfade.length(); + right_length = xfade->length(); - if (xfade.in().length() - right_length < postroll) { + if (xfade->in()->length() - right_length < postroll) { right_length += postroll; } - AudioRegion* left = new AudioRegion (xfade.out(), left_start_offset, left_length, "xfade out", - 0, Region::DefaultFlags, false); - AudioRegion* right = new AudioRegion (xfade.in(), 0, right_length, "xfade in", - 0, Region::DefaultFlags, false); + boost::shared_ptr left (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), left_start_offset, left_length, "xfade out", + 0, Region::DefaultFlags, false))); + boost::shared_ptr right (boost::dynamic_pointer_cast (RegionFactory::create (xfade->in(), 0, right_length, "xfade in", + 0, Region::DefaultFlags, false))); - pl.add_region (*left, 0); - pl.add_region (*right, 1+preroll); + pl.add_region (left, 0); + pl.add_region (right, 1+preroll); /* there is only one ... */ @@ -1131,10 +1139,10 @@ CrossfadeEditor::audition_both () void CrossfadeEditor::audition_left_dry () { - AudioRegion* left = new AudioRegion (xfade.out(), xfade.out().length() - xfade.length(), xfade.length(), "xfade left", - 0, Region::DefaultFlags, false); + boost::shared_ptr left (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), xfade->out()->length() - xfade->length(), xfade->length(), "xfade left", + 0, Region::DefaultFlags, false))); - session.audition_region (*left); + session.audition_region (left); } void @@ -1142,13 +1150,13 @@ CrossfadeEditor::audition_left () { AudioPlaylist& pl (session.the_auditioner()->prepare_playlist()); - AudioRegion* left = new AudioRegion (xfade.out(), xfade.out().length() - xfade.length(), xfade.length(), "xfade left", - 0, Region::DefaultFlags, false); - AudioRegion* right = new AudioRegion (xfade.in(), 0, xfade.length(), "xfade in", - 0, Region::DefaultFlags, false); + boost::shared_ptr left (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), xfade->out()->length() - xfade->length(), xfade->length(), "xfade left", + 0, Region::DefaultFlags, false))); + boost::shared_ptr right (boost::dynamic_pointer_cast (RegionFactory::create (xfade->in(), 0, xfade->length(), "xfade in", + 0, Region::DefaultFlags, false))); - pl.add_region (*left, 0); - pl.add_region (*right, 1); + pl.add_region (left, 0); + pl.add_region (right, 1); right->set_muted (true); @@ -1164,9 +1172,9 @@ CrossfadeEditor::audition_left () void CrossfadeEditor::audition_right_dry () { - AudioRegion* right = new AudioRegion (xfade.in(), 0, xfade.length(), "xfade in", - 0, Region::DefaultFlags, false); - session.audition_region (*right); + boost::shared_ptr right (boost::dynamic_pointer_cast (RegionFactory::create (xfade->in(), 0, xfade->length(), "xfade in", + 0, Region::DefaultFlags, false))); + session.audition_region (right); } void @@ -1174,13 +1182,13 @@ CrossfadeEditor::audition_right () { AudioPlaylist& pl (session.the_auditioner()->prepare_playlist()); - AudioRegion* left = new AudioRegion (xfade.out(), xfade.out().length() - xfade.length(), xfade.length(), "xfade out", - 0, Region::DefaultFlags, false); - AudioRegion* right = new AudioRegion (xfade.out(), 0, xfade.length(), "xfade out", - 0, Region::DefaultFlags, false); + boost::shared_ptr left (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), xfade->out()->length() - xfade->length(), xfade->length(), "xfade out", + 0, Region::DefaultFlags, false))); + boost::shared_ptr right (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), 0, xfade->length(), "xfade out", + 0, Region::DefaultFlags, false))); - pl.add_region (*left, 0); - pl.add_region (*right, 1); + pl.add_region (left, 0); + pl.add_region (right, 1); left->set_muted (true);