Change Editor temporal zoom methods to be able to use different scale for the zoom
This commit is contained in:
parent
4499066f39
commit
9485748e17
@ -297,8 +297,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
|||||||
Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; }
|
Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; }
|
||||||
framecnt_t get_current_zoom () const { return samples_per_pixel; }
|
framecnt_t get_current_zoom () const { return samples_per_pixel; }
|
||||||
void cycle_zoom_focus ();
|
void cycle_zoom_focus ();
|
||||||
void temporal_zoom_step (bool coarser);
|
void temporal_zoom_step (bool zoom_out);
|
||||||
void temporal_zoom_step_mouse_focus (bool coarser);
|
void temporal_zoom_step_scale (bool zoom_out, double scale);
|
||||||
|
void temporal_zoom_step_mouse_focus (bool zoom_out);
|
||||||
|
void temporal_zoom_step_mouse_focus_scale (bool zoom_out, double scale);
|
||||||
void ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top);
|
void ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top);
|
||||||
void tav_zoom_step (bool coarser);
|
void tav_zoom_step (bool coarser);
|
||||||
void tav_zoom_smooth (bool coarser, bool force_all);
|
void tav_zoom_smooth (bool coarser, bool force_all);
|
||||||
|
@ -1710,25 +1710,43 @@ Editor::tav_zoom_smooth (bool coarser, bool force_all)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::temporal_zoom_step_mouse_focus (bool coarser)
|
Editor::temporal_zoom_step_mouse_focus_scale (bool zoom_out, double scale)
|
||||||
{
|
{
|
||||||
Editing::ZoomFocus temp_focus = zoom_focus;
|
Editing::ZoomFocus temp_focus = zoom_focus;
|
||||||
zoom_focus = Editing::ZoomFocusMouse;
|
zoom_focus = Editing::ZoomFocusMouse;
|
||||||
temporal_zoom_step (coarser);
|
temporal_zoom_step_scale (zoom_out, scale);
|
||||||
zoom_focus = temp_focus;
|
zoom_focus = temp_focus;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::temporal_zoom_step (bool coarser)
|
Editor::temporal_zoom_step_mouse_focus (bool zoom_out)
|
||||||
{
|
{
|
||||||
ENSURE_GUI_THREAD (*this, &Editor::temporal_zoom_step, coarser)
|
temporal_zoom_step_mouse_focus_scale (zoom_out, 2.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::temporal_zoom_step (bool zoom_out)
|
||||||
|
{
|
||||||
|
temporal_zoom_step_scale (zoom_out, 2.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::temporal_zoom_step_scale (bool zoom_out, double scale)
|
||||||
|
{
|
||||||
|
ENSURE_GUI_THREAD (*this, &Editor::temporal_zoom_step, zoom_out, scale)
|
||||||
|
|
||||||
framecnt_t nspp = samples_per_pixel;
|
framecnt_t nspp = samples_per_pixel;
|
||||||
|
|
||||||
if (coarser) {
|
if (zoom_out) {
|
||||||
nspp *= 2;
|
nspp *= scale;
|
||||||
|
if (nspp == samples_per_pixel) {
|
||||||
|
nspp *= 2.0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
nspp /= 2;
|
nspp /= scale;
|
||||||
|
if (nspp == samples_per_pixel) {
|
||||||
|
nspp /= 2.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
temporal_zoom (nspp);
|
temporal_zoom (nspp);
|
||||||
|
Loading…
Reference in New Issue
Block a user