X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_tempodisplay.cc;h=cbb3dcbdfedb287fb810bf4d7d24f3f2379ffdef;hb=f4203cce7ec0b8be13293e0a86f69693ec1cd977;hp=b997d3bb5d94714ece8beb2b89007162f5c4880a;hpb=59631acc5f41153a294c97ab820a4b41a886e24c;p=ardour.git diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc index b997d3bb5d..cbb3dcbdfe 100644 --- a/gtk2_ardour/editor_tempodisplay.cc +++ b/gtk2_ardour/editor_tempodisplay.cc @@ -40,6 +40,7 @@ #include "canvas/canvas.h" #include "canvas/item.h" +#include "canvas/line_set.h" #include "editor.h" #include "marker.h" @@ -49,7 +50,6 @@ #include "time_axis_view.h" #include "ardour_ui.h" #include "tempo_lines.h" -#include "utils.h" #include "i18n.h" @@ -85,15 +85,15 @@ Editor::draw_metric_marks (const Metrics& metrics) if ((ms = dynamic_cast(*i)) != 0) { 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()->get_canvasvar_MeterMarker(), buf, + metric_marks.push_back (new MeterMarker (*this, *meter_group, ARDOUR_UI::config()->color ("meter marker"), buf, *(const_cast(ms)))); } else if ((ts = dynamic_cast(*i)) != 0) { - if (Config->get_allow_non_quarter_pulse()) { + if (ARDOUR_UI::config()->get_allow_non_quarter_pulse()) { snprintf (buf, sizeof (buf), "%.2f/%.0f", ts->beats_per_minute(), ts->note_type()); } else { snprintf (buf, sizeof (buf), "%.2f", ts->beats_per_minute()); } - metric_marks.push_back (new TempoMarker (*this, *tempo_group, ARDOUR_UI::config()->get_canvasvar_TempoMarker(), buf, + metric_marks.push_back (new TempoMarker (*this, *tempo_group, ARDOUR_UI::config()->color ("tempo marker"), buf, *(const_cast(ts)))); } @@ -176,10 +176,11 @@ Editor::draw_measures (ARDOUR::TempoMap::BBTPointList::const_iterator& begin, } if (tempo_lines == 0) { - tempo_lines = new TempoLines (*_track_canvas, time_line_group, ArdourCanvas::COORD_MAX); + tempo_lines = new TempoLines (time_line_group, ArdourCanvas::LineSet::Vertical); } - - tempo_lines->draw (begin, end, samples_per_pixel); + + const unsigned divisions = get_grid_beat_divisions(leftmost_frame); + tempo_lines->draw (begin, end, divisions, leftmost_frame, _session->frame_rate()); } void @@ -271,12 +272,12 @@ Editor::remove_tempo_marker (ArdourCanvas::Item* item) if ((marker = reinterpret_cast (item->get_data ("marker"))) == 0) { fatal << _("programming error: tempo marker canvas item has no marker object pointer!") << endmsg; - /*NOTREACHED*/ + abort(); /*NOTREACHED*/ } if ((tempo_marker = dynamic_cast (marker)) == 0) { fatal << _("programming error: marker for tempo is not a tempo marker!") << endmsg; - /*NOTREACHED*/ + abort(); /*NOTREACHED*/ } if (tempo_marker->tempo().movable()) { @@ -343,41 +344,15 @@ Editor::edit_tempo_section (TempoSection* section) } void -Editor::edit_tempo_marker (ArdourCanvas::Item *item) +Editor::edit_tempo_marker (TempoMarker& tm) { - Marker* marker; - TempoMarker* tempo_marker; - - if ((marker = reinterpret_cast (item->get_data ("marker"))) == 0) { - fatal << _("programming error: tempo marker canvas item has no marker object pointer!") << endmsg; - /*NOTREACHED*/ - } - - if ((tempo_marker = dynamic_cast (marker)) == 0) { - fatal << _("programming error: marker for tempo is not a tempo marker!") << endmsg; - /*NOTREACHED*/ - } - - edit_tempo_section (&tempo_marker->tempo()); + edit_tempo_section (&tm.tempo()); } void -Editor::edit_meter_marker (ArdourCanvas::Item *item) +Editor::edit_meter_marker (MeterMarker& mm) { - Marker* marker; - MeterMarker* meter_marker; - - if ((marker = reinterpret_cast (item->get_data ("marker"))) == 0) { - fatal << _("programming error: tempo marker canvas item has no marker object pointer!") << endmsg; - /*NOTREACHED*/ - } - - if ((meter_marker = dynamic_cast (marker)) == 0) { - fatal << _("programming error: marker for meter is not a meter marker!") << endmsg; - /*NOTREACHED*/ - } - - edit_meter_section (&meter_marker->meter()); + edit_meter_section (&mm.meter()); } gint @@ -401,12 +376,12 @@ Editor::remove_meter_marker (ArdourCanvas::Item* item) if ((marker = reinterpret_cast (item->get_data ("marker"))) == 0) { fatal << _("programming error: meter marker canvas item has no marker object pointer!") << endmsg; - /*NOTREACHED*/ + abort(); /*NOTREACHED*/ } if ((meter_marker = dynamic_cast (marker)) == 0) { fatal << _("programming error: marker for meter is not a meter marker!") << endmsg; - /*NOTREACHED*/ + abort(); /*NOTREACHED*/ } if (meter_marker->meter().movable()) {