From ecfd2a74552a45781e4d57a09e73313cd8815a4d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 12 Apr 2013 11:09:49 -0400 Subject: remove all unit-based methods from (Public)Editor; rationalize Editor::event_frame() to clearly identify whether the passed-in GdkEvent has window units or canvas units (the latter will be true for all events that are handled by the canvas and then passed to Editor --- gtk2_ardour/automation_line.cc | 10 +-- gtk2_ardour/editor.cc | 6 +- gtk2_ardour/editor.h | 36 +++++------ gtk2_ardour/editor_canvas.cc | 12 ++-- gtk2_ardour/editor_canvas_events.cc | 20 ++---- gtk2_ardour/editor_cursors.cc | 2 +- gtk2_ardour/editor_drag.cc | 30 ++++----- gtk2_ardour/editor_imageframe.cc | 12 ++-- gtk2_ardour/editor_mouse.cc | 119 +++++++++++++++++------------------- gtk2_ardour/editor_ops.cc | 18 ++---- gtk2_ardour/editor_summary.cc | 2 +- gtk2_ardour/editor_videotimeline.cc | 4 +- gtk2_ardour/marker.cc | 4 +- gtk2_ardour/public_editor.h | 7 +-- gtk2_ardour/time_axis_view.cc | 4 +- gtk2_ardour/video_image_frame.cc | 4 +- gtk2_ardour/video_timeline.cc | 2 +- 17 files changed, 130 insertions(+), 162 deletions(-) diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc index 460802309a..72098fd7c8 100644 --- a/gtk2_ardour/automation_line.cc +++ b/gtk2_ardour/automation_line.cc @@ -243,7 +243,7 @@ AutomationLine::modify_point_y (ControlPoint& cp, double y) y = min (1.0, y); y = _height - (y * _height); - double const x = trackview.editor().frame_to_unit_unrounded (_time_converter->to((*cp.model())->when) - _offset); + double const x = trackview.editor().frame_to_pixel_unrounded (_time_converter->to((*cp.model())->when) - _offset); trackview.editor().session()->begin_reversible_command (_("automation event move")); trackview.editor().session()->add_command ( @@ -739,10 +739,10 @@ AutomationLine::sync_model_with_view_point (ControlPoint& cp) /* if xval has not changed, set it directly from the model to avoid rounding errors */ - if (view_x == trackview.editor().frame_to_unit_unrounded (_time_converter->to ((*cp.model())->when)) - _offset) { + if (view_x == trackview.editor().frame_to_pixel_unrounded (_time_converter->to ((*cp.model())->when)) - _offset) { view_x = (*cp.model())->when - _offset; } else { - view_x = trackview.editor().unit_to_frame (view_x); + view_x = trackview.editor().pixel_to_frame (view_x); view_x = _time_converter->from (view_x + _offset); } @@ -760,7 +760,7 @@ AutomationLine::control_points_adjacent (double xval, uint32_t & before, uint32_ ControlPoint *acp = 0; double unit_xval; - unit_xval = trackview.editor().frame_to_unit_unrounded (xval); + unit_xval = trackview.editor().frame_to_pixel_unrounded (xval); for (vector::iterator i = control_points.begin(); i != control_points.end(); ++i) { @@ -947,7 +947,7 @@ AutomationLine::reset_callback (const Evoral::ControlList& events) * zoom and scroll into account). */ - tx = trackview.editor().frame_to_unit_unrounded (tx); + tx = trackview.editor().frame_to_pixel_unrounded (tx); /* convert from canonical view height (0..1.0) to actual * height coordinates (using X11's top-left rooted system) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 613a73e5c9..f72e33bf46 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2833,12 +2833,12 @@ Editor::snap_to_internal (framepos_t& start, int32_t direction, bool for_mark) case SnapMagnetic: if (presnap > start) { - if (presnap > (start + unit_to_frame(snap_threshold))) { + if (presnap > (start + pixel_to_frame(snap_threshold))) { start = presnap; } } else if (presnap < start) { - if (presnap < (start - unit_to_frame(snap_threshold))) { + if (presnap < (start - pixel_to_frame(snap_threshold))) { start = presnap; } } @@ -4400,7 +4400,7 @@ Editor::get_preferred_edit_position (bool ignore_playhead, bool from_context_men EditPoint ep = _edit_point; if (from_context_menu && (ep == EditAtMouse)) { - return event_frame (&context_click_event, 0, 0); + return window_event_frame (&context_click_event, 0, 0); } if (entered_marker) { diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index edb0e8761b..897ea0afee 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -220,24 +220,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void separate_regions_using_location (ARDOUR::Location&); void transition_to_rolling (bool forward); - /* undo related */ - - framepos_t unit_to_frame (double unit) const { - return (framepos_t) rint (unit * frames_per_pixel); - } - - double frame_to_unit (framepos_t frame) const { - return rint ((double) frame / (double) frames_per_pixel); - } - - double frame_to_unit_unrounded (framepos_t frame) const { - return frame / frames_per_pixel; - } - - double frame_to_unit (double frame) const { - return rint (frame / frames_per_pixel); - } - /* NOTE: these functions assume that the "pixel" coordinate is the result of using the world->canvas affine transform on a world coordinate. These coordinates already take into @@ -260,8 +242,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD } } - gulong frame_to_pixel (framepos_t frame) const { - return (gulong) rint (frame / frames_per_pixel); + double frame_to_pixel (framepos_t frame) const { + return rint (frame / frames_per_pixel); + } + + double frame_to_pixel_unrounded (framepos_t frame) const { + return frame / frames_per_pixel; } void flush_canvas (); @@ -1885,7 +1871,15 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void duplicate_range (bool with_dialog); - framepos_t event_frame (GdkEvent const *, double* px = 0, double* py = 0) const; + /** computes the timeline frame (sample) of an event whose coordinates + * are in canvas units (pixels, scroll offset included). + */ + framepos_t canvas_event_frame (GdkEvent const *, double* px = 0, double* py = 0) const; + + /** computes the timeline frame (sample) of an event whose coordinates + * are in window units (pixels, no scroll offset). + */ + framepos_t window_event_frame (GdkEvent const *, double* px = 0, double* py = 0) const; /* returns false if mouse pointer is not in track or marker canvas */ diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index d7a5373637..5b5ae3e0de 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -422,8 +422,6 @@ Editor::drop_paths (const RefPtr& context, vector paths; GdkEvent ev; framepos_t frame; - double wx; - double wy; double cy; if (convert_drop_to_paths (paths, context, x, y, data, info, time) == 0) { @@ -431,13 +429,11 @@ Editor::drop_paths (const RefPtr& context, /* D-n-D coordinates are window-relative, so convert to "world" coordinates */ - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - ev.type = GDK_BUTTON_RELEASE; - ev.button.x = wx; - ev.button.y = wy; + ev.button.x = x; + ev.button.y = y; - frame = event_frame (&ev, 0, &cy); + frame = window_event_frame (&ev, 0, &cy); snap_to (frame); @@ -916,7 +912,7 @@ Editor::update_canvas_now () double Editor::horizontal_position () const { - return frame_to_unit (leftmost_frame); + return frame_to_pixel (leftmost_frame); } void diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index afbfff2248..0c55da8a0a 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -1003,8 +1003,6 @@ Editor::canvas_note_event (GdkEvent *event, ArdourCanvas::Item* item) bool Editor::track_canvas_drag_motion (Glib::RefPtr const& context, int x, int y, guint time) { - ArdourCanvas::Coord wx; - ArdourCanvas::Coord wy; boost::shared_ptr region; boost::shared_ptr region_copy; RouteTimeAxisView* rtav; @@ -1018,15 +1016,13 @@ Editor::track_canvas_drag_motion (Glib::RefPtr const& context, return false; } - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - event.type = GDK_MOTION_NOTIFY; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; /* assume we're dragging with button 1 */ event.motion.state = Gdk::BUTTON1_MASK; - (void) event_frame (&event, &px, &py); + (void) window_event_frame (&event, &px, &py); std::pair const tv = trackview_by_y_position (py); bool can_drop = false; @@ -1096,8 +1092,6 @@ Editor::drop_regions (const Glib::RefPtr& /*context*/, const SelectionData& /*data*/, guint /*info*/, guint /*time*/) { - double wx; - double wy; boost::shared_ptr region; boost::shared_ptr region_copy; RouteTimeAxisView* rtav; @@ -1105,15 +1099,13 @@ Editor::drop_regions (const Glib::RefPtr& /*context*/, double px; double py; - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - event.type = GDK_MOTION_NOTIFY; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; /* assume we're dragging with button 1 */ event.motion.state = Gdk::BUTTON1_MASK; - framepos_t const pos = event_frame (&event, &px, &py); + framepos_t const pos = window_event_frame (&event, &px, &py); std::pair const tv = trackview_by_y_position (py); diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index afe5b22bfc..81fba54b78 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -67,7 +67,7 @@ EditorCursor::set_position (framepos_t frame) { PositionChanged (frame); - double const new_pos = _editor.frame_to_unit (frame); + double const new_pos = _editor.frame_to_pixel (frame); if (new_pos != _time_bars_canvas_item.x ()) { _time_bars_canvas_item.set_x (new_pos); diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 250951f438..270f5f7d31 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -127,7 +127,7 @@ DragManager::start_grab (GdkEvent* e, Gdk::Cursor* c) _old_follow_playhead = _editor->follow_playhead (); _editor->set_follow_playhead (false); - _current_pointer_frame = _editor->event_frame (e, &_current_pointer_x, &_current_pointer_y); + _current_pointer_frame = _editor->canvas_event_frame (e, &_current_pointer_x, &_current_pointer_y); for (list::const_iterator i = _drags.begin(); i != _drags.end(); ++i) { (*i)->start_grab (e, c); @@ -165,7 +165,7 @@ DragManager::motion_handler (GdkEvent* e, bool from_autoscroll) { bool r = false; - _current_pointer_frame = _editor->event_frame (e, &_current_pointer_x, &_current_pointer_y); + _current_pointer_frame = _editor->canvas_event_frame (e, &_current_pointer_x, &_current_pointer_y); for (list::iterator i = _drags.begin(); i != _drags.end(); ++i) { bool const t = (*i)->motion_handler (e, from_autoscroll); @@ -232,7 +232,7 @@ Drag::start_grab (GdkEvent* event, Gdk::Cursor *cursor) _y_constrained = false; } - _raw_grab_frame = _editor->event_frame (event, &_grab_x, &_grab_y); + _raw_grab_frame = _editor->canvas_event_frame (event, &_grab_x, &_grab_y); setup_pointer_frame_offset (); _grab_frame = adjusted_frame (_raw_grab_frame, event); _last_pointer_frame = _grab_frame; @@ -1896,7 +1896,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move) boost::shared_ptr ar (arv->audio_region()); distance = _drags->current_pointer_x() - grab_x(); len = ar->fade_in()->back()->when; - new_length = len - _editor->unit_to_frame (distance); + new_length = len - _editor->pixel_to_frame (distance); new_length = ar->verify_xfade_bounds (new_length, true /*START*/ ); arv->reset_fade_in_shape_width (ar, new_length); //the grey shape } @@ -1916,7 +1916,7 @@ TrimDrag::motion (GdkEvent* event, bool first_move) boost::shared_ptr ar (arv->audio_region()); distance = grab_x() - _drags->current_pointer_x(); len = ar->fade_out()->back()->when; - new_length = len - _editor->unit_to_frame (distance); + new_length = len - _editor->pixel_to_frame (distance); new_length = ar->verify_xfade_bounds (new_length, false /*END*/ ); arv->reset_fade_out_shape_width (ar, new_length); //the grey shape } @@ -1990,7 +1990,7 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred) boost::shared_ptr ar (arv->audio_region()); distance = _drags->current_pointer_x() - grab_x(); len = ar->fade_in()->back()->when; - new_length = len - _editor->unit_to_frame (distance); + new_length = len - _editor->pixel_to_frame (distance); new_length = ar->verify_xfade_bounds (new_length, true /*START*/ ); ar->set_fade_in_length(new_length); } @@ -2007,7 +2007,7 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred) boost::shared_ptr ar (arv->audio_region()); distance = _drags->current_pointer_x() - grab_x(); len = ar->fade_out()->back()->when; - new_length = len - _editor->unit_to_frame (distance); + new_length = len - _editor->pixel_to_frame (distance); new_length = ar->verify_xfade_bounds (new_length, false /*END*/ ); ar->set_fade_out_length(new_length); } @@ -2387,7 +2387,7 @@ CursorDrag::start_grab (GdkEvent* event, Gdk::Cursor* c) _grab_zoom = _editor->frames_per_pixel; - framepos_t where = _editor->event_frame (event, 0, 0); + framepos_t where = _editor->canvas_event_frame (event, 0, 0); _editor->snap_to_with_modifier (where, event); _editor->_dragging_playhead = true; @@ -3140,7 +3140,7 @@ ControlPointDrag::motion (GdkEvent* event, bool) cy = max (0.0, cy); cy = min ((double) _point->line().height(), cy); - framepos_t cx_frames = _editor->unit_to_frame (cx); + framepos_t cx_frames = _editor->pixel_to_frame (cx); if (!_x_constrained) { _editor->snap_to_with_modifier (cx_frames, event); @@ -3150,7 +3150,7 @@ ControlPointDrag::motion (GdkEvent* event, bool) float const fraction = 1.0 - (cy / _point->line().height()); - _point->line().drag_motion (_editor->frame_to_unit_unrounded (cx_frames), fraction, false, _pushing, _final_index); + _point->line().drag_motion (_editor->frame_to_pixel_unrounded (cx_frames), fraction, false, _pushing, _final_index); _editor->verbose_cursor()->set_text (_point->line().get_verbose_cursor_string (fraction)); } @@ -4279,7 +4279,7 @@ frameoffset_t NoteDrag::total_dx () const { /* dx in frames */ - frameoffset_t const dx = _editor->unit_to_frame (_drags->current_pointer_x() - grab_x()); + frameoffset_t const dx = _editor->pixel_to_frame (_drags->current_pointer_x() - grab_x()); /* primary note time */ frameoffset_t const n = _region->source_beats_to_absolute_frames (_primary->note()->time ()); @@ -4319,7 +4319,7 @@ NoteDrag::motion (GdkEvent *, bool) int8_t const dy = total_dy (); /* Now work out what we have to do to the note canvas items to set this new drag delta */ - double const tdx = _editor->frame_to_unit (dx) - _cumulative_dx; + double const tdx = _editor->frame_to_pixel (dx) - _cumulative_dx; double const tdy = -dy * _note_height - _cumulative_dy; if (tdx || tdy) { @@ -4641,7 +4641,7 @@ PatchChangeDrag::motion (GdkEvent* ev, bool) f = min (f, r->last_frame ()); framecnt_t const dxf = f - grab_frame(); // permitted dx in frames - double const dxu = _editor->frame_to_unit (dxf); // permitted fx in units + double const dxu = _editor->frame_to_pixel (dxf); // permitted fx in units _patch_change->move (ArdourCanvas::Duple (dxu - _cumulative_dx, 0)); _cumulative_dx = dxu; } @@ -4905,7 +4905,7 @@ CrossfadeEdgeDrag::motion (GdkEvent*, bool) /* how long should it be ? */ - new_length = len + _editor->unit_to_frame (distance); + new_length = len + _editor->pixel_to_frame (distance); /* now check with the region that this is legal */ @@ -4935,7 +4935,7 @@ CrossfadeEdgeDrag::finished (GdkEvent*, bool) len = ar->fade_out()->back()->when; } - new_length = ar->verify_xfade_bounds (len + _editor->unit_to_frame (distance), start); + new_length = ar->verify_xfade_bounds (len + _editor->pixel_to_frame (distance), start); _editor->begin_reversible_command ("xfade trim"); ar->playlist()->clear_owned_changes (); diff --git a/gtk2_ardour/editor_imageframe.cc b/gtk2_ardour/editor_imageframe.cc index e1c3a5bf4a..9b00d53dd0 100644 --- a/gtk2_ardour/editor_imageframe.cc +++ b/gtk2_ardour/editor_imageframe.cc @@ -491,7 +491,7 @@ Editor::markerview_drag_motion_callback(ArdourCanvas::Item*, GdkEvent* event) framepos_t pending_region_position ; framepos_t pointer_frame ; - pointer_frame = event_frame(event, &cx, &cy) ; + pointer_frame = canvas_event_frame(event, &cx, &cy) ; snap_to(pointer_frame) ; @@ -539,7 +539,7 @@ Editor::imageframe_drag_motion_callback(ArdourCanvas::Item*, GdkEvent* event) framepos_t pending_region_position; framepos_t pointer_frame; - pointer_frame = event_frame(event, &cx, &cy) ; + pointer_frame = canvas_event_frame(event, &cx, &cy) ; snap_to(pointer_frame) ; @@ -676,7 +676,7 @@ Editor::imageframe_start_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* framepos_t start = 0 ; framepos_t end = 0 ; - framepos_t pointer_frame = event_frame(event) ; + framepos_t pointer_frame = canvas_event_frame(event) ; // chekc th eposition of the item is not locked if(!ifv->get_position_locked()) { @@ -765,7 +765,7 @@ Editor::imageframe_end_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* ev framepos_t start = 0 ; framepos_t end = 0 ; - framepos_t pointer_frame = event_frame(event) ; + framepos_t pointer_frame = canvas_event_frame(event) ; framepos_t new_dur_val = 0 ; snap_to(pointer_frame) ; @@ -890,7 +890,7 @@ Editor::markerview_start_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* framepos_t start = 0 ; framepos_t end = 0 ; - framepos_t pointer_frame = event_frame(event) ; + framepos_t pointer_frame = canvas_event_frame(event) ; // chekc th eposition of the item is not locked if(!mv->get_position_locked()) @@ -982,7 +982,7 @@ Editor::markerview_end_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* ev framepos_t start = 0 ; framepos_t end = 0 ; - framepos_t pointer_frame = event_frame(event) ; + framepos_t pointer_frame = canvas_event_frame(event) ; framepos_t new_dur_val = 0 ; snap_to(pointer_frame) ; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 563ec8bc3f..8a1c478593 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -102,86 +102,81 @@ Editor::mouse_frame (framepos_t& where, bool& in_track_canvas) const } int x, y; - double wx, wy; - Gdk::ModifierType mask; - Glib::RefPtr canvas_window = const_cast(this)->_track_canvas_viewport->get_window(); - Glib::RefPtr pointer_window; + Glib::RefPtr canvas_window = const_cast(this)->_track_canvas->get_window(); if (!canvas_window) { return false; } - pointer_window = canvas_window->get_pointer (x, y, mask); + Glib::RefPtr pointer_window = Gdk::Display::get_default()->get_window_at_pointer (x, y); - if (pointer_window == _track_canvas->get_window()) { - wx = x; - wy = y; - in_track_canvas = true; - } else { + if (!pointer_window) { + return false; + } + + if (pointer_window != canvas_window && pointer_window != _time_bars_canvas->get_window()) { in_track_canvas = false; return false; } + in_track_canvas = true; + GdkEvent event; event.type = GDK_BUTTON_RELEASE; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; + + where = window_event_frame (&event, 0, 0); - where = event_frame (&event, 0, 0); return true; } framepos_t -Editor::event_frame (GdkEvent const * event, double* pcx, double* pcy) const +Editor::window_event_frame (GdkEvent const * event, double* pcx, double* pcy) const { - using ArdourCanvas::Duple; - Duple d; - double cx, cy; + double x; + double y; - if (pcx == 0) { - pcx = &cx; + if (!gdk_event_get_coords (event, &x, &y)) { + return 0; } - if (pcy == 0) { - pcy = &cy; - } - - *pcx = 0; - *pcy = 0; - /* The event coordinates will be window coordinates and we need canvas - * coordinates (units are pixels as with the window, but scrolling is taken into account) + /* event coordinates are in window units, so convert to canvas + * (i.e. account for scrolling) */ - switch (event->type) { - case GDK_BUTTON_RELEASE: - case GDK_BUTTON_PRESS: - case GDK_2BUTTON_PRESS: - case GDK_3BUTTON_PRESS: - d = _track_canvas->window_to_canvas (Duple (event->button.x, event->button.y)); - *pcx = d.x; - *pcy = d.y; - break; - case GDK_MOTION_NOTIFY: - d = _track_canvas->window_to_canvas (Duple (event->motion.x, event->motion.y)); - *pcx = d.x; - *pcy = d.y; - break; - case GDK_ENTER_NOTIFY: - case GDK_LEAVE_NOTIFY: - d = _track_canvas->window_to_canvas (Duple (event->crossing.x, event->crossing.y)); + ArdourCanvas::Duple d = _track_canvas->window_to_canvas (ArdourCanvas::Duple (x, y)); + + if (pcx) { *pcx = d.x; + } + + if (pcy) { *pcy = d.y; - break; - case GDK_KEY_PRESS: - case GDK_KEY_RELEASE: - // need to get pointer for this to work - // d = _track_canvas->window_to_canvas (Duple (event->key.x, event->key.y)); - *pcx = 0; - *pcy = 0; - break; - default: - warning << string_compose (_("Editor::event_frame() used on unhandled event type %1"), event->type) << endmsg; - break; + } + + return pixel_to_frame (d.x); +} + +framepos_t +Editor::canvas_event_frame (GdkEvent const * event, double* pcx, double* pcy) const +{ + double x; + double y; + + /* event coordinates are already in canvas units */ + + if (!gdk_event_get_coords (event, &x, &y)) { + cerr << "!NO c COORDS for event type " << event->type << endl; + return 0; + } + + if (pcx) { + *pcx = x; + } + + if (pcy) { + *pcy = y; } /* note that pixel_to_frame() never returns less than zero, so even if the pixel @@ -189,7 +184,7 @@ Editor::event_frame (GdkEvent const * event, double* pcx, double* pcy) const the frame location is always positive. */ - return pixel_to_frame (*pcx); + return pixel_to_frame (x); } Gdk::Cursor* @@ -1086,7 +1081,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT _drags->set (new RegionCreateDrag (this, item, parent), event); } else { /* See if there's a region before the click that we can extend, and extend it if so */ - framepos_t const t = event_frame (event); + framepos_t const t = canvas_event_frame (event); boost::shared_ptr prev = pl->find_next_region (t, End, -1); if (!prev) { _drags->set (new RegionCreateDrag (this, item, parent), event); @@ -1124,7 +1119,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT boost::shared_ptr pl = t->playlist (); if (pl) { - boost::shared_ptr r = pl->top_region_at (event_frame (event)); + boost::shared_ptr r = pl->top_region_at (canvas_event_frame (event)); if (r) { RegionView* rv = rtv->view()->find_view (r); clicked_selection = select_range (rv->region()->position(), @@ -1316,9 +1311,9 @@ Editor::button_press_handler_2 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case MouseZoom: if (Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) { - temporal_zoom_to_frame (false, event_frame (event)); + temporal_zoom_to_frame (false, canvas_event_frame (event)); } else { - temporal_zoom_to_frame (true, event_frame(event)); + temporal_zoom_to_frame (true, canvas_event_frame(event)); } return true; break; @@ -1411,7 +1406,7 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp //not rolling, range mode click + join_play_range : locate the PH here if ( !_drags->active () && !_session->transport_rolling() && ( effective_mouse_mode() == MouseRange ) && Config->get_always_play_range() ) { - framepos_t where = event_frame (event, 0, 0); + framepos_t where = canvas_event_frame (event, 0, 0); snap_to(where); _session->request_locate (where, false); } @@ -1460,7 +1455,7 @@ Editor::button_release_dispatch (GdkEventButton* ev) bool Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) { - framepos_t where = event_frame (event, 0, 0); + framepos_t where = canvas_event_frame (event, 0, 0); AutomationTimeAxisView* atv = 0; if (pre_press_cursor) { diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index c4f084170a..1e96f378a7 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1964,20 +1964,17 @@ Editor::unhide_ranges () void Editor::insert_region_list_drag (boost::shared_ptr region, int x, int y) { - double wx, wy; double cx, cy; framepos_t where; RouteTimeAxisView *rtv = 0; boost::shared_ptr playlist; - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - GdkEvent event; event.type = GDK_BUTTON_RELEASE; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; - where = event_frame (&event, &cx, &cy); + where = window_event_frame (&event, &cx, &cy); if (where < leftmost_frame || where > leftmost_frame + current_page_frames()) { /* clearly outside canvas area */ @@ -2009,19 +2006,16 @@ Editor::insert_region_list_drag (boost::shared_ptr region, int x, int y) void Editor::insert_route_list_drag (boost::shared_ptr route, int x, int y) { - double wx, wy; double cx, cy; RouteTimeAxisView *dest_rtv = 0; RouteTimeAxisView *source_rtv = 0; - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - GdkEvent event; event.type = GDK_BUTTON_RELEASE; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; - event_frame (&event, &cx, &cy); + window_event_frame (&event, &cx, &cy); std::pair const tv = trackview_by_y_position (cy); if (tv.first == 0) { diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc index b1fa984027..6d7ddd05c1 100644 --- a/gtk2_ardour/editor_summary.cc +++ b/gtk2_ardour/editor_summary.cc @@ -778,7 +778,7 @@ EditorSummary::set_editor_x (pair x) double const nx = ( ((x.second - x.first) / _x_scale) / - _editor->frame_to_unit (_editor->current_page_frames()) + _editor->frame_to_pixel (_editor->current_page_frames()) ); if (nx != _editor->get_current_zoom ()) { diff --git a/gtk2_ardour/editor_videotimeline.cc b/gtk2_ardour/editor_videotimeline.cc index e1adb6c8b6..4951a4e35a 100644 --- a/gtk2_ardour/editor_videotimeline.cc +++ b/gtk2_ardour/editor_videotimeline.cc @@ -58,8 +58,8 @@ Editor::update_video_timeline (bool flush) #if DEBUG framepos_t rightmost_frame = leftmost_frame + current_page_frames(); std::cout << "VIDEO SCROLL: " << leftmost_frame << " -- " << rightmost_frame << std::endl; - std::cout << "SCROLL UNITS: " << frame_to_unit(leftmost_frame) << " -- " << frame_to_unit(rightmost_frame) - << " = " << frame_to_unit(rightmost_frame) - frame_to_unit(leftmost_frame) + std::cout << "SCROLL UNITS: " << frame_to_pixel(leftmost_frame) << " -- " << frame_to_pixel(rightmost_frame) + << " = " << frame_to_pixel(rightmost_frame) - frame_to_pixel(leftmost_frame) << std::endl; #endif diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index e9fcb9112e..ed65cc221b 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -234,7 +234,7 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con } frame_position = frame; - unit_position = editor.frame_to_unit (frame); + unit_position = editor.frame_to_pixel (frame); unit_position -= _shift; group = new ArdourCanvas::Group (&parent, ArdourCanvas::Duple (unit_position, 0)); @@ -429,7 +429,7 @@ Marker::setup_name_display () void Marker::set_position (framepos_t frame) { - unit_position = editor.frame_to_unit (frame) - _shift; + unit_position = editor.frame_to_pixel (frame) - _shift; group->set_x_position (unit_position); frame_position = frame; } diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 89c75bdd94..0c82d92d5e 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -198,12 +198,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual void separate_region_from_selection () = 0; virtual void transition_to_rolling (bool fwd) = 0; - virtual framepos_t unit_to_frame (double unit) const = 0; - virtual double frame_to_unit (framepos_t frame) const = 0; - virtual double frame_to_unit (double frame) const = 0; - virtual double frame_to_unit_unrounded (framepos_t frame) const = 0; virtual framepos_t pixel_to_frame (double pixel) const = 0; - virtual gulong frame_to_pixel (framepos_t frame) const = 0; + virtual double frame_to_pixel (framepos_t frame) const = 0; + virtual double frame_to_pixel_unrounded (framepos_t frame) const = 0; virtual Selection& get_selection () const = 0; virtual Selection& get_cut_buffer () const = 0; virtual void track_mixer_selection () = 0; diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 4408b88f86..122a445564 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -856,8 +856,8 @@ TimeAxisView::show_selection (TimeSelection& ts) rect = get_selection_rect ((*i).id); - x1 = _editor.frame_to_unit (start); - x2 = _editor.frame_to_unit (start + cnt - 1); + x1 = _editor.frame_to_pixel (start); + x2 = _editor.frame_to_pixel (start + cnt - 1); y2 = current_height(); rect->rect->set (ArdourCanvas::Rect (x1, 1, x2, y2)); diff --git a/gtk2_ardour/video_image_frame.cc b/gtk2_ardour/video_image_frame.cc index 418848898f..8e7100113e 100644 --- a/gtk2_ardour/video_image_frame.cc +++ b/gtk2_ardour/video_image_frame.cc @@ -56,7 +56,7 @@ VideoImageFrame::VideoImageFrame (PublicEditor& ed, ArdourCanvas::Group& parent, printf("New VideoImageFrame (%ix%i) %s - %s\n", w, h, vsurl.c_str(), vfn.c_str()); #endif - unit_position = editor.frame_to_unit (frame_position); + unit_position = editor.frame_to_pixel (frame_position); group = new ArdourCanvas::Group (_parent, ArdourCanvas::Duple(unit_position, 1.0)); img_pixbuf = new ArdourCanvas::Pixbuf(group); @@ -85,7 +85,7 @@ VideoImageFrame::~VideoImageFrame () void VideoImageFrame::set_position (framepos_t frame) { - double new_unit_position = editor.frame_to_unit (frame); + double new_unit_position = editor.frame_to_pixel (frame); group->move (ArdourCanvas::Duple (new_unit_position - unit_position, 0.0)); frame_position = frame; unit_position = new_unit_position; diff --git a/gtk2_ardour/video_timeline.cc b/gtk2_ardour/video_timeline.cc index 5ddbe78d12..5fc96d95f8 100644 --- a/gtk2_ardour/video_timeline.cc +++ b/gtk2_ardour/video_timeline.cc @@ -302,7 +302,7 @@ VideoTimeLine::update_video_timeline() if (_session->timecode_frames_per_second() == 0 ) return; } - double frames_per_unit = editor->unit_to_frame(1.0); + double frames_per_unit = editor->pixel_to_frame(1.0); framepos_t leftmost_frame = editor->leftmost_position(); /* Outline: -- cgit v1.2.3