start_xfade_rect->property_fill() = true;;
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));
}
Points* points = get_canvas_points ("xfade edit redraw", npoints);
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));
}
Points* points = get_canvas_points ("xfade edit redraw", npoints);
items.clear ();
switch (item_type) {
+ case StartCrossFadeItem:
+ case EndCrossFadeItem:
+ break;
case FadeInItem:
case FadeInHandleItem:
if (arv->audio_region()->fade_in_active()) {
bool canvas_selection_rect_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*);
bool canvas_selection_start_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*);
bool canvas_selection_end_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*);
+ bool canvas_start_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_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
bool canvas_fade_out_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
return ret;
}
+bool
+Editor::canvas_start_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
+{
+ if (!rv->sensitive()) {
+ return false;
+ }
+
+ switch (event->type) {
+ case GDK_BUTTON_PRESS:
+ clicked_regionview = rv;
+ clicked_control_point = 0;
+ clicked_axisview = &rv->get_time_axis_view();
+ clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
+ if (event->button.button == 3) {
+ return button_press_handler (item, event, StartCrossFadeItem);
+ }
+ break;
+
+ case GDK_BUTTON_RELEASE:
+ if (event->button.button == 3) {
+ return button_release_handler (item, event, StartCrossFadeItem);
+ }
+ break;
+
+ default:
+ break;
+
+ }
+
+ /* proxy for the regionview */
+
+ return canvas_region_view_event (event, rv->get_canvas_group(), rv);
+}
+
+bool
+Editor::canvas_end_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
+{
+ if (!rv->sensitive()) {
+ return false;
+ }
+
+ switch (event->type) {
+ case GDK_BUTTON_PRESS:
+ clicked_regionview = rv;
+ clicked_control_point = 0;
+ clicked_axisview = &rv->get_time_axis_view();
+ clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
+ if (event->button.button == 3) {
+ return button_press_handler (item, event, EndCrossFadeItem);
+ }
+ break;
+
+ case GDK_BUTTON_RELEASE:
+ if (event->button.button == 3) {
+ return button_release_handler (item, event, EndCrossFadeItem);
+ }
+ break;
+
+ default:
+ break;
+
+ }
+
+ /* proxy for the regionview */
+
+ return canvas_region_view_event (event, rv->get_canvas_group(), rv);
+}
+
bool
Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
{
FeatureLineItem,
LeftFrameHandle,
RightFrameHandle,
+ StartCrossFadeItem,
+ EndCrossFadeItem,
#ifdef WITH_CMT
MarkerViewItem,
break;
+ case StartCrossFadeItem:
+ case EndCrossFadeItem:
+ break;
+
case FadeInHandleItem:
case FadeInItem:
case FadeOutHandleItem:
virtual bool canvas_selection_rect_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0;
virtual bool canvas_selection_start_trim_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0;
virtual bool canvas_selection_end_trim_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 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_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_out_event (GdkEvent* event, ArdourCanvas::Item*, AudioRegionView*) = 0;