summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-01-20 15:18:43 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-01-20 15:18:43 +0000
commitde80d6b95d0abaea924283457c84e67c4017321a (patch)
tree473002cfe08099fe5e4e370bdeb9e97aa7dc8f1c /gtk2_ardour/editor_ops.cc
parent4251da6ae4187fddb20e023a820271242ec6ff6d (diff)
make bar-setting generic; add set-tempo-from-edit-range ; change bindings to 9 for region, 0 for edit range; add binding for cycle-edit-point-with-marker (missing from non-SAE version)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2952 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r--gtk2_ardour/editor_ops.cc29
1 files changed, 23 insertions, 6 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 11917851f7..f960f27d0f 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -4962,7 +4962,24 @@ Editor::use_region_as_bar ()
RegionView* rv = selection->regions.front();
- const Meter& m (session->tempo_map().meter_at (rv->region()->position()));
+ define_one_bar (rv->region()->position(), rv->region()->last_frame() + 1);
+}
+
+void
+Editor::use_range_as_bar ()
+{
+ nframes64_t start, end;
+ if (get_edit_op_range (start, end)) {
+ define_one_bar (start, end);
+ }
+}
+
+void
+Editor::define_one_bar (nframes64_t start, nframes64_t end)
+{
+ nframes64_t length = end - start;
+
+ const Meter& m (session->tempo_map().meter_at (start));
/* region length = 1 bar */
@@ -4974,21 +4991,21 @@ Editor::use_region_as_bar ()
we have frames per bar, and beats per bar, so ...
*/
- double frames_per_beat = rv->region()->length() / beats_per_bar;
+ double frames_per_beat = length / beats_per_bar;
/* beats per minute = */
double beats_per_minute = (session->frame_rate() * 60.0) / frames_per_beat;
- const TempoSection& t (session->tempo_map().tempo_section_at (rv->region()->position()));
+ const TempoSection& t (session->tempo_map().tempo_section_at (start));
begin_reversible_command (_("set tempo from region"));
XMLNode& before (session->tempo_map().get_state());
- if (t.frame() == rv->region()->position()) {
- session->tempo_map().change_existing_tempo_at (rv->region()->position(), beats_per_minute, t.note_type());
+ if (t.frame() == start) {
+ session->tempo_map().change_existing_tempo_at (start, beats_per_minute, t.note_type());
} else {
- session->tempo_map().add_tempo (Tempo (beats_per_minute, t.note_type()), rv->region()->position());
+ session->tempo_map().add_tempo (Tempo (beats_per_minute, t.note_type()), start);
}
XMLNode& after (session->tempo_map().get_state());