X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fverbose_cursor.cc;h=d316a15984e94be8c991887e3634952b07f329dc;hb=95f2e4199b8f500beab4fae262715a237e14902b;hp=a0a5fd1f9a31d208e4113497c405a87d9289dbec;hpb=4c1f4011fd367c0f5bb7cbc820861914644ef3c4;p=ardour.git diff --git a/gtk2_ardour/verbose_cursor.cc b/gtk2_ardour/verbose_cursor.cc index a0a5fd1f9a..d316a15984 100644 --- a/gtk2_ardour/verbose_cursor.cc +++ b/gtk2_ardour/verbose_cursor.cc @@ -26,15 +26,15 @@ #include "canvas/scroll_group.h" #include "canvas/tracking_text.h" -#include "ardour_ui.h" #include "audio_clock.h" #include "editor.h" #include "editor_drag.h" -#include "global_signals.h" #include "main_clock.h" #include "verbose_cursor.h" +#include "ardour_ui.h" +#include "ui_config.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace ARDOUR; @@ -44,16 +44,16 @@ VerboseCursor::VerboseCursor (Editor* editor) { _canvas_item = new ArdourCanvas::TrackingText (_editor->get_noscroll_group()); CANVAS_DEBUG_NAME (_canvas_item, "verbose canvas cursor"); - _canvas_item->set_font_description (Pango::FontDescription (ARDOUR_UI::config()->get_canvasvar_LargerBoldFont())); + _canvas_item->set_font_description (Pango::FontDescription (UIConfiguration::instance().get_LargerBoldFont())); color_handler (); - ARDOUR_UI_UTILS::ColorsChanged.connect (sigc::mem_fun (*this, &VerboseCursor::color_handler)); + UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &VerboseCursor::color_handler)); } void VerboseCursor::color_handler () { - _canvas_item->set_color (ARDOUR_UI::config()->get_canvasvar_VerboseCanvasCursor()); + _canvas_item->set_color (UIConfiguration::instance().color_mod ("verbose canvas cursor", "verbose canvas cursor")); } ArdourCanvas::Item * @@ -93,51 +93,41 @@ VerboseCursor::set_offset (ArdourCanvas::Duple const & d) } void -VerboseCursor::set_time (framepos_t frame) +VerboseCursor::set_time (samplepos_t sample) { char buf[128]; Timecode::Time timecode; Timecode::BBT_Time bbt; - int hours, mins; - framepos_t frame_rate; - float secs; if (_editor->_session == 0) { return; } - AudioClock::Mode m; + /* Take clock mode from the primary clock */ - if (Profile->get_sae() || Profile->get_small_screen() || Profile->get_trx()) { - m = ARDOUR_UI::instance()->primary_clock->mode(); - } else { - m = ARDOUR_UI::instance()->secondary_clock->mode(); - } + AudioClock::Mode m = ARDOUR_UI::instance()->primary_clock->mode(); switch (m) { case AudioClock::BBT: - _editor->_session->bbt_time (frame, bbt); + _editor->_session->bbt_time (sample, bbt); snprintf (buf, sizeof (buf), "%02" PRIu32 "|%02" PRIu32 "|%02" PRIu32, bbt.bars, bbt.beats, bbt.ticks); break; case AudioClock::Timecode: - _editor->_session->timecode_time (frame, timecode); - snprintf (buf, sizeof (buf), "%02" PRId32 ":%02" PRId32 ":%02" PRId32 ":%02" PRId32, timecode.hours, timecode.minutes, timecode.seconds, timecode.frames); + _editor->_session->timecode_time (sample, timecode); + snprintf (buf, sizeof (buf), "%s", Timecode::timecode_format_time (timecode).c_str()); break; case AudioClock::MinSec: - /* XXX this is copied from show_verbose_duration_cursor() */ - frame_rate = _editor->_session->frame_rate(); - hours = frame / (frame_rate * 3600); - frame = frame % (frame_rate * 3600); - mins = frame / (frame_rate * 60); - frame = frame % (frame_rate * 60); - secs = (float) frame / (float) frame_rate; - snprintf (buf, sizeof (buf), "%02" PRId32 ":%02" PRId32 ":%07.4f", hours, mins, secs); + AudioClock::print_minsec (sample, buf, sizeof (buf), _editor->_session->sample_rate()); + break; + + case AudioClock::Seconds: + snprintf (buf, sizeof(buf), "%.1f", sample / (float)_editor->_session->sample_rate()); break; default: - snprintf (buf, sizeof(buf), "%" PRIi64, frame); + snprintf (buf, sizeof(buf), "%" PRIi64, sample); break; } @@ -145,28 +135,19 @@ VerboseCursor::set_time (framepos_t frame) } void -VerboseCursor::set_duration (framepos_t start, framepos_t end) +VerboseCursor::set_duration (samplepos_t start, samplepos_t end) { char buf[128]; Timecode::Time timecode; Timecode::BBT_Time sbbt; Timecode::BBT_Time ebbt; - int hours, mins; - framepos_t distance, frame_rate; - float secs; - Meter meter_at_start (_editor->_session->tempo_map().meter_at(start)); + Meter meter_at_start (_editor->_session->tempo_map().meter_at_sample (start)); if (_editor->_session == 0) { return; } - AudioClock::Mode m; - - if (Profile->get_sae() || Profile->get_small_screen() || Profile->get_trx()) { - m = ARDOUR_UI::instance()->primary_clock->mode (); - } else { - m = ARDOUR_UI::instance()->secondary_clock->mode (); - } + AudioClock::Mode m = ARDOUR_UI::instance()->primary_clock->mode (); switch (m) { case AudioClock::BBT: @@ -207,19 +188,15 @@ VerboseCursor::set_duration (framepos_t start, framepos_t end) case AudioClock::Timecode: _editor->_session->timecode_duration (end - start, timecode); - snprintf (buf, sizeof (buf), "%02" PRId32 ":%02" PRId32 ":%02" PRId32 ":%02" PRId32, timecode.hours, timecode.minutes, timecode.seconds, timecode.frames); + snprintf (buf, sizeof (buf), "%s", Timecode::timecode_format_time (timecode).c_str()); break; case AudioClock::MinSec: - /* XXX this stuff should be elsewhere.. */ - distance = end - start; - frame_rate = _editor->_session->frame_rate(); - hours = distance / (frame_rate * 3600); - distance = distance % (frame_rate * 3600); - mins = distance / (frame_rate * 60); - distance = distance % (frame_rate * 60); - secs = (float) distance / (float) frame_rate; - snprintf (buf, sizeof (buf), "%02" PRId32 ":%02" PRId32 ":%07.4f", hours, mins, secs); + AudioClock::print_minsec (end - start, buf, sizeof (buf), _editor->_session->sample_rate()); + break; + + case AudioClock::Seconds: + snprintf (buf, sizeof(buf), "%.1f", (end - start) / (float)_editor->_session->sample_rate()); break; default: