summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-12-13 02:46:36 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-12-13 02:46:36 +0000
commite0cf3b6354e2c92a6adabe85cb6d6d3c547c287c (patch)
tree564e24afbcdda3cf67c06b3ac71db3cb5b66023f /gtk2_ardour
parent6aaf4ea17a326eb06d81b06cb83048fbdaaa8a52 (diff)
more fun and games with meter and the tempo map: rename Meter::beats_per_bar() to Meter::divisions_per_bar() so that its clear(er) on what it is actually returning; use Meter::divisions_per_bar() in more (all?) places that need it; fix up dragging meter marks by removing the relevant meter section from the map while we drag; operator<< for some tempo-related objects
git-svn-id: svn://localhost/ardour2/branches/3.0@10995 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_clock.cc2
-rw-r--r--gtk2_ardour/editor.cc2
-rw-r--r--gtk2_ardour/editor_drag.cc68
-rw-r--r--gtk2_ardour/editor_ops.cc4
-rw-r--r--gtk2_ardour/editor_rulers.cc6
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc4
-rw-r--r--gtk2_ardour/tempo_dialog.cc4
-rw-r--r--gtk2_ardour/verbose_cursor.cc2
8 files changed, 50 insertions, 42 deletions
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index 757d5bc846..aa15079587 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -1171,7 +1171,7 @@ AudioClock::set_bbt (framepos_t when, bool force)
sprintf (buf, "%-5.2f", m.tempo().beats_per_minute());
_left_layout->set_text (buf);
- sprintf (buf, "%g/%g", m.meter().beats_per_bar(), m.meter().note_divisor());
+ sprintf (buf, "%g/%g", m.meter().divisions_per_bar(), m.meter().note_divisor());
_right_layout->set_text (buf);
}
}
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 28659d077d..d4e0e60ef8 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -3745,7 +3745,7 @@ Editor::get_grid_type_as_beats (bool& success, framepos_t position)
case SnapToBar:
if (_session) {
- return _session->tempo_map().meter_at (position).beats_per_bar();
+ return _session->tempo_map().meter_at (position).divisions_per_bar();
}
break;
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index ef00b011c1..20ebe7f98d 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -1853,35 +1853,37 @@ MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c)
void
MeterMarkerDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
{
- if (_copy) {
- // create a dummy marker for visual representation of moving the copy.
- // The actual copying is not done before we reach the finish callback.
- char name[64];
- snprintf (name, sizeof(name), "%g/%g", _marker->meter().beats_per_bar(), _marker->meter().note_divisor ());
-
- MeterMarker* new_marker = new MeterMarker (
- *_editor,
- *_editor->meter_group,
- ARDOUR_UI::config()->canvasvar_MeterMarker.get(),
- name,
- *new MeterSection (_marker->meter())
- );
-
- _item = &new_marker->the_item ();
- _marker = new_marker;
-
- } else {
-
- MetricSection& section (_marker->meter());
-
- if (!section.movable()) {
- return;
- }
-
+ // create a dummy marker for visual representation of moving the
+ // section, because whether its a copy or not, we're going to
+ // leave or lose the original marker (leave if its a copy; lose if its
+ // not, because we'll remove it from the map).
+
+ MeterSection section (_marker->meter());
+
+ if (!section.movable()) {
+ return;
+ }
+
+ char name[64];
+ snprintf (name, sizeof(name), "%g/%g", _marker->meter().divisions_per_bar(), _marker->meter().note_divisor ());
+
+ _marker = new MeterMarker (
+ *_editor,
+ *_editor->meter_group,
+ ARDOUR_UI::config()->canvasvar_MeterMarker.get(),
+ name,
+ *new MeterSection (_marker->meter())
+ );
+
+ _item = &_marker->the_item ();
+
+ if (!_copy) {
+ TempoMap& map (_editor->session()->tempo_map());
+ /* remove the section while we drag it */
+ map.remove_meter (section);
}
Drag::start_grab (event, cursor);
-
show_verbose_cursor_time (adjusted_current_frame(event));
}
@@ -1914,7 +1916,7 @@ MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred)
TempoMap& map (_editor->session()->tempo_map());
map.bbt_time (last_pointer_frame(), when);
-
+
if (_copy == true) {
_editor->begin_reversible_command (_("copy meter mark"));
XMLNode &before = map.get_state();
@@ -1923,17 +1925,21 @@ MeterMarkerDrag::finished (GdkEvent* event, bool movement_occurred)
_editor->session()->add_command(new MementoCommand<TempoMap>(map, &before, &after));
_editor->commit_reversible_command ();
- // delete the dummy marker we used for visual representation of copying.
- // a new visual marker will show up automatically.
- delete _marker;
} else {
_editor->begin_reversible_command (_("move meter mark"));
XMLNode &before = map.get_state();
- map.move_meter (_marker->meter(), when);
+
+ /* we removed it before, so add it back now */
+
+ map.add_meter (_marker->meter(), when);
XMLNode &after = map.get_state();
_editor->session()->add_command(new MementoCommand<TempoMap>(map, &before, &after));
_editor->commit_reversible_command ();
}
+
+ // delete the dummy marker we used for visual representation while moving.
+ // a new visual marker will show up automatically.
+ delete _marker;
}
void
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 738737f46d..a07f16b5c8 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -5475,7 +5475,9 @@ Editor::define_one_bar (framepos_t start, framepos_t end)
we have frames per bar, and beats per bar, so ...
*/
- double frames_per_beat = length / m.beats_per_bar();
+ /* XXXX METER MATH */
+
+ double frames_per_beat = length / m.divisions_per_bar();
/* beats per minute = */
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index 3b525ae6aa..3a54e965f1 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -1380,7 +1380,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp
next_beat.bars = (*i).bar;
next_beat.ticks = 0;
- if ((*i).meter->beats_per_bar() > (next_beat.beats + 1)) {
+ if ((*i).meter->divisions_per_bar() > (next_beat.beats + 1)) {
next_beat.beats += 1;
} else {
next_beat.bars += 1;
@@ -1472,7 +1472,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp
next_beat.beats = (*i).beat;
next_beat.bars = (*i).bar;
- if ((*i).meter->beats_per_bar() > (next_beat.beats + 1)) {
+ if ((*i).meter->divisions_per_bar() > (next_beat.beats + 1)) {
next_beat.beats += 1;
} else {
next_beat.bars += 1;
@@ -1569,7 +1569,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp
next_beat.beats = (*i).beat;
next_beat.bars = (*i).bar;
- if ((*i).meter->beats_per_bar() > (next_beat.beats + 1)) {
+ if ((*i).meter->divisions_per_bar() > (next_beat.beats + 1)) {
next_beat.beats += 1;
} else {
next_beat.bars += 1;
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 1069e457e6..28afc3b015 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -84,7 +84,7 @@ Editor::draw_metric_marks (const Metrics& metrics)
for (Metrics::const_iterator i = metrics.begin(); i != metrics.end(); ++i) {
if ((ms = dynamic_cast<const MeterSection*>(*i)) != 0) {
- snprintf (buf, sizeof(buf), "%g/%g", ms->beats_per_bar(), ms->note_divisor ());
+ snprintf (buf, sizeof(buf), "%g/%g", ms->divisions_per_bar(), ms->note_divisor ());
metric_marks.push_back (new MeterMarker (*this, *meter_group, ARDOUR_UI::config()->canvasvar_MeterMarker.get(), buf,
*(const_cast<MeterSection*>(ms))));
} else if ((ts = dynamic_cast<const TempoSection*>(*i)) != 0) {
@@ -157,7 +157,7 @@ Editor::compute_current_bbt_points (framepos_t leftmost, framepos_t rightmost)
}
previous_beat.ticks = 0;
- if (_session->tempo_map().meter_at(rightmost).beats_per_bar () > next_beat.beats + 1) {
+ if (_session->tempo_map().meter_at(rightmost).divisions_per_bar () > next_beat.beats + 1) {
next_beat.beats += 1;
} else {
next_beat.bars += 1;
diff --git a/gtk2_ardour/tempo_dialog.cc b/gtk2_ardour/tempo_dialog.cc
index bb9a5c4a83..f014832f2a 100644
--- a/gtk2_ardour/tempo_dialog.cc
+++ b/gtk2_ardour/tempo_dialog.cc
@@ -249,7 +249,7 @@ MeterDialog::MeterDialog (TempoMap& map, framepos_t frame, const string & action
Meter meter (map.meter_at(frame));
map.bbt_time (frame, when);
- init (when, meter.beats_per_bar(), meter.note_divisor(), true);
+ init (when, meter.divisions_per_bar(), meter.note_divisor(), true);
}
MeterDialog::MeterDialog (MeterSection& section, const string & action)
@@ -257,7 +257,7 @@ MeterDialog::MeterDialog (MeterSection& section, const string & action)
ok_button (action),
cancel_button (_("Cancel"))
{
- init (section.start(), section.beats_per_bar(), section.note_divisor(), section.movable());
+ init (section.start(), section.divisions_per_bar(), section.note_divisor(), section.movable());
}
void
diff --git a/gtk2_ardour/verbose_cursor.cc b/gtk2_ardour/verbose_cursor.cc
index 2ae215acec..f80b74c4f8 100644
--- a/gtk2_ardour/verbose_cursor.cc
+++ b/gtk2_ardour/verbose_cursor.cc
@@ -215,7 +215,7 @@ VerboseCursor::set_duration (framepos_t start, framepos_t end, double x, double
beats -= sbbt.beats;
if (beats < 0) {
- beats += int (meter_at_start.beats_per_bar());
+ beats += int (meter_at_start.divisions_per_bar());
--bars;
}