- 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;
- if (timecode.hours) {
- snprintf (buf, sizeof(buf), "%s%u:%02u:%02u", timecode.negative ? "-" : "", timecode.hours, timecode.minutes, timecode.seconds);
- } else {
- snprintf (buf, sizeof(buf), "%s%u:%02u", timecode.negative ? "-" : "", timecode.minutes, timecode.seconds);
- }
- } 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;