mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 07:14:56 +01:00
towards region-trims preserving fade duration
This commit is contained in:
parent
62e8d1a25f
commit
4843c5d5cf
9 changed files with 194 additions and 99 deletions
|
|
@ -81,6 +81,8 @@ AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView
|
||||||
, sync_mark(0)
|
, sync_mark(0)
|
||||||
, fade_in_handle(0)
|
, fade_in_handle(0)
|
||||||
, fade_out_handle(0)
|
, fade_out_handle(0)
|
||||||
|
, fade_in_trim_handle(0)
|
||||||
|
, fade_out_trim_handle(0)
|
||||||
, start_xfade_curve (0)
|
, start_xfade_curve (0)
|
||||||
, start_xfade_rect (0)
|
, start_xfade_rect (0)
|
||||||
, _start_xfade_visible (false)
|
, _start_xfade_visible (false)
|
||||||
|
|
@ -99,6 +101,8 @@ AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView
|
||||||
, sync_mark(0)
|
, sync_mark(0)
|
||||||
, fade_in_handle(0)
|
, fade_in_handle(0)
|
||||||
, fade_out_handle(0)
|
, fade_out_handle(0)
|
||||||
|
, fade_in_trim_handle(0)
|
||||||
|
, fade_out_trim_handle(0)
|
||||||
, start_xfade_curve (0)
|
, start_xfade_curve (0)
|
||||||
, start_xfade_rect (0)
|
, start_xfade_rect (0)
|
||||||
, _start_xfade_visible (false)
|
, _start_xfade_visible (false)
|
||||||
|
|
@ -115,6 +119,8 @@ AudioRegionView::AudioRegionView (const AudioRegionView& other, boost::shared_pt
|
||||||
: RegionView (other, boost::shared_ptr<Region> (other_region))
|
: RegionView (other, boost::shared_ptr<Region> (other_region))
|
||||||
, fade_in_handle(0)
|
, fade_in_handle(0)
|
||||||
, fade_out_handle(0)
|
, fade_out_handle(0)
|
||||||
|
, fade_in_trim_handle(0)
|
||||||
|
, fade_out_trim_handle(0)
|
||||||
, start_xfade_curve (0)
|
, start_xfade_curve (0)
|
||||||
, start_xfade_rect (0)
|
, start_xfade_rect (0)
|
||||||
, _start_xfade_visible (false)
|
, _start_xfade_visible (false)
|
||||||
|
|
@ -163,6 +169,20 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd)
|
||||||
fade_out_handle->set_fill_color (ARDOUR_UI::config()->get_canvasvar_InactiveFadeHandle());
|
fade_out_handle->set_fill_color (ARDOUR_UI::config()->get_canvasvar_InactiveFadeHandle());
|
||||||
fade_out_handle->set_data ("regionview", this);
|
fade_out_handle->set_data ("regionview", this);
|
||||||
fade_out_handle->hide ();
|
fade_out_handle->hide ();
|
||||||
|
|
||||||
|
fade_in_trim_handle = new ArdourCanvas::Rectangle (group);
|
||||||
|
CANVAS_DEBUG_NAME (fade_in_handle, string_compose ("fade in trim handle for %1", region()->name()));
|
||||||
|
fade_in_trim_handle->set_outline_color (RGBA_TO_UINT (0, 0, 0, 255));
|
||||||
|
fade_in_trim_handle->set_fill_color (ARDOUR_UI::config()->get_canvasvar_InactiveFadeHandle());
|
||||||
|
fade_in_trim_handle->set_data ("regionview", this);
|
||||||
|
fade_in_trim_handle->hide ();
|
||||||
|
|
||||||
|
fade_out_trim_handle = new ArdourCanvas::Rectangle (group);
|
||||||
|
CANVAS_DEBUG_NAME (fade_out_handle, string_compose ("fade out trim handle for %1", region()->name()));
|
||||||
|
fade_out_trim_handle->set_outline_color (RGBA_TO_UINT (0, 0, 0, 255));
|
||||||
|
fade_out_trim_handle->set_fill_color (ARDOUR_UI::config()->get_canvasvar_InactiveFadeHandle());
|
||||||
|
fade_out_trim_handle->set_data ("regionview", this);
|
||||||
|
fade_out_trim_handle->hide ();
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_fade_handle_positions ();
|
setup_fade_handle_positions ();
|
||||||
|
|
@ -199,11 +219,19 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd)
|
||||||
reset_width_dependent_items (_pixel_width);
|
reset_width_dependent_items (_pixel_width);
|
||||||
|
|
||||||
if (fade_in_handle) {
|
if (fade_in_handle) {
|
||||||
fade_in_handle->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_fade_in_handle_event), fade_in_handle, this));
|
fade_in_handle->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_fade_in_handle_event), fade_in_handle, this, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fade_out_handle) {
|
if (fade_out_handle) {
|
||||||
fade_out_handle->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_fade_out_handle_event), fade_out_handle, this));
|
fade_out_handle->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_fade_out_handle_event), fade_out_handle, this, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fade_in_trim_handle) {
|
||||||
|
fade_in_trim_handle->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_fade_in_handle_event), fade_in_trim_handle, this, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fade_out_trim_handle) {
|
||||||
|
fade_out_trim_handle->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_fade_out_handle_event), fade_out_trim_handle, this, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
set_colors ();
|
set_colors ();
|
||||||
|
|
@ -384,14 +412,11 @@ AudioRegionView::reset_width_dependent_items (double pixel_width)
|
||||||
RegionView::reset_width_dependent_items(pixel_width);
|
RegionView::reset_width_dependent_items(pixel_width);
|
||||||
assert(_pixel_width == pixel_width);
|
assert(_pixel_width == pixel_width);
|
||||||
|
|
||||||
if (fade_in_handle) {
|
if (pixel_width <= 6.0 || _height < 5.0 || !trackview.session()->config.get_show_region_fades()) {
|
||||||
if (pixel_width <= 6.0 || _height < 5.0 || !trackview.session()->config.get_show_region_fades()) {
|
if (fade_in_handle) { fade_in_handle->hide(); }
|
||||||
fade_in_handle->hide();
|
if (fade_out_handle) { fade_out_handle->hide(); }
|
||||||
fade_out_handle->hide();
|
if (fade_in_trim_handle) { fade_in_trim_handle->hide(); }
|
||||||
} else {
|
if (fade_out_trim_handle) { fade_out_trim_handle->hide(); }
|
||||||
//fade_in_handle->show();
|
|
||||||
//fade_out_handle->show();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AnalysisFeatureList analysis_features = _region->transients();
|
AnalysisFeatureList analysis_features = _region->transients();
|
||||||
|
|
@ -437,6 +462,16 @@ AudioRegionView::setup_fade_handle_positions()
|
||||||
fade_out_handle->set_y0 (handle_pos);
|
fade_out_handle->set_y0 (handle_pos);
|
||||||
fade_out_handle->set_y1 (handle_pos + handle_size);
|
fade_out_handle->set_y1 (handle_pos + handle_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fade_in_trim_handle) {
|
||||||
|
fade_in_trim_handle->set_y0 (_height - handle_size);
|
||||||
|
fade_in_trim_handle->set_y1 (_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fade_out_trim_handle) {
|
||||||
|
fade_out_trim_handle->set_y0 (_height - handle_size );
|
||||||
|
fade_out_trim_handle->set_y1 (_height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -498,8 +533,8 @@ AudioRegionView::set_height (gdouble height)
|
||||||
void
|
void
|
||||||
AudioRegionView::reset_fade_shapes ()
|
AudioRegionView::reset_fade_shapes ()
|
||||||
{
|
{
|
||||||
reset_fade_in_shape ();
|
if (!trim_fade_in_drag_active) { reset_fade_in_shape (); }
|
||||||
reset_fade_out_shape ();
|
if (!trim_fade_out_drag_active) { reset_fade_out_shape (); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -509,8 +544,9 @@ AudioRegionView::reset_fade_in_shape ()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioRegionView::reset_fade_in_shape_width (boost::shared_ptr<AudioRegion> ar, framecnt_t width)
|
AudioRegionView::reset_fade_in_shape_width (boost::shared_ptr<AudioRegion> ar, framecnt_t width, bool drag_active)
|
||||||
{
|
{
|
||||||
|
trim_fade_in_drag_active = drag_active;
|
||||||
if (fade_in_handle == 0) {
|
if (fade_in_handle == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -527,6 +563,11 @@ AudioRegionView::reset_fade_in_shape_width (boost::shared_ptr<AudioRegion> ar, f
|
||||||
fade_in_handle->set_x0 (handle_left);
|
fade_in_handle->set_x0 (handle_left);
|
||||||
fade_in_handle->set_x1 (handle_left + handle_size);
|
fade_in_handle->set_x1 (handle_left + handle_size);
|
||||||
|
|
||||||
|
if (fade_in_trim_handle) {
|
||||||
|
fade_in_trim_handle->set_x0 (0);
|
||||||
|
fade_in_trim_handle->set_x1 (handle_size);
|
||||||
|
}
|
||||||
|
|
||||||
if (pwidth < 5) {
|
if (pwidth < 5) {
|
||||||
hide_start_xfade();
|
hide_start_xfade();
|
||||||
return;
|
return;
|
||||||
|
|
@ -579,8 +620,9 @@ AudioRegionView::reset_fade_out_shape ()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioRegionView::reset_fade_out_shape_width (boost::shared_ptr<AudioRegion> ar, framecnt_t width)
|
AudioRegionView::reset_fade_out_shape_width (boost::shared_ptr<AudioRegion> ar, framecnt_t width, bool drag_active)
|
||||||
{
|
{
|
||||||
|
trim_fade_out_drag_active = drag_active;
|
||||||
if (fade_out_handle == 0) {
|
if (fade_out_handle == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -596,11 +638,16 @@ AudioRegionView::reset_fade_out_shape_width (boost::shared_ptr<AudioRegion> ar,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double const handle_right = rint(trackview.editor().sample_to_pixel (_region->length()) + TimeAxisViewItem::RIGHT_EDGE_SHIFT - pwidth);
|
double const handle_right = rint(trackview.editor().sample_to_pixel (_region->length()) + TimeAxisViewItem::RIGHT_EDGE_SHIFT - pwidth);
|
||||||
|
double const trim_handle_right = rint(trackview.editor().sample_to_pixel (_region->length()) + TimeAxisViewItem::RIGHT_EDGE_SHIFT);
|
||||||
|
|
||||||
/* Put the fade out handle so that its right side is at the end-of-fade line;
|
/* Put the fade out handle so that its right side is at the end-of-fade line;
|
||||||
*/
|
*/
|
||||||
fade_out_handle->set_x0 (1 + handle_right - handle_size);
|
fade_out_handle->set_x0 (1 + handle_right - handle_size);
|
||||||
fade_out_handle->set_x1 (1 + handle_right);
|
fade_out_handle->set_x1 (1 + handle_right);
|
||||||
|
if (fade_out_trim_handle) {
|
||||||
|
fade_out_trim_handle->set_x0 (1 + trim_handle_right - handle_size);
|
||||||
|
fade_out_trim_handle->set_x1 (1 + trim_handle_right);
|
||||||
|
}
|
||||||
|
|
||||||
/* don't show shape if its too small */
|
/* don't show shape if its too small */
|
||||||
|
|
||||||
|
|
@ -1262,11 +1309,23 @@ AudioRegionView::entered (bool internal_editing)
|
||||||
gain_line->add_visibility (AutomationLine::ControlPoints);
|
gain_line->add_visibility (AutomationLine::ControlPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fade_in_handle && !internal_editing) {
|
if (!internal_editing) {
|
||||||
fade_in_handle->show ();
|
if (fade_in_handle) {
|
||||||
fade_out_handle->show ();
|
fade_in_handle->show ();
|
||||||
fade_out_handle->raise_to_top ();
|
fade_in_handle->raise_to_top ();
|
||||||
fade_in_handle->raise_to_top ();
|
}
|
||||||
|
if (fade_out_handle) {
|
||||||
|
fade_out_handle->show ();
|
||||||
|
fade_out_handle->raise_to_top ();
|
||||||
|
}
|
||||||
|
if (fade_in_trim_handle) {
|
||||||
|
fade_in_trim_handle->show ();
|
||||||
|
fade_in_trim_handle->raise_to_top ();
|
||||||
|
}
|
||||||
|
if (fade_out_trim_handle) {
|
||||||
|
fade_out_trim_handle->show ();
|
||||||
|
fade_out_trim_handle->raise_to_top ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1280,10 +1339,10 @@ AudioRegionView::exited ()
|
||||||
gain_line->remove_visibility (AutomationLine::ControlPoints);
|
gain_line->remove_visibility (AutomationLine::ControlPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fade_in_handle) {
|
if (fade_in_handle) { fade_in_handle->hide(); }
|
||||||
fade_in_handle->hide ();
|
if (fade_out_handle) { fade_out_handle->hide(); }
|
||||||
fade_out_handle->hide ();
|
if (fade_in_trim_handle) { fade_in_trim_handle->hide(); }
|
||||||
}
|
if (fade_out_trim_handle) { fade_out_trim_handle->hide(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -1397,19 +1456,15 @@ void
|
||||||
AudioRegionView::set_fade_visibility (bool yn)
|
AudioRegionView::set_fade_visibility (bool yn)
|
||||||
{
|
{
|
||||||
if (yn) {
|
if (yn) {
|
||||||
if (fade_in_handle) {
|
if (fade_in_handle) { fade_in_handle->show(); }
|
||||||
fade_in_handle->show ();
|
if (fade_out_handle) { fade_out_handle->show(); }
|
||||||
}
|
if (fade_in_trim_handle) { fade_in_trim_handle->show(); }
|
||||||
if (fade_out_handle) {
|
if (fade_out_trim_handle) { fade_out_trim_handle->show(); }
|
||||||
fade_out_handle->show ();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (fade_in_handle) {
|
if (fade_in_handle) { fade_in_handle->hide(); }
|
||||||
fade_in_handle->hide ();
|
if (fade_out_handle) { fade_out_handle->hide(); }
|
||||||
}
|
if (fade_in_trim_handle) { fade_in_trim_handle->hide(); }
|
||||||
if (fade_out_handle) {
|
if (fade_out_trim_handle) { fade_out_trim_handle->hide(); }
|
||||||
fade_out_handle->hide ();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1418,10 +1473,10 @@ AudioRegionView::update_coverage_frames (LayerDisplay d)
|
||||||
{
|
{
|
||||||
RegionView::update_coverage_frames (d);
|
RegionView::update_coverage_frames (d);
|
||||||
|
|
||||||
if (fade_in_handle) {
|
if (fade_in_handle) { fade_in_handle->raise_to_top (); }
|
||||||
fade_in_handle->raise_to_top ();
|
if (fade_out_handle) { fade_out_handle->raise_to_top (); }
|
||||||
fade_out_handle->raise_to_top ();
|
if (fade_in_trim_handle) { fade_in_trim_handle->raise_to_top (); }
|
||||||
}
|
if (fade_out_trim_handle) { fade_out_trim_handle->raise_to_top (); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,8 @@ class AudioRegionView : public RegionView
|
||||||
|
|
||||||
GhostRegion* add_ghost (TimeAxisView&);
|
GhostRegion* add_ghost (TimeAxisView&);
|
||||||
|
|
||||||
void reset_fade_in_shape_width (boost::shared_ptr<ARDOUR::AudioRegion> ar, framecnt_t);
|
void reset_fade_in_shape_width (boost::shared_ptr<ARDOUR::AudioRegion> ar, framecnt_t, bool drag_active = false);
|
||||||
void reset_fade_out_shape_width (boost::shared_ptr<ARDOUR::AudioRegion> ar, framecnt_t);
|
void reset_fade_out_shape_width (boost::shared_ptr<ARDOUR::AudioRegion> ar, framecnt_t, bool drag_active = false);
|
||||||
|
|
||||||
framepos_t get_fade_in_shape_width ();
|
framepos_t get_fade_in_shape_width ();
|
||||||
framepos_t get_fade_out_shape_width ();
|
framepos_t get_fade_out_shape_width ();
|
||||||
|
|
@ -158,6 +158,8 @@ class AudioRegionView : public RegionView
|
||||||
ArdourCanvas::Polygon* sync_mark; ///< polgyon for sync position
|
ArdourCanvas::Polygon* sync_mark; ///< polgyon for sync position
|
||||||
ArdourCanvas::Rectangle* fade_in_handle; ///< fade in handle, or 0
|
ArdourCanvas::Rectangle* fade_in_handle; ///< fade in handle, or 0
|
||||||
ArdourCanvas::Rectangle* fade_out_handle; ///< fade out handle, or 0
|
ArdourCanvas::Rectangle* fade_out_handle; ///< fade out handle, or 0
|
||||||
|
ArdourCanvas::Rectangle* fade_in_trim_handle; ///< fade in trim handle, or 0
|
||||||
|
ArdourCanvas::Rectangle* fade_out_trim_handle; ///< fade out trim handle, or 0
|
||||||
|
|
||||||
ArdourCanvas::XFadeCurve* start_xfade_curve;
|
ArdourCanvas::XFadeCurve* start_xfade_curve;
|
||||||
ArdourCanvas::Rectangle* start_xfade_rect;
|
ArdourCanvas::Rectangle* start_xfade_rect;
|
||||||
|
|
@ -217,6 +219,9 @@ private:
|
||||||
* first list is for start xfades, second list is for end xfades.
|
* first list is for start xfades, second list is for end xfades.
|
||||||
*/
|
*/
|
||||||
std::pair<std::list<AudioRegionView*>, std::list<AudioRegionView*> > _hidden_xfades;
|
std::pair<std::list<AudioRegionView*>, std::list<AudioRegionView*> > _hidden_xfades;
|
||||||
|
|
||||||
|
bool trim_fade_in_drag_active;
|
||||||
|
bool trim_fade_out_drag_active;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __gtk_ardour_audio_region_view_h__ */
|
#endif /* __gtk_ardour_audio_region_view_h__ */
|
||||||
|
|
|
||||||
|
|
@ -1400,9 +1400,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||||
bool canvas_start_xfade_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
bool canvas_start_xfade_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
||||||
bool canvas_end_xfade_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
bool canvas_end_xfade_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
||||||
bool canvas_fade_in_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
bool canvas_fade_in_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
||||||
bool canvas_fade_in_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
bool canvas_fade_in_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*, bool trim = false);
|
||||||
bool canvas_fade_out_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
bool canvas_fade_out_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
||||||
bool canvas_fade_out_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
|
bool canvas_fade_out_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*, bool trim = false);
|
||||||
bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
|
bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
|
||||||
bool canvas_frame_handle_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
|
bool canvas_frame_handle_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
|
||||||
bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
|
bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
|
||||||
|
|
|
||||||
|
|
@ -477,7 +477,7 @@ Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRe
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
|
Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv, bool trim)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
|
|
@ -493,11 +493,11 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item,
|
||||||
clicked_control_point = 0;
|
clicked_control_point = 0;
|
||||||
clicked_axisview = &rv->get_time_axis_view();
|
clicked_axisview = &rv->get_time_axis_view();
|
||||||
clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
|
clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
|
||||||
ret = button_press_handler (item, event, FadeInHandleItem);
|
ret = button_press_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_BUTTON_RELEASE:
|
case GDK_BUTTON_RELEASE:
|
||||||
ret = button_release_handler (item, event, FadeInHandleItem);
|
ret = button_release_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem);
|
||||||
maybe_locate_with_edit_preroll ( rv->region()->position() );
|
maybe_locate_with_edit_preroll ( rv->region()->position() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -506,11 +506,11 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_ENTER_NOTIFY:
|
case GDK_ENTER_NOTIFY:
|
||||||
ret = enter_handler (item, event, FadeInHandleItem);
|
ret = enter_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_LEAVE_NOTIFY:
|
case GDK_LEAVE_NOTIFY:
|
||||||
ret = leave_handler (item, event, FadeInHandleItem);
|
ret = leave_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -561,7 +561,7 @@ Editor::canvas_fade_out_event (GdkEvent *event, ArdourCanvas::Item* item, AudioR
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
|
Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv, bool trim)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
|
|
@ -577,11 +577,11 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item,
|
||||||
clicked_control_point = 0;
|
clicked_control_point = 0;
|
||||||
clicked_axisview = &rv->get_time_axis_view();
|
clicked_axisview = &rv->get_time_axis_view();
|
||||||
clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
|
clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
|
||||||
ret = button_press_handler (item, event, FadeOutHandleItem);
|
ret = button_press_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_BUTTON_RELEASE:
|
case GDK_BUTTON_RELEASE:
|
||||||
ret = button_release_handler (item, event, FadeOutHandleItem);
|
ret = button_release_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem);
|
||||||
maybe_locate_with_edit_preroll ( rv->region()->last_frame() - rv->get_fade_out_shape_width() );
|
maybe_locate_with_edit_preroll ( rv->region()->last_frame() - rv->get_fade_out_shape_width() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -590,11 +590,11 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_ENTER_NOTIFY:
|
case GDK_ENTER_NOTIFY:
|
||||||
ret = enter_handler (item, event, FadeOutHandleItem);
|
ret = enter_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GDK_LEAVE_NOTIFY:
|
case GDK_LEAVE_NOTIFY:
|
||||||
ret = leave_handler (item, event, FadeOutHandleItem);
|
ret = leave_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -1925,7 +1925,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
|
||||||
speed = tv->track()->speed();
|
speed = tv->track()->speed();
|
||||||
}
|
}
|
||||||
|
|
||||||
framecnt_t const dt = adjusted_current_frame (event) - raw_grab_frame () + _pointer_frame_offset;
|
framecnt_t dt = adjusted_current_frame (event) - raw_grab_frame () + _pointer_frame_offset;
|
||||||
|
|
||||||
if (first_move) {
|
if (first_move) {
|
||||||
|
|
||||||
|
|
@ -1941,6 +1941,9 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
|
||||||
case ContentsTrim:
|
case ContentsTrim:
|
||||||
trim_type = "Region content trim";
|
trim_type = "Region content trim";
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
assert(0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_editor->begin_reversible_command (trim_type);
|
_editor->begin_reversible_command (trim_type);
|
||||||
|
|
@ -1973,42 +1976,65 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
|
||||||
non_overlap_trim = true;
|
non_overlap_trim = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* contstrain trim to fade length */
|
||||||
|
if (_preserve_fade_anchor) {
|
||||||
|
switch (_operation) {
|
||||||
|
case StartTrim:
|
||||||
|
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
|
||||||
|
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
||||||
|
if (!arv) continue;
|
||||||
|
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
||||||
|
if (ar->locked()) continue;
|
||||||
|
framecnt_t len = ar->fade_in()->back()->when;
|
||||||
|
if (len < dt) dt = min(dt, len);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case EndTrim:
|
||||||
|
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
|
||||||
|
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
||||||
|
if (!arv) continue;
|
||||||
|
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
||||||
|
if (ar->locked()) continue;
|
||||||
|
framecnt_t len = ar->fade_out()->back()->when;
|
||||||
|
if (len < -dt) dt = max(dt, -len);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ContentsTrim:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
switch (_operation) {
|
switch (_operation) {
|
||||||
case StartTrim:
|
case StartTrim:
|
||||||
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
|
for (list<DraggingView>::iterator i = _views.begin(); i != _views.end(); ++i) {
|
||||||
bool changed = i->view->trim_front (i->initial_position + dt, non_overlap_trim);
|
bool changed = i->view->trim_front (i->initial_position + dt, non_overlap_trim);
|
||||||
if (changed && _preserve_fade_anchor) {
|
if (changed && _preserve_fade_anchor) {
|
||||||
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
||||||
if (arv) {
|
if (arv) {
|
||||||
double distance;
|
|
||||||
double new_length;
|
|
||||||
framecnt_t len;
|
|
||||||
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
||||||
distance = _drags->current_pointer_x() - grab_x();
|
framecnt_t len = ar->fade_in()->back()->when;
|
||||||
len = ar->fade_in()->back()->when;
|
framecnt_t diff = ar->first_frame() - i->initial_position;
|
||||||
new_length = len - _editor->pixel_to_sample (distance);
|
double new_length = len - diff;
|
||||||
new_length = ar->verify_xfade_bounds (new_length, true /*START*/ );
|
i->anchored_fade_length = ar->verify_xfade_bounds (new_length, true /*START*/ );
|
||||||
arv->reset_fade_in_shape_width (ar, new_length); //the grey shape
|
arv->reset_fade_in_shape_width (ar, i->anchored_fade_length, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EndTrim:
|
case EndTrim:
|
||||||
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) {
|
for (list<DraggingView>::iterator i = _views.begin(); i != _views.end(); ++i) {
|
||||||
bool changed = i->view->trim_end (i->initial_end + dt, non_overlap_trim);
|
bool changed = i->view->trim_end (i->initial_end + dt, non_overlap_trim);
|
||||||
if (changed && _preserve_fade_anchor) {
|
if (changed && _preserve_fade_anchor) {
|
||||||
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
||||||
if (arv) {
|
if (arv) {
|
||||||
double distance;
|
|
||||||
double new_length;
|
|
||||||
framecnt_t len;
|
|
||||||
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
||||||
distance = grab_x() - _drags->current_pointer_x();
|
framecnt_t len = ar->fade_out()->back()->when;
|
||||||
len = ar->fade_out()->back()->when;
|
framecnt_t diff = 1 + ar->last_frame() - i->initial_end;
|
||||||
new_length = len - _editor->pixel_to_sample (distance);
|
double new_length = len + diff;
|
||||||
new_length = ar->verify_xfade_bounds (new_length, false /*END*/ );
|
i->anchored_fade_length = ar->verify_xfade_bounds (new_length, false /*END*/ );
|
||||||
arv->reset_fade_out_shape_width (ar, new_length); //the grey shape
|
arv->reset_fade_out_shape_width (ar, i->anchored_fade_length, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2057,15 +2083,10 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||||
if (_preserve_fade_anchor) {
|
if (_preserve_fade_anchor) {
|
||||||
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
||||||
if (arv) {
|
if (arv) {
|
||||||
double distance;
|
|
||||||
double new_length;
|
|
||||||
framecnt_t len;
|
|
||||||
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
||||||
distance = _drags->current_pointer_x() - grab_x();
|
arv->reset_fade_in_shape_width (ar, i->anchored_fade_length);
|
||||||
len = ar->fade_in()->back()->when;
|
ar->set_fade_in_length(i->anchored_fade_length);
|
||||||
new_length = len - _editor->pixel_to_sample (distance);
|
ar->set_fade_in_active(true);
|
||||||
new_length = ar->verify_xfade_bounds (new_length, true /*START*/ );
|
|
||||||
ar->set_fade_in_length(new_length);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_jump_position_when_done) {
|
if (_jump_position_when_done) {
|
||||||
|
|
@ -2077,15 +2098,10 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred)
|
||||||
if (_preserve_fade_anchor) {
|
if (_preserve_fade_anchor) {
|
||||||
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (i->view);
|
||||||
if (arv) {
|
if (arv) {
|
||||||
double distance;
|
|
||||||
double new_length;
|
|
||||||
framecnt_t len;
|
|
||||||
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
boost::shared_ptr<AudioRegion> ar (arv->audio_region());
|
||||||
distance = _drags->current_pointer_x() - grab_x();
|
arv->reset_fade_out_shape_width (ar, i->anchored_fade_length);
|
||||||
len = ar->fade_out()->back()->when;
|
ar->set_fade_out_length(i->anchored_fade_length);
|
||||||
new_length = len - _editor->pixel_to_sample (distance);
|
ar->set_fade_out_active(true);
|
||||||
new_length = ar->verify_xfade_bounds (new_length, false /*END*/ );
|
|
||||||
ar->set_fade_out_length(new_length);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_jump_position_when_done) {
|
if (_jump_position_when_done) {
|
||||||
|
|
|
||||||
|
|
@ -261,6 +261,7 @@ public:
|
||||||
double initial_y; ///< the initial y position of the view before any reparenting
|
double initial_y; ///< the initial y position of the view before any reparenting
|
||||||
framepos_t initial_position; ///< initial position of the region
|
framepos_t initial_position; ///< initial position of the region
|
||||||
framepos_t initial_end; ///< initial end position of the region
|
framepos_t initial_end; ///< initial end position of the region
|
||||||
|
double anchored_fade_length; ///< fade_length when anchored during drag
|
||||||
boost::shared_ptr<ARDOUR::Playlist> initial_playlist;
|
boost::shared_ptr<ARDOUR::Playlist> initial_playlist;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,12 +45,14 @@ enum ItemType {
|
||||||
AutomationTrackItem,
|
AutomationTrackItem,
|
||||||
FadeInItem,
|
FadeInItem,
|
||||||
FadeInHandleItem,
|
FadeInHandleItem,
|
||||||
|
FadeInTrimHandleItem,
|
||||||
FadeOutItem,
|
FadeOutItem,
|
||||||
FadeOutHandleItem,
|
FadeOutHandleItem,
|
||||||
|
FadeOutTrimHandleItem,
|
||||||
NoteItem,
|
NoteItem,
|
||||||
FeatureLineItem,
|
FeatureLineItem,
|
||||||
LeftFrameHandle,
|
LeftFrameHandle,
|
||||||
RightFrameHandle,
|
RightFrameHandle,
|
||||||
StartCrossFadeItem,
|
StartCrossFadeItem,
|
||||||
EndCrossFadeItem,
|
EndCrossFadeItem,
|
||||||
CrossfadeViewItem,
|
CrossfadeViewItem,
|
||||||
|
|
|
||||||
|
|
@ -692,8 +692,10 @@ Editor::button_selection (ArdourCanvas::Item* /*item*/, GdkEvent* event, ItemTyp
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FadeInHandleItem:
|
case FadeInHandleItem:
|
||||||
|
case FadeInTrimHandleItem:
|
||||||
case FadeInItem:
|
case FadeInItem:
|
||||||
case FadeOutHandleItem:
|
case FadeOutHandleItem:
|
||||||
|
case FadeOutTrimHandleItem:
|
||||||
case FadeOutItem:
|
case FadeOutItem:
|
||||||
case StartCrossFadeItem:
|
case StartCrossFadeItem:
|
||||||
case EndCrossFadeItem:
|
case EndCrossFadeItem:
|
||||||
|
|
@ -1046,13 +1048,21 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
||||||
|
|
||||||
case RegionViewNameHighlight:
|
case RegionViewNameHighlight:
|
||||||
case LeftFrameHandle:
|
case LeftFrameHandle:
|
||||||
case RightFrameHandle:
|
case RightFrameHandle:
|
||||||
if (!clicked_regionview->region()->locked()) {
|
if (!clicked_regionview->region()->locked()) {
|
||||||
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FadeInTrimHandleItem:
|
||||||
|
case FadeOutTrimHandleItem:
|
||||||
|
if (!clicked_regionview->region()->locked()) {
|
||||||
|
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), true), event);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case RegionViewName:
|
case RegionViewName:
|
||||||
{
|
{
|
||||||
/* rename happens on edit clicks */
|
/* rename happens on edit clicks */
|
||||||
|
|
@ -1272,12 +1282,12 @@ Editor::button_press_handler_2 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
||||||
|
|
||||||
switch (item_type) {
|
switch (item_type) {
|
||||||
case RegionViewNameHighlight:
|
case RegionViewNameHighlight:
|
||||||
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LeftFrameHandle:
|
case LeftFrameHandle:
|
||||||
case RightFrameHandle:
|
case RightFrameHandle:
|
||||||
if (!internal_editing ()) {
|
if (!internal_editing ()) {
|
||||||
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
||||||
}
|
}
|
||||||
|
|
@ -1558,12 +1568,14 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
||||||
switch (item_type) {
|
switch (item_type) {
|
||||||
case FadeInItem:
|
case FadeInItem:
|
||||||
case FadeInHandleItem:
|
case FadeInHandleItem:
|
||||||
|
case FadeInTrimHandleItem:
|
||||||
case StartCrossFadeItem:
|
case StartCrossFadeItem:
|
||||||
popup_xfade_in_context_menu (1, event->button.time, item, item_type);
|
popup_xfade_in_context_menu (1, event->button.time, item, item_type);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FadeOutItem:
|
case FadeOutItem:
|
||||||
case FadeOutHandleItem:
|
case FadeOutHandleItem:
|
||||||
|
case FadeOutTrimHandleItem:
|
||||||
case EndCrossFadeItem:
|
case EndCrossFadeItem:
|
||||||
popup_xfade_out_context_menu (1, event->button.time, item, item_type);
|
popup_xfade_out_context_menu (1, event->button.time, item, item_type);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1898,7 +1910,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||||
if (is_drawable() && effective_mouse_mode() == MouseObject && !internal_editing() && entered_regionview) {
|
if (is_drawable() && effective_mouse_mode() == MouseObject && !internal_editing() && entered_regionview) {
|
||||||
set_canvas_cursor_for_region_view (event->crossing.x, entered_regionview);
|
set_canvas_cursor_for_region_view (event->crossing.x, entered_regionview);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RegionItem:
|
case RegionItem:
|
||||||
switch (effective_mouse_mode()) {
|
switch (effective_mouse_mode()) {
|
||||||
|
|
@ -1999,6 +2011,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FadeInTrimHandleItem:
|
||||||
case FadeInHandleItem:
|
case FadeInHandleItem:
|
||||||
if (mouse_mode == MouseObject && !internal_editing()) {
|
if (mouse_mode == MouseObject && !internal_editing()) {
|
||||||
ArdourCanvas::Rectangle *rect = dynamic_cast<ArdourCanvas::Rectangle *> (item);
|
ArdourCanvas::Rectangle *rect = dynamic_cast<ArdourCanvas::Rectangle *> (item);
|
||||||
|
|
@ -2010,6 +2023,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FadeOutTrimHandleItem:
|
||||||
case FadeOutHandleItem:
|
case FadeOutHandleItem:
|
||||||
if (mouse_mode == MouseObject && !internal_editing()) {
|
if (mouse_mode == MouseObject && !internal_editing()) {
|
||||||
ArdourCanvas::Rectangle *rect = dynamic_cast<ArdourCanvas::Rectangle *> (item);
|
ArdourCanvas::Rectangle *rect = dynamic_cast<ArdourCanvas::Rectangle *> (item);
|
||||||
|
|
@ -2085,6 +2099,8 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
|
||||||
case StartSelectionTrimItem:
|
case StartSelectionTrimItem:
|
||||||
case EndSelectionTrimItem:
|
case EndSelectionTrimItem:
|
||||||
case PlayheadCursorItem:
|
case PlayheadCursorItem:
|
||||||
|
case FadeInTrimHandleItem:
|
||||||
|
case FadeOutTrimHandleItem:
|
||||||
|
|
||||||
_over_region_trim_target = false;
|
_over_region_trim_target = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -326,9 +326,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
|
||||||
virtual bool canvas_start_xfade_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
virtual bool canvas_start_xfade_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
||||||
virtual bool canvas_end_xfade_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
virtual bool canvas_end_xfade_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
||||||
virtual bool canvas_fade_in_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
virtual bool canvas_fade_in_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
||||||
virtual bool canvas_fade_in_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
virtual bool canvas_fade_in_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*, bool) = 0;
|
||||||
virtual bool canvas_fade_out_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
virtual bool canvas_fade_out_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
||||||
virtual bool canvas_fade_out_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;
|
virtual bool canvas_fade_out_handle_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*, bool) = 0;
|
||||||
virtual bool canvas_region_view_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
|
virtual bool canvas_region_view_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
|
||||||
virtual bool canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
|
virtual bool canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
|
||||||
virtual bool canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
|
virtual bool canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue