22 #include "canvas/canvas.h"
23 #include "canvas/debug.h"
35 lines.set_extent (ArdourCanvas::COORD_MAX);
62 const double fpb = b->tempo->frames_per_beat(frame_rate);
65 for (
unsigned l = 1; l < divisions; ++l) {
67 unsigned level = divisions;
68 for (
unsigned d = divisions; d >= 4; d /= 2) {
69 if (l % (divisions / d) == 0) {
75 const uint8_t a = max(8, (
int)rint(
UINT_RGBA_A(base) / (0.8 * log2(level))));
77 const framepos_t f = b->frame + (l * (fpb / (double)divisions));
78 if (f > leftmost_frame) {
86 const ARDOUR::TempoMap::BBTPointList::const_iterator& end,
91 ARDOUR::TempoMap::BBTPointList::const_iterator i;
102 bars = (*i).bar - (*begin).bar;
103 beats = distance (begin, end) - bars;
105 beat_density = (beats * 10.0f) /
lines.canvas()->width();
107 if (beat_density > 2.0
f) {
114 while (divisions > 3 && beat_density * divisions > 0.4) {
120 if (beat_density <= 0.12 && begin != end && begin->frame > 0) {
122 ARDOUR::TempoMap::BBTPointList::const_iterator prev = begin;
124 draw_ticks(prev, divisions, leftmost_frame, frame_rate);
127 for (i = begin; i != end; ++i) {
132 if (beat_density > 0.3) {
140 lines.add (xpos, 1.0, color);
142 if (beat_density <= 0.12) {
144 draw_ticks(i, divisions, leftmost_frame, frame_rate);
ArdourCanvas::Color color(const std::string &, bool *failed=0) const
ArdourCanvas::LineSet lines
#define UINT_RGBA_CHANGE_A(x, a)
TempoLines(ArdourCanvas::Container *group, double screen_height)
static PublicEditor & instance()
void draw(const ARDOUR::TempoMap::BBTPointList::const_iterator &begin, const ARDOUR::TempoMap::BBTPointList::const_iterator &end, unsigned divisions, framecnt_t leftmost_frame, framecnt_t frame_rate)
ArdourCanvas::Color color_mod(std::string const &color, std::string const &modifier) const
static UIConfiguration * config()
virtual double sample_to_pixel_unrounded(framepos_t frame) const =0
void draw_ticks(const ARDOUR::TempoMap::BBTPointList::const_iterator &b, unsigned divisions, framecnt_t leftmost_frame, framecnt_t frame_rate)
LIBARDOUR_API PBD::PropertyDescriptor< bool > color