From b66e12610bcc9b3b9866ad170e86663e3aef5a41 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Tue, 29 Aug 2023 22:46:28 -0500 Subject: [PATCH] arrangement ruler: create Section marker type, so we can customize it a bit --- gtk2_ardour/editor_drag.cc | 1 + gtk2_ardour/editor_markers.cc | 2 +- gtk2_ardour/marker.cc | 38 +++++++++++++++++++++++++++++------ gtk2_ardour/marker.h | 1 + 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index b913265efc..c52dfa1eda 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -4520,6 +4520,7 @@ MarkerDrag::motion (GdkEvent* event, bool) } else { switch (_marker->type ()) { case ArdourMarker::SessionStart: + case ArdourMarker::Section: case ArdourMarker::RangeStart: case ArdourMarker::LoopStart: case ArdourMarker::PunchIn: diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 2ed5a1837d..d6198f7c1c 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -133,7 +133,7 @@ Editor::add_new_location_internal (Location* location) lam->start->set_cue_index(location->cue_id()); group = cue_marker_group; } else if (location->is_section()) { - lam->start = new ArdourMarker (*this, *section_marker_group, color, location->name(), ArdourMarker::Mark, location->start()); + lam->start = new ArdourMarker (*this, *section_marker_group, color, location->name(), ArdourMarker::Section, location->start()); group = section_marker_group; } else { lam->start = new ArdourMarker (*this, *marker_group, color, location->name(), ArdourMarker::Mark, location->start()); diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index 1605da68da..49e4605091 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -235,6 +235,16 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Item& parent, std::s _label_offset = 8.0 * scale; break; + case Section: + points = new ArdourCanvas::Points (); //unused + points->push_back (ArdourCanvas::Duple ( 0.0, 0.0)); + points->push_back (ArdourCanvas::Duple (M6 + .5, MH * .5)); + points->push_back (ArdourCanvas::Duple ( 0.0, MH)); + points->push_back (ArdourCanvas::Duple ( 0.0, 0.0)); + + _shift = 0 * scale; + _label_offset = 4.0 * scale; + break; case PunchOut: /* fallthrough */ case LoopEnd: /* fallthrough */ @@ -331,6 +341,13 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Item& parent, std::s _pcue->hide(); _pmark->show(); break; + case Section: + _pmark->hide(); + _pcue->hide(); + if (_name_flag) { + _name_flag->show(); + } + break; case Cue: _pcue->set_outline(false); _pcue->set_fill(true); @@ -365,7 +382,11 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Item& parent, std::s _name_item->set_font_description (name_font); _name_item->set_color (RGBA_TO_UINT (0,0,0,255)); - _name_item->set_position (ArdourCanvas::Duple (_label_offset, floor (.5 * (name_height - name_descent - .5)))); + if (_type==Section) { + _name_item->set_position (ArdourCanvas::Duple (_label_offset, 0.5 * marker_height - ceil (.5 * (name_height)))); + } else { + _name_item->set_position (ArdourCanvas::Duple (_label_offset, floor (.5 * (name_height - name_descent - .5)))); + } apply_color (); @@ -551,6 +572,11 @@ ArdourMarker::setup_name_display () pixel_size (_name, name_font, name_width, name_height); name_width = min ((double) name_width + padding, limit); + if (_name_flag) { + _name_flag->set_y0 (0); + _name_flag->set_y1 (marker_height - padding); + } + if (name_width == 0) { _name_item->hide (); } else { @@ -605,6 +631,11 @@ ArdourMarker::setup_name_display () _name_flag->set_x0 (M3); _name_flag->set_x1 (_name_item->position().x + name_width + padding + 1*scale); break; + case Section: + _name_flag->set_x0 (0); + _name_flag->set_x1 (_name_item->position().x + name_width + padding); + _name_flag->set_y1 (marker_height); //full height + break; default: _name_flag->set_x0 (0); _name_flag->set_x1 (_name_item->position().x + name_width + padding); @@ -613,11 +644,6 @@ ArdourMarker::setup_name_display () } } } - - if (_name_flag) { - _name_flag->set_y0 (0); - _name_flag->set_y1 (marker_height - padding); - } } void diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h index e74ee61778..c45625cee2 100644 --- a/gtk2_ardour/marker.h +++ b/gtk2_ardour/marker.h @@ -62,6 +62,7 @@ public: BBTPosition, SessionStart, ///< session start SessionEnd, ///< session end + Section, RangeStart, RangeEnd, LoopStart,