start adding new BBT marker support

This commit is contained in:
Paul Davis 2021-02-10 14:34:30 -07:00
parent 34a3db7eaa
commit 4f1ad4ed0d
7 changed files with 45 additions and 0 deletions

View file

@ -1660,6 +1660,7 @@ private:
bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*); bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*);
bool canvas_tempo_curve_event (GdkEvent* event,ArdourCanvas::Item*, TempoCurve*); bool canvas_tempo_curve_event (GdkEvent* event,ArdourCanvas::Item*, TempoCurve*);
bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*); bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*);
bool canvas_bbt_marker_event (GdkEvent* event,ArdourCanvas::Item*, BBTMarker*);
bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*); bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*);
bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item*);

View file

@ -1435,6 +1435,7 @@ Editor::which_canvas_cursor(ItemType type) const
/* These items use the grabber cursor at all times */ /* These items use the grabber cursor at all times */
case MeterMarkerItem: case MeterMarkerItem:
case BBTMarkerItem:
case TempoMarkerItem: case TempoMarkerItem:
case MeterBarItem: case MeterBarItem:
case TempoBarItem: case TempoBarItem:

View file

@ -1026,6 +1026,12 @@ Editor::canvas_meter_marker_event (GdkEvent *event, ArdourCanvas::Item* item, Me
return typed_event (item, event, MeterMarkerItem); return typed_event (item, event, MeterMarkerItem);
} }
bool
Editor::canvas_bbt_marker_event (GdkEvent *event, ArdourCanvas::Item* item, BBTMarker* /*marker*/)
{
return typed_event (item, event, BBTMarkerItem);
}
bool bool
Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType type) Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType type)
{ {

View file

@ -37,6 +37,7 @@ enum ItemType {
GainLineItem, GainLineItem,
AutomationLineItem, AutomationLineItem,
MeterMarkerItem, MeterMarkerItem,
BBTMarkerItem,
TempoCurveItem, TempoCurveItem,
TempoMarkerItem, TempoMarkerItem,
MeterBarItem, MeterBarItem,

View file

@ -688,3 +688,22 @@ MeterMarker::reset_meter (Temporal::MeterPoint & m)
{ {
_meter = m; _meter = m;
} }
/***********************************************************************/
BBTMarker::BBTMarker (PublicEditor& editor, ArdourCanvas::Container& parent, guint32 rgba, const string& text, Temporal::MusicTimePoint& p)
: ArdourMarker (editor, parent, rgba, text, BBTPosition, p.time(), false)
, _point (p)
{
group->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_bbt_marker_event), group, this));
}
BBTMarker::~BBTMarker ()
{
}
void
BBTMarker::reset_point (Temporal::MusicTimePoint & p)
{
_point = p;
}

View file

@ -38,6 +38,7 @@
namespace Temporal { namespace Temporal {
class TempoPoint; class TempoPoint;
class MeterPoint; class MeterPoint;
class MusicTimePoint;
} }
class PublicEditor; class PublicEditor;
@ -54,6 +55,7 @@ public:
Mark, Mark,
Tempo, Tempo,
Meter, Meter,
BBTPosition,
SessionStart, ///< session start SessionStart, ///< session start
SessionEnd, ///< session end SessionEnd, ///< session end
RangeStart, RangeStart,
@ -183,4 +185,18 @@ class MeterMarker : public ArdourMarker
Temporal::MeterPoint& _meter; Temporal::MeterPoint& _meter;
}; };
class BBTMarker : public ArdourMarker
{
public:
BBTMarker (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, const std::string& text, Temporal::MusicTimePoint&);
~BBTMarker ();
void reset_point (Temporal::MusicTimePoint &);
Temporal::MusicTimePoint& point() const { return _point; }
private:
Temporal::MusicTimePoint& _point;
};
#endif /* __gtk_ardour_marker_h__ */ #endif /* __gtk_ardour_marker_h__ */

View file

@ -441,6 +441,7 @@ public:
virtual bool canvas_tempo_marker_event (GdkEvent* event, ArdourCanvas::Item*, TempoMarker*) = 0; virtual bool canvas_tempo_marker_event (GdkEvent* event, ArdourCanvas::Item*, TempoMarker*) = 0;
virtual bool canvas_tempo_curve_event (GdkEvent* event, ArdourCanvas::Item*, TempoCurve*) = 0; virtual bool canvas_tempo_curve_event (GdkEvent* event, ArdourCanvas::Item*, TempoCurve*) = 0;
virtual bool canvas_meter_marker_event (GdkEvent* event, ArdourCanvas::Item*, MeterMarker*) = 0; virtual bool canvas_meter_marker_event (GdkEvent* event, ArdourCanvas::Item*, MeterMarker*) = 0;
virtual bool canvas_bbt_marker_event (GdkEvent* event, ArdourCanvas::Item*, BBTMarker*) = 0;
virtual bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) = 0; virtual bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) = 0;
virtual bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; virtual bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;