summaryrefslogtreecommitdiff
path: root/gtk2_ardour/audio_clock.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/audio_clock.cc')
-rw-r--r--gtk2_ardour/audio_clock.cc173
1 files changed, 86 insertions, 87 deletions
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index 8c6f3a7d82..575f45ca38 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -326,38 +326,11 @@ AudioClock::on_realize ()
/* styles are not available until the widgets are bound to a window */
- switch (_mode) {
- case SMPTE:
- Gtkmm2ext::set_size_request_to_display_given_text (hours_label, "-88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (minutes_label, "88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (seconds_label, "88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (frames_label, "88", 0, 2);
- break;
-
- case BBT:
- Gtkmm2ext::set_size_request_to_display_given_text (bars_label, "-888", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (beats_label, "88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ticks_label, "8888", 0, 2);
- break;
-
- case MinSec:
- Gtkmm2ext::set_size_request_to_display_given_text (ms_hours_label, "99", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_minutes_label, "99", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_seconds_label, "99", 0, 2);
- break;
-
- case Frames:
- Gtkmm2ext::set_size_request_to_display_given_text (audio_frames_label, "4294967296", 0, 2);
- break;
-
- case Off:
- break;
-
- }
+ set_size_requests ();
}
void
-AudioClock::set (jack_nframes_t when, bool force)
+AudioClock::set (nframes_t when, bool force)
{
if ((!force && !is_visible()) || session == 0) {
@@ -395,7 +368,7 @@ AudioClock::set (jack_nframes_t when, bool force)
void
AudioClock::smpte_offset_changed ()
{
- jack_nframes_t current;
+ nframes_t current;
switch (_mode) {
case SMPTE:
@@ -412,7 +385,7 @@ AudioClock::smpte_offset_changed ()
}
void
-AudioClock::set_frames (jack_nframes_t when, bool force)
+AudioClock::set_frames (nframes_t when, bool force)
{
char buf[32];
snprintf (buf, sizeof (buf), "%u", when);
@@ -420,29 +393,29 @@ AudioClock::set_frames (jack_nframes_t when, bool force)
}
void
-AudioClock::set_minsec (jack_nframes_t when, bool force)
+AudioClock::set_minsec (nframes_t when, bool force)
{
char buf[32];
- jack_nframes_t left;
+ nframes_t left;
int hrs;
int mins;
float secs;
left = when;
hrs = (int) floor (left / (session->frame_rate() * 60.0f * 60.0f));
- left -= (jack_nframes_t) floor (hrs * session->frame_rate() * 60.0f * 60.0f);
+ left -= (nframes_t) floor (hrs * session->frame_rate() * 60.0f * 60.0f);
mins = (int) floor (left / (session->frame_rate() * 60.0f));
- left -= (jack_nframes_t) floor (mins * session->frame_rate() * 60.0f);
+ left -= (nframes_t) floor (mins * session->frame_rate() * 60.0f);
secs = left / (float) session->frame_rate();
if (force || hrs != ms_last_hrs) {
- sprintf (buf, "%d", hrs);
+ sprintf (buf, "%02d", hrs);
ms_hours_label.set_text (buf);
ms_last_hrs = hrs;
}
if (force || mins != ms_last_mins) {
- sprintf (buf, "%d", mins);
+ sprintf (buf, "%02d", mins);
ms_minutes_label.set_text (buf);
ms_last_mins = mins;
}
@@ -455,7 +428,7 @@ AudioClock::set_minsec (jack_nframes_t when, bool force)
}
void
-AudioClock::set_smpte (jack_nframes_t when, bool force)
+AudioClock::set_smpte (nframes_t when, bool force)
{
char buf[32];
SMPTE::Time smpte;
@@ -497,7 +470,7 @@ AudioClock::set_smpte (jack_nframes_t when, bool force)
}
void
-AudioClock::set_bbt (jack_nframes_t when, bool force)
+AudioClock::set_bbt (nframes_t when, bool force)
{
char buf[16];
BBT_Time bbt;
@@ -952,7 +925,7 @@ AudioClock::field_button_press_event (GdkEventButton *ev, Field field)
{
if (session == 0) return FALSE;
- jack_nframes_t frames = 0;
+ nframes_t frames = 0;
switch (ev->button) {
case 1:
@@ -1029,7 +1002,7 @@ AudioClock::field_button_scroll_event (GdkEventScroll *ev, Field field)
{
if (session == 0) return FALSE;
- jack_nframes_t frames = 0;
+ nframes_t frames = 0;
switch (ev->direction) {
@@ -1098,8 +1071,8 @@ AudioClock::field_motion_notify_event (GdkEventMotion *ev, Field field)
if (trunc(drag_accum) != 0) {
- jack_nframes_t frames;
- jack_nframes_t pos ;
+ nframes_t frames;
+ nframes_t pos ;
int dir;
dir = (drag_accum < 0 ? 1:-1);
pos = current_time();
@@ -1107,7 +1080,7 @@ AudioClock::field_motion_notify_event (GdkEventMotion *ev, Field field)
if (frames != 0 && frames * drag_accum < current_time()) {
- set ((jack_nframes_t) floor (pos - drag_accum * frames), false); // minus because up is negative in computer-land
+ set ((nframes_t) floor (pos - drag_accum * frames), false); // minus because up is negative in computer-land
} else {
set (0 , false);
@@ -1123,24 +1096,24 @@ AudioClock::field_motion_notify_event (GdkEventMotion *ev, Field field)
return TRUE;
}
-jack_nframes_t
-AudioClock::get_frames (Field field,jack_nframes_t pos,int dir)
+nframes_t
+AudioClock::get_frames (Field field,nframes_t pos,int dir)
{
- jack_nframes_t frames = 0;
+ nframes_t frames = 0;
BBT_Time bbt;
switch (field) {
case SMPTE_Hours:
- frames = (jack_nframes_t) floor (3600.0 * session->frame_rate());
+ frames = (nframes_t) floor (3600.0 * session->frame_rate());
break;
case SMPTE_Minutes:
- frames = (jack_nframes_t) floor (60.0 * session->frame_rate());
+ frames = (nframes_t) floor (60.0 * session->frame_rate());
break;
case SMPTE_Seconds:
frames = session->frame_rate();
break;
case SMPTE_Frames:
- frames = (jack_nframes_t) floor (session->frame_rate() / session->smpte_frames_per_second);
+ frames = (nframes_t) floor (session->frame_rate() / Config->get_smpte_frames_per_second());
break;
case AudioFrames:
@@ -1148,10 +1121,10 @@ AudioClock::get_frames (Field field,jack_nframes_t pos,int dir)
break;
case MS_Hours:
- frames = (jack_nframes_t) floor (3600.0 * session->frame_rate());
+ frames = (nframes_t) floor (3600.0 * session->frame_rate());
break;
case MS_Minutes:
- frames = (jack_nframes_t) floor (60.0 * session->frame_rate());
+ frames = (nframes_t) floor (60.0 * session->frame_rate());
break;
case MS_Seconds:
frames = session->frame_rate();
@@ -1180,10 +1153,10 @@ AudioClock::get_frames (Field field,jack_nframes_t pos,int dir)
return frames;
}
-jack_nframes_t
-AudioClock::current_time (jack_nframes_t pos) const
+nframes_t
+AudioClock::current_time (nframes_t pos) const
{
- jack_nframes_t ret = 0;
+ nframes_t ret = 0;
switch (_mode) {
case SMPTE:
@@ -1208,10 +1181,10 @@ AudioClock::current_time (jack_nframes_t pos) const
return ret;
}
-jack_nframes_t
-AudioClock::current_duration (jack_nframes_t pos) const
+nframes_t
+AudioClock::current_duration (nframes_t pos) const
{
- jack_nframes_t ret = 0;
+ nframes_t ret = 0;
switch (_mode) {
case SMPTE:
@@ -1248,7 +1221,7 @@ AudioClock::smpte_sanitize_display()
seconds_label.set_text("59");
}
- switch ((long)rint(session->smpte_frames_per_second)) {
+ switch ((long)rint(Config->get_smpte_frames_per_second())) {
case 24:
if (atoi(frames_label.get_text()) > 23) {
frames_label.set_text("23");
@@ -1268,14 +1241,14 @@ AudioClock::smpte_sanitize_display()
break;
}
- if (session->smpte_drop_frames) {
+ if (Config->get_smpte_drop_frames()) {
if ((atoi(minutes_label.get_text()) % 10) && (atoi(seconds_label.get_text()) == 0) && (atoi(frames_label.get_text()) < 2)) {
frames_label.set_text("02");
}
}
}
-jack_nframes_t
+nframes_t
AudioClock::smpte_frame_from_display () const
{
if (session == 0) {
@@ -1283,7 +1256,7 @@ AudioClock::smpte_frame_from_display () const
}
SMPTE::Time smpte;
- jack_nframes_t sample;
+ nframes_t sample;
smpte.hours = atoi (hours_label.get_text());
smpte.minutes = atoi (minutes_label.get_text());
@@ -1304,10 +1277,10 @@ AudioClock::smpte_frame_from_display () const
// Testcode for smpte<->sample conversions (P.S.)
SMPTE::Time smpte1;
- jack_nframes_t sample1;
- jack_nframes_t oldsample = 0;
+ nframes_t sample1;
+ nframes_t oldsample = 0;
SMPTE::Time smpte2;
- jack_nframes_t sample_increment;
+ nframes_t sample_increment;
sample_increment = (long)rint(session->frame_rate() / session->smpte_frames_per_second);
@@ -1666,7 +1639,7 @@ AudioClock::smpte_frame_from_display () const
return sample;
}
-jack_nframes_t
+nframes_t
AudioClock::minsec_frame_from_display () const
{
if (session == 0) {
@@ -1677,13 +1650,13 @@ AudioClock::minsec_frame_from_display () const
int mins = atoi (ms_minutes_label.get_text());
float secs = atof (ms_seconds_label.get_text());
- jack_nframes_t sr = session->frame_rate();
+ nframes_t sr = session->frame_rate();
- return (jack_nframes_t) floor ((hrs * 60.0f * 60.0f * sr) + (mins * 60.0f * sr) + (secs * sr));
+ return (nframes_t) floor ((hrs * 60.0f * 60.0f * sr) + (mins * 60.0f * sr) + (secs * sr));
}
-jack_nframes_t
-AudioClock::bbt_frame_from_display (jack_nframes_t pos) const
+nframes_t
+AudioClock::bbt_frame_from_display (nframes_t pos) const
{
if (session == 0) {
error << "AudioClock::current_time() called with BBT mode but without session!" << endmsg;
@@ -1697,14 +1670,14 @@ AudioClock::bbt_frame_from_display (jack_nframes_t pos) const
any.bbt.beats = atoi (beats_label.get_text());
any.bbt.ticks = atoi (ticks_label.get_text());
- jack_nframes_t ret = session->convert_to_frames_at (pos, any);
+ nframes_t ret = session->convert_to_frames_at (pos, any);
return ret;
}
-jack_nframes_t
-AudioClock::bbt_frame_duration_from_display (jack_nframes_t pos) const
+nframes_t
+AudioClock::bbt_frame_duration_from_display (nframes_t pos) const
{
if (session == 0) {
error << "AudioClock::current_time() called with BBT mode but without session!" << endmsg;
@@ -1721,10 +1694,10 @@ AudioClock::bbt_frame_duration_from_display (jack_nframes_t pos) const
return session->tempo_map().bbt_duration_at(pos,bbt,1);
}
-jack_nframes_t
+nframes_t
AudioClock::audio_frame_from_display () const
{
- return (jack_nframes_t) atoi (audio_frames_label.get_text());
+ return (nframes_t) atoi (audio_frames_label.get_text());
}
void
@@ -1775,40 +1748,66 @@ AudioClock::set_mode (Mode m)
}
_mode = m;
-
+
switch (_mode) {
case SMPTE:
clock_base.add (smpte_packer_hbox);
- Gtkmm2ext::set_size_request_to_display_given_text (hours_label, "-88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (minutes_label, "88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (seconds_label, "88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (frames_label, "88", 0, 2);
break;
case BBT:
clock_base.add (bbt_packer_hbox);
- Gtkmm2ext::set_size_request_to_display_given_text (bars_label, "-888", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (beats_label, "88", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ticks_label, "8888", 0, 2);
break;
case MinSec:
clock_base.add (minsec_packer_hbox);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_hours_label, "99", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_minutes_label, "99", 0, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_seconds_label, "99", 0, 2);
break;
case Frames:
clock_base.add (frames_packer_hbox);
- Gtkmm2ext::set_size_request_to_display_given_text (audio_frames_label, "4294967296", 0, 2);
+ break;
case Off:
break;
}
+ set_size_requests ();
+
set (last_when, true);
clock_base.show_all ();
key_entry_state = 0;
}
+void
+AudioClock::set_size_requests ()
+{
+ /* note that in some fonts, "88" is narrower than "00", hence the 2 pixel padding */
+
+ switch (_mode) {
+ case SMPTE:
+ Gtkmm2ext::set_size_request_to_display_given_text (hours_label, "-88", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (minutes_label, "88", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (seconds_label, "88", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (frames_label, "88", 2, 2);
+ break;
+
+ case BBT:
+ Gtkmm2ext::set_size_request_to_display_given_text (bars_label, "-888", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (beats_label, "88", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (ticks_label, "8888", 2, 2);
+ break;
+
+ case MinSec:
+ Gtkmm2ext::set_size_request_to_display_given_text (ms_hours_label, "99", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (ms_minutes_label, "99", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (ms_seconds_label, "99.999", 2, 2);
+ break;
+
+ case Frames:
+ Gtkmm2ext::set_size_request_to_display_given_text (audio_frames_label, "4294967296", 2, 2);
+ break;
+
+ case Off:
+ break;
+
+ }
+}