From 65e06fa35090dc4e1f84419b57316932c21a9682 Mon Sep 17 00:00:00 2001 From: nick_m Date: Fri, 22 May 2015 04:26:16 +1000 Subject: [PATCH] More cleanup - remove "no_magnets" ugh. --- gtk2_ardour/editor.cc | 18 ++++-------------- gtk2_ardour/editor.h | 9 +++------ gtk2_ardour/editor_drag.cc | 4 ++-- gtk2_ardour/midi_region_view.cc | 27 ++++----------------------- gtk2_ardour/midi_region_view.h | 18 ++++-------------- gtk2_ardour/public_editor.h | 7 ++----- gtk2_ardour/region_view.cc | 32 +++----------------------------- gtk2_ardour/region_view.h | 3 +-- 8 files changed, 23 insertions(+), 95 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 05f9b0ca93..45c7ca94b0 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2609,23 +2609,13 @@ Editor::snap_to_with_modifier (framepos_t& start, GdkEvent const * event, RoundM } void -Editor::snap_to (framepos_t& start, RoundMode direction, bool for_mark) +Editor::snap_to (framepos_t& start, RoundMode direction, bool for_mark, bool explicitly) { if (!_session || _snap_mode == SnapOff) { return; } - snap_to_internal (start, direction, for_mark); -} - -void -Editor::snap_to_no_magnets (framepos_t& start, RoundMode direction, bool for_mark) -{ - if (!_session || _snap_mode == SnapOff) { - return; - } - - snap_to_internal (start, direction, for_mark, true); + snap_to_internal (start, direction, for_mark, explicitly); } void @@ -2695,7 +2685,7 @@ Editor::timecode_snap_to_internal (framepos_t& start, RoundMode direction, bool } void -Editor::snap_to_internal (framepos_t& start, RoundMode direction, bool for_mark, bool no_magnets) +Editor::snap_to_internal (framepos_t& start, RoundMode direction, bool for_mark, bool explicitly) { const framepos_t one_second = _session->frame_rate(); const framepos_t one_minute = _session->frame_rate() * 60; @@ -2865,7 +2855,7 @@ Editor::snap_to_internal (framepos_t& start, RoundMode direction, bool for_mark, case SnapMagnetic: - if (no_magnets) { + if (explicitly) { return; } diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 8362b00551..663a97a56d 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -436,11 +436,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void snap_to (framepos_t& first, ARDOUR::RoundMode direction = ARDOUR::RoundNearest, - bool for_mark = false); - - void snap_to_no_magnets (framepos_t& first, - ARDOUR::RoundMode direction = ARDOUR::RoundNearest, - bool for_mark = false); + bool for_mark = false, + bool explicitly = false); void snap_to_with_modifier (framepos_t& first, GdkEvent const * ev, @@ -2136,7 +2133,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void snap_to_internal (framepos_t& first, ARDOUR::RoundMode direction = ARDOUR::RoundNearest, bool for_mark = false, - bool no_magnets = false); + bool explicitly = false); void timecode_snap_to_internal (framepos_t& first, ARDOUR::RoundMode direction = ARDOUR::RoundNearest, diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 18a3b5115b..3f08a8c750 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -366,7 +366,7 @@ void Drag::setup_snap_delta (framepos_t pos) { framepos_t temp = pos; - _editor->snap_to_no_magnets (temp); + _editor->snap_to (temp, ARDOUR::RoundNearest, false, true); _snap_delta = temp - pos; } @@ -2347,7 +2347,7 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*ignored*/) region = &cnote->region_view(); double temp; - temp = region->snap_to_pixel_no_magnets (cnote->x0 ()); + temp = region->snap_to_pixel (cnote->x0 (), true); _snap_delta = temp - cnote->x0 (); _item->grab (); diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index be280001d2..2fa8f4a3cd 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -2627,38 +2627,19 @@ MidiRegionView::note_dropped(NoteBase *, frameoffset_t dt, int8_t dnote) * @return Snapped frame relative to the region position. */ framepos_t -MidiRegionView::snap_pixel_to_sample(double x) +MidiRegionView::snap_pixel_to_sample(double x, bool explicitly) { PublicEditor& editor (trackview.editor()); - return snap_frame_to_frame (editor.pixel_to_sample (x)); -} - -/** @param x Pixel relative to the region position explicitly (no magnetic snap) - * @return Snapped frame relative to the region position. - */ -framepos_t -MidiRegionView::snap_pixel_to_sample_no_magnets (double x) -{ - PublicEditor& editor (trackview.editor()); - return snap_frame_to_frame_no_magnets (editor.pixel_to_sample (x)); + return snap_frame_to_frame (editor.pixel_to_sample (x), explicitly); } /** @param x Pixel relative to the region position. * @return Snapped pixel relative to the region position. */ double -MidiRegionView::snap_to_pixel(double x) -{ - return (double) trackview.editor().sample_to_pixel(snap_pixel_to_sample(x)); -} - -/** @param x Pixel relative to the region position. - * @return Explicitly snapped pixel relative to the region position (no magnetic snap). - */ -double -MidiRegionView::snap_to_pixel_no_magnets (double x) +MidiRegionView::snap_to_pixel(double x, bool explicitly) { - return (double) trackview.editor().sample_to_pixel(snap_pixel_to_sample_no_magnets(x)); + return (double) trackview.editor().sample_to_pixel(snap_pixel_to_sample(x, explicitly)); } double diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 7329c6facc..37a66aa398 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -250,27 +250,17 @@ public: /** Snap a region relative pixel coordinate to pixel units. * @param x a pixel coordinate relative to region start + * @param explicitly do not use magnetic snap (required for snap delta calculation) * @return the snapped pixel coordinate relative to region start */ - double snap_to_pixel(double x); - - /** Snap a region relative pixel coordinate to pixel units explicitly (no magnetic snap). - * @param x a pixel coordinate relative to region start - * @return the explicitly snapped pixel coordinate relative to region start - */ - double snap_to_pixel_no_magnets (double x); + double snap_to_pixel(double x, bool explicitly = false); /** Snap a region relative pixel coordinate to frame units. * @param x a pixel coordinate relative to region start + * @param explicitly do not use magnetic snap (required for snap delta calculation) * @return the snapped framepos_t coordinate relative to region start */ - framepos_t snap_pixel_to_sample(double x); - - /** Explicitly snap a region relative pixel coordinate to frame units (no magnetic snap). - * @param x a pixel coordinate relative to region start - * @return the explicitly snapped framepos_t coordinate relative to region start - */ - framepos_t snap_pixel_to_sample_no_magnets (double x); + framepos_t snap_pixel_to_sample(double x, bool explicitly = false); /** Convert a timestamp in beats into frames (both relative to region position) */ framepos_t region_beats_to_region_frames(Evoral::Beats beats) const; diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index a89993a479..463d7614d2 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -144,11 +144,8 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi /** Snap a value according to the current snap setting. */ virtual void snap_to (framepos_t& first, ARDOUR::RoundMode direction = ARDOUR::RoundNearest, - bool for_mark = false) = 0; - /** Snap a value according to the current snap setting. */ - virtual void snap_to_no_magnets (framepos_t& first, - ARDOUR::RoundMode direction = ARDOUR::RoundNearest, - bool for_mark = false) = 0; + bool for_mark = false, + bool explicitly = false) = 0; /** Undo some transactions. * @param n Number of transactions to undo. diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index cd83154a9f..5a8e3f235b 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -942,7 +942,7 @@ RegionView::move_contents (frameoffset_t distance) * @return Snapped frame offset from this region's position. */ frameoffset_t -RegionView::snap_frame_to_frame (frameoffset_t x) const +RegionView::snap_frame_to_frame (frameoffset_t x, bool explicitly) const { PublicEditor& editor = trackview.editor(); @@ -951,38 +951,12 @@ RegionView::snap_frame_to_frame (frameoffset_t x) const /* try a snap in either direction */ framepos_t frame = session_frame; - editor.snap_to (frame, RoundNearest); + editor.snap_to (frame, RoundNearest, false, explicitly); /* if we went off the beginning of the region, snap forwards */ if (frame < _region->position ()) { frame = session_frame; - editor.snap_to (frame, RoundUpAlways); - } - - /* back to region relative */ - return frame - _region->position(); -} - -/** Snap a frame offset within our region using the current snap settings. - * @param x Frame offset from this region's position. - * @return Snapped frame offset from this region's position. - */ -frameoffset_t -RegionView::snap_frame_to_frame_no_magnets (frameoffset_t x) const -{ - PublicEditor& editor = trackview.editor(); - - /* x is region relative, convert it to global absolute frames */ - framepos_t const session_frame = x + _region->position(); - - /* try a snap in either direction */ - framepos_t frame = session_frame; - editor.snap_to_no_magnets (frame, RoundNearest); - - /* if we went off the beginning of the region, snap forwards */ - if (frame < _region->position ()) { - frame = session_frame; - editor.snap_to_no_magnets (frame, RoundUpAlways); + editor.snap_to (frame, RoundUpAlways, false, explicitly); } /* back to region relative */ diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 77abb5e2a9..23b08f4b12 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -121,8 +121,7 @@ class RegionView : public TimeAxisViewItem } }; - ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t) const; - ARDOUR::frameoffset_t snap_frame_to_frame_no_magnets (ARDOUR::frameoffset_t) const; + ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t, bool explicitly = false) const; protected: -- 2.30.2