X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_rulers.cc;h=f4bdd9291d52c578fa51c0dfcdb0aaa7e3660822;hb=2db69318cef5bc7b49a3c6e00b3ca3f0f2023374;hp=488c580cd40883812063cf2eaa7ec41d58431704;hpb=756ffc26bffa6a6c9276d6f4fff5b47cc54ad35a;p=ardour.git diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 488c580cd4..f4bdd9291d 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -57,7 +57,7 @@ Editor *Editor::ruler_editor; GtkCustomMetric Editor::ruler_metrics[4] = { {1, Editor::_metric_get_timecode }, {1, Editor::_metric_get_bbt }, - {1, Editor::_metric_get_frames }, + {1, Editor::_metric_get_samples }, {1, Editor::_metric_get_minsec } }; @@ -98,13 +98,13 @@ Editor::initialize_rulers () bbt_ruler->set_no_show_all(); bbt_nmarks = 0; - _frames_ruler = gtk_custom_hruler_new (); - frames_ruler = Glib::wrap (_frames_ruler); - frames_ruler->set_name ("FramesRuler"); - frames_ruler->set_size_request (-1, (int)timebar_height); - gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER(_frames_ruler), &ruler_metrics[ruler_metric_frames]); - frames_ruler->hide (); - frames_ruler->set_no_show_all(); + _samples_ruler = gtk_custom_hruler_new (); + samples_ruler = Glib::wrap (_samples_ruler); + samples_ruler->set_name ("SamplesRuler"); + samples_ruler->set_size_request (-1, (int) timebar_height); + gtk_custom_ruler_set_metric (GTK_CUSTOM_RULER (_samples_ruler), &ruler_metrics[ruler_metric_samples]); + samples_ruler->hide (); + samples_ruler->set_no_show_all (); _bbt_ruler = gtk_custom_hruler_new (); bbt_ruler = Glib::wrap (_bbt_ruler); @@ -135,34 +135,34 @@ Editor::initialize_rulers () ruler_children.insert (canvaspos, Element(*minsec_ruler, PACK_SHRINK, PACK_START)); ruler_lab_children.push_back (Element(timecode_label, PACK_SHRINK, PACK_START)); ruler_children.insert (canvaspos, Element(*timecode_ruler, PACK_SHRINK, PACK_START)); - ruler_lab_children.push_back (Element(frame_label, PACK_SHRINK, PACK_START)); - ruler_children.insert (canvaspos, Element(*frames_ruler, PACK_SHRINK, PACK_START)); + ruler_lab_children.push_back (Element(samples_label, PACK_SHRINK, PACK_START)); + ruler_children.insert (canvaspos, Element (*samples_ruler, PACK_SHRINK, PACK_START)); ruler_lab_children.push_back (Element(bbt_label, PACK_SHRINK, PACK_START)); ruler_children.insert (canvaspos, Element(*bbt_ruler, PACK_SHRINK, PACK_START)); timecode_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK); bbt_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK); - frames_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK); + samples_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK); minsec_ruler->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK); timecode_ruler->signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_release)); bbt_ruler->signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_release)); - frames_ruler->signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_release)); + samples_ruler->signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_release)); minsec_ruler->signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_release)); timecode_ruler->signal_button_press_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_press)); bbt_ruler->signal_button_press_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_press)); - frames_ruler->signal_button_press_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_press)); + samples_ruler->signal_button_press_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_press)); minsec_ruler->signal_button_press_event().connect (sigc::mem_fun(*this, &Editor::ruler_button_press)); timecode_ruler->signal_motion_notify_event().connect (sigc::mem_fun(*this, &Editor::ruler_mouse_motion)); bbt_ruler->signal_motion_notify_event().connect (sigc::mem_fun(*this, &Editor::ruler_mouse_motion)); - frames_ruler->signal_motion_notify_event().connect (sigc::mem_fun(*this, &Editor::ruler_mouse_motion)); + samples_ruler->signal_motion_notify_event().connect (sigc::mem_fun(*this, &Editor::ruler_mouse_motion)); minsec_ruler->signal_motion_notify_event().connect (sigc::mem_fun(*this, &Editor::ruler_mouse_motion)); timecode_ruler->signal_scroll_event().connect (sigc::mem_fun(*this, &Editor::ruler_scroll)); bbt_ruler->signal_scroll_event().connect (sigc::mem_fun(*this, &Editor::ruler_scroll)); - frames_ruler->signal_scroll_event().connect (sigc::mem_fun(*this, &Editor::ruler_scroll)); + samples_ruler->signal_scroll_event().connect (sigc::mem_fun(*this, &Editor::ruler_scroll)); minsec_ruler->signal_scroll_event().connect (sigc::mem_fun(*this, &Editor::ruler_scroll)); visible_timebars = 0; /*this will be changed below */ @@ -178,12 +178,12 @@ Editor::ruler_scroll (GdkEventScroll* event) switch (direction) { case GDK_SCROLL_UP: - temporal_zoom_step (true); + temporal_zoom_step (false); handled = true; break; case GDK_SCROLL_DOWN: - temporal_zoom_step (false); + temporal_zoom_step (true); handled = true; break; @@ -216,23 +216,21 @@ Editor::ruler_scroll (GdkEventScroll* event) } -gint +bool Editor::ruler_button_press (GdkEventButton* ev) { if (_session == 0) { - return FALSE; + return false; } - // jlc: grab ev->window ? - //Gtk::Main::grab_add (*minsec_ruler); Widget * grab_widget = 0; if (timecode_ruler->is_realized() && ev->window == timecode_ruler->get_window()->gobj()) { grab_widget = timecode_ruler; } else if (bbt_ruler->is_realized() && ev->window == bbt_ruler->get_window()->gobj()) { grab_widget = bbt_ruler; - } else if (frames_ruler->is_realized() && ev->window == frames_ruler->get_window()->gobj()) { - grab_widget = frames_ruler; + } else if (samples_ruler->is_realized() && ev->window == samples_ruler->get_window()->gobj()) { + grab_widget = samples_ruler; } else if (minsec_ruler->is_realized() && ev->window == minsec_ruler->get_window()->gobj()) { grab_widget = minsec_ruler; } @@ -254,14 +252,14 @@ Editor::ruler_button_press (GdkEventButton* ev) _dragging_playhead = true; } - return TRUE; + return true; } -gint +bool Editor::ruler_button_release (GdkEventButton* ev) { if (_session == 0) { - return FALSE; + return false; } gint x,y; @@ -288,35 +286,35 @@ Editor::ruler_button_release (GdkEventButton* ev) ruler_grabbed_widget = 0; } - return TRUE; + return true; } -gint +bool Editor::ruler_label_button_release (GdkEventButton* ev) { if (ev->button == 3) { - Gtk::Menu* m= dynamic_cast (ActionManager::get_widget (X_("/RulerMenuPopup"))); + Gtk::Menu* m = dynamic_cast (ActionManager::get_widget (X_("/RulerMenuPopup"))); if (m) { m->popup (1, ev->time); } } - return TRUE; + return true; } -gint +bool Editor::ruler_mouse_motion (GdkEventMotion* ev) { if (_session == 0) { - return FALSE; + return false; } if (_drags->active ()) { _drags->motion_handler (reinterpret_cast (ev), false); } - return TRUE; + return true; } @@ -361,13 +359,11 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) case TempoBarItem: ruler_items.push_back (MenuElem (_("New Tempo"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_tempo_event), where))); - ruler_items.push_back (MenuElem (_("Clear tempo"))); ruler_items.push_back (SeparatorElem ()); break; case MeterBarItem: ruler_items.push_back (MenuElem (_("New Meter"), sigc::bind ( sigc::mem_fun(*this, &Editor::mouse_add_new_meter_event), where))); - ruler_items.push_back (MenuElem (_("Clear meter"))); ruler_items.push_back (SeparatorElem ()); break; @@ -387,7 +383,7 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) ruler_items.push_back (MenuElem (*action->create_menu_item())); } } - action = ActionManager::get_action ("Rulers", "toggle-frames-ruler"); + action = ActionManager::get_action ("Rulers", "toggle-samples-ruler"); if (action) { ruler_items.push_back (MenuElem (*action->create_menu_item())); } @@ -434,7 +430,7 @@ Editor::store_ruler_visibility () 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_("frames"), ruler_frames_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"); @@ -470,11 +466,11 @@ Editor::restore_ruler_visibility () ruler_bbt_action->set_active (false); } } - if ((prop = node->property ("frames")) != 0) { + if ((prop = node->property ("samples")) != 0) { if (string_is_affirmative (prop->value())) { - ruler_frames_action->set_active (true); + ruler_samples_action->set_active (true); } else { - ruler_frames_action->set_active (false); + ruler_samples_action->set_active (false); } } if ((prop = node->property ("minsec")) != 0) { @@ -577,13 +573,13 @@ Editor::update_ruler_visibility () timecode_ruler->hide (); } - if (ruler_frames_action->get_active()) { + if (ruler_samples_action->get_active()) { visible_rulers++; - frame_label.show (); - frames_ruler->show (); + samples_label.show (); + samples_ruler->show (); } else { - frame_label.hide (); - frames_ruler->hide (); + samples_label.hide (); + samples_ruler->hide (); } if (ruler_bbt_action->get_active()) { @@ -807,8 +803,8 @@ Editor::compute_fixed_ruler_scale () set_minsec_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames()); } - if (ruler_frames_action->get_active()) { - set_frames_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames()); + if (ruler_samples_action->get_active()) { + set_samples_ruler_scale (leftmost_frame, leftmost_frame + current_page_frames()); } } @@ -822,7 +818,7 @@ Editor::update_fixed_rulers () } ruler_metrics[ruler_metric_timecode].units_per_pixel = frames_per_unit; - ruler_metrics[ruler_metric_frames].units_per_pixel = frames_per_unit; + ruler_metrics[ruler_metric_samples].units_per_pixel = frames_per_unit; ruler_metrics[ruler_metric_minsec].units_per_pixel = frames_per_unit; rightmost_frame = leftmost_frame + current_page_frames(); @@ -836,8 +832,8 @@ Editor::update_fixed_rulers () leftmost_frame, _session->current_end_frame()); } - if (ruler_frames_action->get_active()) { - gtk_custom_ruler_set_range (GTK_CUSTOM_RULER(_frames_ruler), leftmost_frame, rightmost_frame, + if (ruler_samples_action->get_active()) { + gtk_custom_ruler_set_range (GTK_CUSTOM_RULER (_samples_ruler), leftmost_frame, rightmost_frame, leftmost_frame, _session->current_end_frame()); } @@ -877,9 +873,9 @@ Editor::_metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble uppe } gint -Editor::_metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble upper, gint maxchars) +Editor::_metric_get_samples (GtkCustomRulerMark **marks, gdouble lower, gdouble upper, gint maxchars) { - return ruler_editor->metric_get_frames (marks, lower, upper, maxchars); + return ruler_editor->metric_get_samples (marks, lower, upper, maxchars); } gint @@ -1264,7 +1260,7 @@ Editor::compute_bbt_ruler_scale (framepos_t lower, framepos_t upper) bbt_ruler_scale = bbt_show_ticks_detail; } - if ((bbt_ruler_scale == bbt_show_ticks_detail) && (lower_beat.beats == upper_beat.beats) && (upper_beat.ticks - lower_beat.ticks <= Timecode::BBT_Time::ticks_per_beat / 4)) { + if ((bbt_ruler_scale == bbt_show_ticks_detail) && (lower_beat.beats == upper_beat.beats) && (upper_beat.ticks - lower_beat.ticks <= Timecode::BBT_Time::ticks_per_bar_division / 4)) { bbt_ruler_scale = bbt_show_ticks_super_detail; } } @@ -1382,7 +1378,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp next_beat.bars = (*i).bar; next_beat.ticks = 0; - if ((*i).meter->beats_per_bar() > (next_beat.beats + 1)) { + if ((*i).meter->divisions_per_bar() > (next_beat.beats + 1)) { next_beat.beats += 1; } else { next_beat.bars += 1; @@ -1393,14 +1389,14 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp frame_skip = (framepos_t) floor (frame_skip_error = (_session->frame_rate() * 60) / (bbt_beat_subdivision * (*i).tempo->beats_per_minute())); frame_skip_error -= frame_skip; - skip = (uint32_t) (Timecode::BBT_Time::ticks_per_beat / bbt_beat_subdivision); + skip = (uint32_t) (Timecode::BBT_Time::ticks_per_bar_division / bbt_beat_subdivision); pos = (*i).frame + frame_skip; accumulated_error = frame_skip_error; tick = skip; - for (t = 0; (tick < Timecode::BBT_Time::ticks_per_beat) && (n < bbt_nmarks) && (pos < next_beat_pos) ; pos += frame_skip, tick += skip, ++t) { + for (t = 0; (tick < Timecode::BBT_Time::ticks_per_bar_division) && (n < bbt_nmarks) && (pos < next_beat_pos) ; pos += frame_skip, tick += skip, ++t) { if (t % bbt_accent_modulo == (bbt_accent_modulo - 1)) { i_am_accented = true; @@ -1474,7 +1470,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp next_beat.beats = (*i).beat; next_beat.bars = (*i).bar; - if ((*i).meter->beats_per_bar() > (next_beat.beats + 1)) { + if ((*i).meter->divisions_per_bar() > (next_beat.beats + 1)) { next_beat.beats += 1; } else { next_beat.bars += 1; @@ -1485,14 +1481,14 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp frame_skip = (framepos_t) floor (frame_skip_error = (_session->frame_rate() * 60) / (bbt_beat_subdivision * (*i).tempo->beats_per_minute())); frame_skip_error -= frame_skip; - skip = (uint32_t) (Timecode::BBT_Time::ticks_per_beat / bbt_beat_subdivision); + skip = (uint32_t) (Timecode::BBT_Time::ticks_per_bar_division / bbt_beat_subdivision); pos = (*i).frame + frame_skip; accumulated_error = frame_skip_error; tick = skip; - for (t = 0; (tick < Timecode::BBT_Time::ticks_per_beat) && (n < bbt_nmarks) && (pos < next_beat_pos) ; pos += frame_skip, tick += skip, ++t) { + for (t = 0; (tick < Timecode::BBT_Time::ticks_per_bar_division) && (n < bbt_nmarks) && (pos < next_beat_pos) ; pos += frame_skip, tick += skip, ++t) { if (t % bbt_accent_modulo == (bbt_accent_modulo - 1)) { i_am_accented = true; @@ -1571,7 +1567,7 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp next_beat.beats = (*i).beat; next_beat.bars = (*i).bar; - if ((*i).meter->beats_per_bar() > (next_beat.beats + 1)) { + if ((*i).meter->divisions_per_bar() > (next_beat.beats + 1)) { next_beat.beats += 1; } else { next_beat.bars += 1; @@ -1582,14 +1578,14 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp frame_skip = (framepos_t) floor (frame_skip_error = (_session->frame_rate() * 60) / (bbt_beat_subdivision * (*i).tempo->beats_per_minute())); frame_skip_error -= frame_skip; - skip = (uint32_t) (Timecode::BBT_Time::ticks_per_beat / bbt_beat_subdivision); + skip = (uint32_t) (Timecode::BBT_Time::ticks_per_bar_division / bbt_beat_subdivision); pos = (*i).frame + frame_skip; accumulated_error = frame_skip_error; tick = skip; - for (t = 0; (tick < Timecode::BBT_Time::ticks_per_beat) && (n < bbt_nmarks) && (pos < next_beat_pos) ; pos += frame_skip, tick += skip, ++t) { + for (t = 0; (tick < Timecode::BBT_Time::ticks_per_bar_division) && (n < bbt_nmarks) && (pos < next_beat_pos) ; pos += frame_skip, tick += skip, ++t) { if (t % bbt_accent_modulo == (bbt_accent_modulo - 1)) { i_am_accented = true; @@ -1742,13 +1738,13 @@ Editor::metric_get_bbt (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upp } void -Editor::set_frames_ruler_scale (framepos_t lower, framepos_t upper) +Editor::set_samples_ruler_scale (framepos_t lower, framepos_t upper) { - _frames_ruler_interval = (upper - lower) / 5; + _samples_ruler_interval = (upper - lower) / 5; } gint -Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble upper, gint /*maxchars*/) +Editor::metric_get_samples (GtkCustomRulerMark **marks, gdouble lower, gdouble /*upper*/, gint /*maxchars*/) { framepos_t pos; framepos_t const ilower = (framepos_t) floor (lower); @@ -1762,7 +1758,7 @@ Editor::metric_get_frames (GtkCustomRulerMark **marks, gdouble lower, gdouble up nmarks = 5; *marks = (GtkCustomRulerMark *) g_malloc (sizeof(GtkCustomRulerMark) * nmarks); - for (n = 0, pos = ilower; n < nmarks; pos += _frames_ruler_interval, ++n) { + for (n = 0, pos = ilower; n < nmarks; pos += _samples_ruler_interval, ++n) { snprintf (buf, sizeof(buf), "%" PRIi64, pos); (*marks)[n].label = g_strdup (buf); (*marks)[n].position = pos;