{
XMLNode* node = new XMLNode(X_("RulerVisibility"));
- node->add_property (X_("timecode"), ruler_timecode_action->get_active() ? "yes": "no");
- node->add_property (X_("bbt"), ruler_bbt_action->get_active() ? "yes": "no");
- node->add_property (X_("samples"), ruler_samples_action->get_active() ? "yes": "no");
- node->add_property (X_("minsec"), ruler_minsec_action->get_active() ? "yes": "no");
- node->add_property (X_("tempo"), ruler_tempo_action->get_active() ? "yes": "no");
- node->add_property (X_("meter"), ruler_meter_action->get_active() ? "yes": "no");
- node->add_property (X_("marker"), ruler_marker_action->get_active() ? "yes": "no");
- node->add_property (X_("rangemarker"), ruler_range_action->get_active() ? "yes": "no");
- node->add_property (X_("transportmarker"), ruler_loop_punch_action->get_active() ? "yes": "no");
- node->add_property (X_("cdmarker"), ruler_cd_marker_action->get_active() ? "yes": "no");
- node->add_property (X_("videotl"), ruler_video_action->get_active() ? "yes": "no");
+ node->set_property (X_("timecode"), ruler_timecode_action->get_active());
+ node->set_property (X_("bbt"), ruler_bbt_action->get_active());
+ node->set_property (X_("samples"), ruler_samples_action->get_active());
+ node->set_property (X_("minsec"), ruler_minsec_action->get_active());
+ node->set_property (X_("tempo"), ruler_tempo_action->get_active());
+ node->set_property (X_("meter"), ruler_meter_action->get_active());
+ node->set_property (X_("marker"), ruler_marker_action->get_active());
+ node->set_property (X_("rangemarker"), ruler_range_action->get_active());
+ node->set_property (X_("transportmarker"), ruler_loop_punch_action->get_active());
+ node->set_property (X_("cdmarker"), ruler_cd_marker_action->get_active());
+ node->set_property (X_("videotl"), ruler_video_action->get_active());
_session->add_extra_xml (*node);
_session->set_dirty ();
void
Editor::restore_ruler_visibility ()
{
- XMLProperty const * prop;
XMLNode * node = _session->extra_xml (X_("RulerVisibility"));
no_ruler_shown_update = true;
+ bool yn;
if (node) {
- if ((prop = node->property ("timecode")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_timecode_action->set_active (true);
- } else {
- ruler_timecode_action->set_active (false);
- }
+ if (node->get_property ("timecode", yn)) {
+ ruler_timecode_action->set_active (yn);
}
- if ((prop = node->property ("bbt")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_bbt_action->set_active (true);
- } else {
- ruler_bbt_action->set_active (false);
- }
+ if (node->get_property ("bbt", yn)) {
+ ruler_bbt_action->set_active (yn);
}
- if ((prop = node->property ("samples")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_samples_action->set_active (true);
- } else {
- ruler_samples_action->set_active (false);
- }
+ if (node->get_property ("samples", yn)) {
+ ruler_samples_action->set_active (yn);
}
- if ((prop = node->property ("minsec")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_minsec_action->set_active (true);
- } else {
- ruler_minsec_action->set_active (false);
- }
+ if (node->get_property ("minsec", yn)) {
+ ruler_minsec_action->set_active (yn);
}
- if ((prop = node->property ("tempo")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_tempo_action->set_active (true);
- } else {
- ruler_tempo_action->set_active (false);
- }
+ if (node->get_property ("tempo", yn)) {
+ ruler_tempo_action->set_active (yn);
}
- if ((prop = node->property ("meter")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_meter_action->set_active (true);
- } else {
- ruler_meter_action->set_active (false);
- }
+ if (node->get_property ("meter", yn)) {
+ ruler_meter_action->set_active (yn);
}
- if ((prop = node->property ("marker")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_marker_action->set_active (true);
- } else {
- ruler_marker_action->set_active (false);
- }
+ if (node->get_property ("marker", yn)) {
+ ruler_marker_action->set_active (yn);
}
- if ((prop = node->property ("rangemarker")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_range_action->set_active (true);
- } else {
- ruler_range_action->set_active (false);
- }
+ if (node->get_property ("rangemarker", yn)) {
+ ruler_range_action->set_active (yn);
}
-
- if ((prop = node->property ("transportmarker")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_loop_punch_action->set_active (true);
- } else {
- ruler_loop_punch_action->set_active (false);
- }
+ if (node->get_property ("transportmarker", yn)) {
+ ruler_loop_punch_action->set_active (yn);
}
- if ((prop = node->property ("cdmarker")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_cd_marker_action->set_active (true);
- } else {
- ruler_cd_marker_action->set_active (false);
- }
-
+ if (node->get_property ("cdmarker", yn)) {
+ ruler_cd_marker_action->set_active (yn);
} else {
// this _session doesn't yet know about the cdmarker ruler
// as a benefit to the user who doesn't know the feature exists, show the ruler if
}
}
- if ((prop = node->property ("videotl")) != 0) {
- if (string_is_affirmative (prop->value())) {
- ruler_video_action->set_active (true);
- } else {
- ruler_video_action->set_active (false);
- }
+ if (node->get_property ("videotl", yn)) {
+ ruler_video_action->set_active (yn);
}
}
upper = upper + spacer;
framecnt_t const range = upper - lower;
- if (range < (2 * _session->frames_per_timecode_frame())) { /* 0 - 2 frames */
+ if (range < (2 * _session->samples_per_timecode_frame())) { /* 0 - 2 frames */
timecode_ruler_scale = timecode_show_bits;
timecode_mark_modulo = 20;
timecode_nmarks = 2 + (2 * _session->config.get_subframes_per_frame());
} else if (range <= (fr / 4)) { /* 2 frames - 0.250 second */
timecode_ruler_scale = timecode_show_frames;
timecode_mark_modulo = 1;
- timecode_nmarks = 2 + (range / (framepos_t)_session->frames_per_timecode_frame());
+ timecode_nmarks = 2 + (range / (framepos_t)_session->samples_per_timecode_frame());
} else if (range <= (fr / 2)) { /* 0.25-0.5 second */
timecode_ruler_scale = timecode_show_frames;
timecode_mark_modulo = 2;
- timecode_nmarks = 2 + (range / (framepos_t)_session->frames_per_timecode_frame());
+ timecode_nmarks = 2 + (range / (framepos_t)_session->samples_per_timecode_frame());
} else if (range <= fr) { /* 0.5-1 second */
timecode_ruler_scale = timecode_show_frames;
timecode_mark_modulo = 5;
- timecode_nmarks = 2 + (range / (framepos_t)_session->frames_per_timecode_frame());
+ timecode_nmarks = 2 + (range / (framepos_t)_session->samples_per_timecode_frame());
} else if (range <= 2 * fr) { /* 1-2 seconds */
timecode_ruler_scale = timecode_show_frames;
timecode_mark_modulo = 10;
- timecode_nmarks = 2 + (range / (framepos_t)_session->frames_per_timecode_frame());
+ timecode_nmarks = 2 + (range / (framepos_t)_session->samples_per_timecode_frame());
} else if (range <= 8 * fr) { /* 2-8 seconds */
timecode_ruler_scale = timecode_show_seconds;
timecode_mark_modulo = 1;
mark.position = pos;
marks.push_back (mark);
++n;
- }
- /* can't use Timecode::increment_hours() here because we may be traversing thousands of hours
- and doing it 1 hour at a time is just stupid (and slow).
- */
- timecode.hours += timecode_mark_modulo;
+ }
+ /* can't use Timecode::increment_hours() here because we may be traversing thousands of hours
+ * and doing it 1 hour at a time is just stupid (and slow).
+ */
+ timecode.hours += timecode_mark_modulo - (timecode.hours % timecode_mark_modulo);
}
break;
}
bbt_bars = _session->tempo_map().bbt_at_beat (ceil_upper_beat).bars - _session->tempo_map().bbt_at_beat (floor_lower_beat).bars;
- beats = (ceil_upper_beat - floor_lower_beat) - bbt_bars;
+ beats = (ceil_upper_beat - floor_lower_beat);// - bbt_bars; possible thinko; this fixes the problem (for me) where measure lines alternately appear&disappear while playing at certain zoom scales
double beat_density = ((beats + 1) * ((double) (upper - lower) / (double) (1 + beat_after_upper_pos - beat_before_lower_pos))) / 5.0;
/* Only show the bar helper if there aren't many bars on the screen */
if ((*i).frame < lower && (bbt_bar_helper_on)) {
snprintf (buf, sizeof(buf), "<%" PRIu32 "|%" PRIu32, (*i).bar, (*i).beat);
edit_last_mark_label (marks, buf);
- helper_active = true;
} else {
if ((*i).is_bar()) {