time_line_group = new ArdourCanvas::Group (_track_canvas->root());
transport_loop_range_rect = new ArdourCanvas::Rectangle (time_line_group, ArdourCanvas::Rect (0.0, 0.0, 0.0, ArdourCanvas::COORD_MAX));
- transport_loop_range_rect->set_outline_width (1);
transport_loop_range_rect->hide();
transport_punch_range_rect = new ArdourCanvas::Rectangle (time_line_group, ArdourCanvas::Rect (0.0, 0.0, 0.0, ArdourCanvas::COORD_MAX));
- transport_punch_range_rect->set_outline_width (0);
transport_punch_range_rect->hide();
_trackview_group = new ArdourCanvas::Group (_track_canvas->root());
meter_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
meter_bar = new ArdourCanvas::Rectangle (meter_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
- meter_bar->set_outline_width (1);
+ CANVAS_DEBUG_NAME (meter_bar, "meter Bar");
meter_bar->set_outline_what (0x8);
tempo_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
tempo_bar = new ArdourCanvas::Rectangle (tempo_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
- tempo_bar->set_outline_width (1);
+ CANVAS_DEBUG_NAME (tempo_bar, "Tempo Bar");
tempo_bar->set_outline_what (0x8);
range_marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
range_marker_bar = new ArdourCanvas::Rectangle (range_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
- range_marker_bar->set_outline_width (1);
+ CANVAS_DEBUG_NAME (range_marker_bar, "Range Marker Bar");
range_marker_bar->set_outline_what (0x8);
transport_marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
transport_marker_bar = new ArdourCanvas::Rectangle (transport_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
- transport_marker_bar->set_outline_width (1);
+ CANVAS_DEBUG_NAME (transport_marker_bar, "transport Marker Bar");
transport_marker_bar->set_outline_what (0x8);
marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
marker_bar = new ArdourCanvas::Rectangle (marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
- marker_bar->set_outline_width (1);
+ CANVAS_DEBUG_NAME (marker_bar, "Marker Bar");
marker_bar->set_outline_what (0x8);
cd_marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
cd_marker_bar = new ArdourCanvas::Rectangle (cd_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
- cd_marker_bar->set_outline_width (1);
+ CANVAS_DEBUG_NAME (cd_marker_bar, "CD Marker Bar");
cd_marker_bar->set_outline_what (0x8);
_time_markers_group = new ArdourCanvas::Group (_time_bars_canvas->root());
// used to show zoom mode active zooming
zoom_rect = new ArdourCanvas::Rectangle (_track_canvas->root(), ArdourCanvas::Rect (0.0, 0.0, 0.0, 0.0));
- zoom_rect->set_outline_width (1);
zoom_rect->hide();
zoom_rect->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_zoom_rect_event), (ArdourCanvas::Item*) 0));
// used as rubberband rect
rubberband_rect = new ArdourCanvas::Rectangle (_trackview_group, ArdourCanvas::Rect (0.0, 0.0, 0.0, 0.0));
- rubberband_rect->set_outline_width (1);
rubberband_rect->hide();
tempo_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_tempo_bar_event), tempo_bar));
}
/** @param allow_horiz true to allow horizontal autoscroll, otherwise false.
+ *
* @param allow_vert true to allow vertical autoscroll, otherwise false.
+ *
* @param moving_left true if we are moving left, so we only want to autoscroll on the left of the canvas,
* otherwise false, so we only want to autoscroll on the right of the canvas.
+ *
* @param moving_up true if we are moving up, so we only want to autoscroll at the top of the canvas,
* otherwise false, so we only want to autoscroll at the bottom of the canvas.
*/
/* Note whether we're fudging the autoscroll (see autoscroll_fudge_threshold) */
_autoscroll_fudging = (distance < autoscroll_fudge_threshold ());
+ /* ty is in canvas-coordinate space */
+
double const ty = _drags->current_pointer_y();
+ ArdourCanvas::Rect visible = _track_canvas->visible_area();
autoscroll_y = 0;
autoscroll_x = 0;
- if (ty < 0 && moving_up && allow_vert) {
+ if (ty < visible.y0 && moving_up && allow_vert) {
autoscroll_y = -1;
startit = true;
- } else if (ty > _visible_canvas_height && !moving_up && allow_vert) {
+ } else if (ty > visible.y1 && !moving_up && allow_vert) {
autoscroll_y = 1;
startit = true;
}
framepos_t new_frame;
framepos_t limit = max_framepos - current_page_samples();
double new_pixel;
- double target_pixel;
-
+
if (autoscroll_x_distance != 0) {
if (autoscroll_x > 0) {
new_pixel = vertical_pos - autoscroll_y_distance;
}
- target_pixel = _drags->current_pointer_y() - autoscroll_y_distance;
- target_pixel = max (target_pixel, 0.0);
-
} else if (autoscroll_y > 0) {
- double const top_of_bottom_of_canvas = _full_canvas_height - _visible_canvas_height;
-
- if (vertical_pos > _full_canvas_height - autoscroll_y_distance) {
- new_pixel = _full_canvas_height;
- } else {
- new_pixel = vertical_pos + autoscroll_y_distance;
- }
-
- new_pixel = min (top_of_bottom_of_canvas, new_pixel);
-
- target_pixel = _drags->current_pointer_y() + autoscroll_y_distance;
-
- /* don't move to the full canvas height because the item will be invisible
- (its top edge will line up with the bottom of the visible canvas.
- */
-
- target_pixel = min (target_pixel, _full_canvas_height - 10);
+ new_pixel = min (_full_canvas_height - _visible_canvas_height, min (_full_canvas_height, (vertical_adjustment.get_value() + autoscroll_y_distance)));
} else {
- target_pixel = _drags->current_pointer_y();
new_pixel = vertical_pos;
}
reset_x_origin (new_frame);
}
- vertical_adjustment.set_value (new_pixel);
+ if (new_pixel != vertical_pos) {
+ vertical_adjustment.set_value (new_pixel);
+ }
/* fake an event. */
{
DropDownKeys ();
within_track_canvas = false;
- //cerr << "left track canvas\n";
set_entered_track (0);
set_entered_regionview (0);
reset_canvas_action_sensitivity (false);
bool
Editor::entered_track_canvas (GdkEventCrossing */*ev*/)
{
- //cerr << "entered track canvas\n";
within_track_canvas = true;
reset_canvas_action_sensitivity (true);
return FALSE;
void
Editor::color_handler()
{
- playhead_cursor->set_color (ARDOUR_UI::config()->canvasvar_PlayHead.get());
- _verbose_cursor->set_color (ARDOUR_UI::config()->canvasvar_VerboseCanvasCursor.get());
+ playhead_cursor->set_color (ARDOUR_UI::config()->get_canvasvar_PlayHead());
+ _verbose_cursor->set_color (ARDOUR_UI::config()->get_canvasvar_VerboseCanvasCursor());
- meter_bar->set_fill_color (ARDOUR_UI::config()->canvasvar_MeterBar.get());
- meter_bar->set_outline_color (ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get());
+ meter_bar->set_fill_color (ARDOUR_UI::config()->get_canvasvar_MeterBar());
+ meter_bar->set_outline_color (ARDOUR_UI::config()->get_canvasvar_MarkerBarSeparator());
- tempo_bar->set_fill_color (ARDOUR_UI::config()->canvasvar_TempoBar.get());
- tempo_bar->set_outline_color (ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get());
+ tempo_bar->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TempoBar());
+ tempo_bar->set_outline_color (ARDOUR_UI::config()->get_canvasvar_MarkerBarSeparator());
- marker_bar->set_fill_color (ARDOUR_UI::config()->canvasvar_MarkerBar.get());
- marker_bar->set_outline_color (ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get());
+ marker_bar->set_fill_color (ARDOUR_UI::config()->get_canvasvar_MarkerBar());
+ marker_bar->set_outline_color (ARDOUR_UI::config()->get_canvasvar_MarkerBarSeparator());
- cd_marker_bar->set_fill_color (ARDOUR_UI::config()->canvasvar_CDMarkerBar.get());
- cd_marker_bar->set_outline_color (ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get());
+ cd_marker_bar->set_fill_color (ARDOUR_UI::config()->get_canvasvar_CDMarkerBar());
+ cd_marker_bar->set_outline_color (ARDOUR_UI::config()->get_canvasvar_MarkerBarSeparator());
- range_marker_bar->set_fill_color (ARDOUR_UI::config()->canvasvar_RangeMarkerBar.get());
- range_marker_bar->set_outline_color (ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get());
+ range_marker_bar->set_fill_color (ARDOUR_UI::config()->get_canvasvar_RangeMarkerBar());
+ range_marker_bar->set_outline_color (ARDOUR_UI::config()->get_canvasvar_MarkerBarSeparator());
- transport_marker_bar->set_fill_color (ARDOUR_UI::config()->canvasvar_TransportMarkerBar.get());
- transport_marker_bar->set_outline_color (ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get());
+ transport_marker_bar->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TransportMarkerBar());
+ transport_marker_bar->set_outline_color (ARDOUR_UI::config()->get_canvasvar_MarkerBarSeparator());
- cd_marker_bar_drag_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get());
- cd_marker_bar_drag_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get());
+ cd_marker_bar_drag_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_RangeDragBarRect());
+ cd_marker_bar_drag_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_RangeDragBarRect());
- range_bar_drag_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get());
- range_bar_drag_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get());
+ range_bar_drag_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_RangeDragBarRect());
+ range_bar_drag_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_RangeDragBarRect());
- transport_bar_drag_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_TransportDragRect.get());
- transport_bar_drag_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_TransportDragRect.get());
+ transport_bar_drag_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TransportDragRect());
+ transport_bar_drag_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_TransportDragRect());
- transport_loop_range_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_TransportLoopRect.get());
- transport_loop_range_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_TransportLoopRect.get());
+ transport_loop_range_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TransportLoopRect());
+ transport_loop_range_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_TransportLoopRect());
- transport_punch_range_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_TransportPunchRect.get());
- transport_punch_range_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_TransportPunchRect.get());
+ transport_punch_range_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TransportPunchRect());
+ transport_punch_range_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_TransportPunchRect());
- transport_punchin_line->set_outline_color (ARDOUR_UI::config()->canvasvar_PunchLine.get());
- transport_punchout_line->set_outline_color (ARDOUR_UI::config()->canvasvar_PunchLine.get());
+ transport_punchin_line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_PunchLine());
+ transport_punchout_line->set_outline_color (ARDOUR_UI::config()->get_canvasvar_PunchLine());
- zoom_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_ZoomRect.get());
- zoom_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_ZoomRect.get());
+ zoom_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_ZoomRect());
+ zoom_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_ZoomRect());
- rubberband_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_RubberBandRect.get());
- rubberband_rect->set_fill_color ((guint32) ARDOUR_UI::config()->canvasvar_RubberBandRect.get());
+ rubberband_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_RubberBandRect());
+ rubberband_rect->set_fill_color ((guint32) ARDOUR_UI::config()->get_canvasvar_RubberBandRect());
- location_marker_color = ARDOUR_UI::config()->canvasvar_LocationMarker.get();
- location_range_color = ARDOUR_UI::config()->canvasvar_LocationRange.get();
- location_cd_marker_color = ARDOUR_UI::config()->canvasvar_LocationCDMarker.get();
- location_loop_color = ARDOUR_UI::config()->canvasvar_LocationLoop.get();
- location_punch_color = ARDOUR_UI::config()->canvasvar_LocationPunch.get();
+ location_marker_color = ARDOUR_UI::config()->get_canvasvar_LocationMarker();
+ location_range_color = ARDOUR_UI::config()->get_canvasvar_LocationRange();
+ location_cd_marker_color = ARDOUR_UI::config()->get_canvasvar_LocationCDMarker();
+ location_loop_color = ARDOUR_UI::config()->get_canvasvar_LocationLoop();
+ location_punch_color = ARDOUR_UI::config()->get_canvasvar_LocationPunch();
refresh_location_display ();
/*