X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Feditor_ops.cc;h=beebd8505fdddead735e423d6912b9a3af0ea65e;hb=d1f45e9b3d6a7e272e5563cc50175dfb6d904361;hp=d7603d4ab004e105e56c33c544d70e9860c93818;hpb=8877199ae052a33c68541dd610dba385645c6e1e;p=ardour.git diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index d7603d4ab0..beebd8505f 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1211,7 +1211,7 @@ Editor::cursor_align (bool playhead_to_edit) void Editor::scroll_backward (float pages) { - framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * frames_per_pixel); + framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * samples_per_pixel); framepos_t const cnt = (framepos_t) floor (pages * one_page); framepos_t frame; @@ -1227,7 +1227,7 @@ Editor::scroll_backward (float pages) void Editor::scroll_forward (float pages) { - framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * frames_per_pixel); + framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * samples_per_pixel); framepos_t const cnt = (framepos_t) floor (pages * one_page); framepos_t frame; @@ -1331,17 +1331,17 @@ Editor::tav_zoom_smooth (bool coarser, bool force_all) } bool -Editor::clamp_frames_per_pixel (double& fpp) const +Editor::clamp_samples_per_pixel (framecnt_t& fpp) const { bool clamped = false; - if (fpp < 2.0) { - fpp = 2.0; + if (fpp < 1) { + fpp = 1; clamped = true; } if (max_framepos / fpp < 800) { - fpp = max_framepos / 800.0; + fpp = max_framepos / 800; clamped = true; } @@ -1353,19 +1353,19 @@ Editor::temporal_zoom_step (bool coarser) { ENSURE_GUI_THREAD (*this, &Editor::temporal_zoom_step, coarser) - double nfpp = frames_per_pixel; + framecnt_t nspp = samples_per_pixel; if (coarser) { - nfpp = min (9e6, nfpp * 1.61803399); + nspp *= 2; } else { - nfpp = max (1.0, nfpp / 1.61803399); + nspp /= 2; } - temporal_zoom (nfpp); + temporal_zoom (nspp); } void -Editor::temporal_zoom (double fpp) +Editor::temporal_zoom (framecnt_t fpp) { if (!_session) { return; @@ -1380,22 +1380,20 @@ Editor::temporal_zoom (double fpp) framepos_t leftmost_after_zoom = 0; framepos_t where; bool in_track_canvas; - double nfpp; + framecnt_t nfpp; double l; - clamp_frames_per_pixel (fpp); - if (fpp == frames_per_pixel) { + clamp_samples_per_pixel (fpp); + if (fpp == samples_per_pixel) { return; } - nfpp = fpp; - // Imposing an arbitrary limit to zoom out as too much zoom out produces // segfaults for lack of memory. If somebody decides this is not high enough I // believe it can be raisen to higher values but some limit must be in place. - if (nfpp > 8e+08) { - nfpp = 8e+08; - } + + nfpp = min (fpp, (framecnt_t) 8589934592); + nfpp = max ((framecnt_t) 1, fpp); new_page_size = (framepos_t) floor (_visible_canvas_width * nfpp); half_page_size = new_page_size / 2; @@ -1660,7 +1658,7 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame) double range_before = frame - leftmost_frame; double new_fpp; - new_fpp = frames_per_pixel; + new_fpp = samples_per_pixel; if (coarser) { new_fpp *= 1.61803399; @@ -1670,7 +1668,7 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame) range_before /= 1.61803399; } - if (new_fpp == frames_per_pixel) { + if (new_fpp == samples_per_pixel) { return; } @@ -2377,7 +2375,6 @@ Editor::rename_region () d.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK); d.set_size_request (300, -1); - d.set_position (Gtk::WIN_POS_MOUSE); entry.set_text (rs.front()->region()->name()); entry.select_region (0, -1); @@ -4419,14 +4416,14 @@ Editor::reset_point_selection () void Editor::center_playhead () { - float const page = _visible_canvas_width * frames_per_pixel; + float const page = _visible_canvas_width * samples_per_pixel; center_screen_internal (playhead_cursor->current_frame (), page); } void Editor::center_edit_point () { - float const page = _visible_canvas_width * frames_per_pixel; + float const page = _visible_canvas_width * samples_per_pixel; center_screen_internal (get_preferred_edit_position(), page); }