diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-10 00:46:22 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-10 00:46:22 +0000 |
commit | e3a9576aed924c40a1ac2c9b698433a84ced79aa (patch) | |
tree | c3c29ab39acffd4346839dcd4cf2157c1372141e /gtk2_ardour/audio_region_view.cc | |
parent | 25655e1a6dae74a10707ebc8faa7b2bd0ab16210 (diff) |
basic xfade dragging
git-svn-id: svn://localhost/ardour2/branches/3.0@12236 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/audio_region_view.cc')
-rw-r--r-- | gtk2_ardour/audio_region_view.cc | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 49bfd1bb03..a50d4752f9 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -1530,12 +1530,18 @@ void AudioRegionView::redraw_start_xfade () { boost::shared_ptr<AudioRegion> ar (audio_region()); - + if (!ar->fade_in() || ar->fade_in()->empty()) { return; } - int32_t const npoints = trackview.editor().frame_to_pixel (ar->fade_in()->back()->when); + redraw_start_xfade_to (ar, ar->fade_in()->back()->when); +} + +void +AudioRegionView::redraw_start_xfade_to (boost::shared_ptr<AudioRegion> ar, framecnt_t len) +{ + int32_t const npoints = trackview.editor().frame_to_pixel (len); if (npoints < 3) { return; @@ -1560,6 +1566,7 @@ AudioRegionView::redraw_start_xfade () start_xfade_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ActiveCrossfade.get(); start_xfade_rect->property_outline_pixels() = 0; start_xfade_rect->signal_event().connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_start_xfade_event), start_xfade_rect, this)); + start_xfade_rect->set_data ("regionview", this); } Points* points = get_canvas_points ("xfade edit redraw", npoints); @@ -1623,7 +1630,13 @@ AudioRegionView::redraw_end_xfade () return; } - int32_t const npoints = trackview.editor().frame_to_pixel (ar->fade_out()->back()->when); + redraw_end_xfade_to (ar, ar->fade_out()->back()->when); +} + +void +AudioRegionView::redraw_end_xfade_to (boost::shared_ptr<AudioRegion> ar, framecnt_t len) +{ + int32_t const npoints = trackview.editor().frame_to_pixel (len); if (npoints < 3) { return; @@ -1647,8 +1660,8 @@ AudioRegionView::redraw_end_xfade () end_xfade_rect->property_fill() = true;; end_xfade_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ActiveCrossfade.get(); end_xfade_rect->property_outline_pixels() = 0; - end_xfade_rect->signal_event().connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_end_xfade_event), end_xfade_rect, this)); + end_xfade_rect->set_data ("regionview", this); } Points* points = get_canvas_points ("xfade edit redraw", npoints); @@ -1656,7 +1669,7 @@ AudioRegionView::redraw_end_xfade () ar->fade_out()->curve().get_vector (0, ar->fade_out()->back()->when, vec.get(), npoints); - double rend = trackview.editor().frame_to_pixel (_region->length() - ar->fade_out()->back()->when); + double rend = trackview.editor().frame_to_pixel (_region->length() - len); for (int i = 0, pci = 0; i < npoints; ++i) { Gnome::Art::Point &p ((*points)[pci++]); @@ -1706,6 +1719,7 @@ AudioRegionView::redraw_end_xfade () delete points; } + void AudioRegionView::drag_start () { @@ -1755,3 +1769,4 @@ AudioRegionView::drag_end () end_xfade_rect->show (); } } + |