summaryrefslogtreecommitdiff
path: root/gtk2_ardour/region_view.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-09-06 23:28:55 +0000
committerCarl Hetherington <carl@carlh.net>2011-09-06 23:28:55 +0000
commit174c0d6831573f24689b7f1f6d6256583f790da6 (patch)
tree8c2efe92193e22ca04c6c2678d21dd411055fe71 /gtk2_ardour/region_view.cc
parent853904aa2637babfa64bdd22d2343965c2d010de (diff)
Snap new automation points in AutomationRegionViews (#4297).
git-svn-id: svn://localhost/ardour2/branches/3.0@10059 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/region_view.cc')
-rw-r--r--gtk2_ardour/region_view.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index df26452934..534c7ef0d6 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -950,3 +950,28 @@ RegionView::trim_contents (framepos_t frame_delta, bool left_direction, bool swa
region_changed (PropertyChange (ARDOUR::Properties::start));
}
+/** 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 (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 (frame, 0);
+
+ /* if we went off the beginning of the region, snap forwards */
+ if (frame < _region->position ()) {
+ frame = session_frame;
+ editor.snap_to (frame, 1);
+ }
+
+ /* back to region relative */
+ return frame - _region->position();
+}