+ break;
+
+ case timecode_show_frames:
+ // Find timecode time of this sample (pos)
+ _session->sample_to_timecode(pos, timecode, true /* use_offset */, false /* use_subframes */ );
+ // Go to next whole frame down
+ Timecode::frames_floor( timecode );
+ for (n = 0; n < timecode_nmarks; n++) {
+ _session->timecode_to_sample(timecode, pos, true /* use_offset */, false /* use_subframes */ );
+ if ((timecode.frames % timecode_mark_modulo) == 0) {
+ if (timecode.frames == 0) {
+ mark.style = ArdourCanvas::Ruler::Mark::Major;
+ } else {
+ mark.style = ArdourCanvas::Ruler::Mark::Minor;
+ }
+ mark.position = pos;
+ snprintf (buf, sizeof(buf), "%s%02u:%02u:%02u:%02u", timecode.negative ? "-" : "", timecode.hours, timecode.minutes, timecode.seconds, timecode.frames);
+ } else {
+ snprintf (buf, sizeof(buf)," ");
+ mark.style = ArdourCanvas::Ruler::Mark::Micro;
+ mark.position = pos;
+ }
+ mark.label = buf;
+ marks.push_back (mark);
+ Timecode::increment( timecode, _session->config.get_subframes_per_frame() );
+ }
+ break;
+