bbt markers: now have an (insensitive) tempo and meter marker visible

probably needs more work for event handling on the tempo and
meter markers.
This commit is contained in:
Paul Davis 2023-06-28 18:02:45 -06:00
parent b490f7d2a1
commit ac491fce0e
3 changed files with 33 additions and 4 deletions

View File

@ -164,7 +164,7 @@ Editor::reassociate_bartime_marker (TempoMap::SharedPtr const & tmap, TempoMap::
void
Editor::make_bbt_marker (MusicTimePoint const * mtp, Marks::iterator before)
{
bbt_marks.insert (before, new BBTMarker (*this, *bbt_ruler, "meter marker", *mtp));
bbt_marks.insert (before, new BBTMarker (*this, *bbt_ruler, "meter marker", *mtp, *tempo_group, *mapping_group, *meter_group));
}
void

View File

@ -857,9 +857,13 @@ MeterMarker::point() const
/***********************************************************************/
BBTMarker::BBTMarker (PublicEditor& editor, ArdourCanvas::Item& parent, std::string const& color_name, Temporal::MusicTimePoint const & p)
BBTMarker::BBTMarker (PublicEditor& editor, ArdourCanvas::Item& parent, std::string const& color_name, Temporal::MusicTimePoint const & p,
ArdourCanvas::Item& tempo_parent,
ArdourCanvas::Item& mapping_parent,
ArdourCanvas::Item& meter_parent)
: MetricMarker (editor, parent, color_name, p.name(), BBTPosition, p.time(), false)
, _point (&p)
, tempo_marker (new TempoMarker (editor, tempo_parent, mapping_parent, X_("tempo marker"), "", p, p.sample (TEMPORAL_SAMPLE_RATE), UIConfiguration::instance().color (X_("tempo curve"))))
{
std::stringstream full_tooltip;
@ -870,6 +874,14 @@ BBTMarker::BBTMarker (PublicEditor& editor, ArdourCanvas::Item& parent, std::str
set_name (name(), full_tooltip.str());
group->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_bbt_marker_event), group, this));
char buf[64];
snprintf (buf, sizeof(buf), "%d/%d", p.divisions_per_bar(), p.note_value ());
meter_marker = new MeterMarker (editor, meter_parent, "meter marker", buf, p);
tempo_marker->the_item().set_ignore_events (true);
meter_marker->the_item().set_ignore_events (true);
}
BBTMarker::~BBTMarker ()
@ -880,6 +892,9 @@ void
BBTMarker::update ()
{
set_position (_point->time());
tempo_marker->update ();
meter_marker->update ();
}
void
@ -893,3 +908,11 @@ BBTMarker::point() const
{
return *_point;
}
void
BBTMarker::set_position (Temporal::timepos_t const & pos)
{
ArdourMarker::set_position (pos);
tempo_marker->set_position (pos);
meter_marker->set_position (pos);
}

View File

@ -91,7 +91,7 @@ public:
void set_show_line (bool);
void set_line_height (double);
void set_position (Temporal::timepos_t const &);
virtual void set_position (Temporal::timepos_t const &);
void set_name (const std::string&, const std::string & tooltip = std::string());
void set_color (std::string const& color_name);
void set_points_color (std::string const& color_name);
@ -230,17 +230,23 @@ class MeterMarker : public MetricMarker
class BBTMarker : public MetricMarker
{
public:
BBTMarker (PublicEditor& editor, ArdourCanvas::Item &, std::string const& color_name, Temporal::MusicTimePoint const &);
BBTMarker (PublicEditor& editor, ArdourCanvas::Item &, std::string const& color_name, Temporal::MusicTimePoint const &,
ArdourCanvas::Item & tempo_parent,
ArdourCanvas::Item & mapping_parent,
ArdourCanvas::Item & meter_parent);
~BBTMarker ();
void reset_point (Temporal::MusicTimePoint const &);
void update ();
void set_position (Temporal::timepos_t const &);
Temporal::MusicTimePoint const & mt_point() const { return *_point; }
Temporal::Point const & point() const;
private:
Temporal::MusicTimePoint const * _point;
TempoMarker* tempo_marker;
MeterMarker* meter_marker;
};
#endif /* __gtk_ardour_marker_h__ */