Snap new automation points in AutomationRegionViews (#4297).
git-svn-id: svn://localhost/ardour2/branches/3.0@10059 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
853904aa26
commit
174c0d6831
|
@ -147,6 +147,10 @@ AutomationRegionView::add_automation_event (GdkEvent *, framepos_t when, double
|
|||
const double h = trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2;
|
||||
y = 1.0 - (y / h);
|
||||
|
||||
/* snap frame */
|
||||
|
||||
when = snap_frame_to_frame (when - _region->start ());
|
||||
|
||||
/* map using line */
|
||||
|
||||
double when_d = when;
|
||||
|
|
|
@ -2360,32 +2360,6 @@ MidiRegionView::snap_pixel_to_frame(double x)
|
|||
return snap_frame_to_frame (editor.pixel_to_frame (x));
|
||||
}
|
||||
|
||||
/** 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
|
||||
MidiRegionView::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();
|
||||
}
|
||||
|
||||
double
|
||||
MidiRegionView::snap_to_pixel(double x)
|
||||
{
|
||||
|
|
|
@ -251,8 +251,6 @@ public:
|
|||
*/
|
||||
framepos_t snap_pixel_to_frame(double x);
|
||||
|
||||
ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t) const;
|
||||
|
||||
/** Convert a timestamp in beats into frames (both relative to region start) */
|
||||
framepos_t region_beats_to_region_frames(double beats) const;
|
||||
/** Convert a timestamp in beats into absolute frames */
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -120,6 +120,8 @@ class RegionView : public TimeAxisViewItem
|
|||
void drop_silent_frames ();
|
||||
void hide_silent_frames ();
|
||||
|
||||
ARDOUR::frameoffset_t snap_frame_to_frame (ARDOUR::frameoffset_t) const;
|
||||
|
||||
protected:
|
||||
|
||||
/** Allows derived types to specify their visibility requirements
|
||||
|
|
Loading…
Reference in New Issue