/*
- Copyright (C) 2000-2007 Paul Davis
+ Copyright (C) 2000-2007 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#ifndef __ardour_tempo_lines_h__
#define __ardour_tempo_lines_h__
-#include <map>
-#include <boost/pool/pool.hpp>
-#include <boost/pool/pool_alloc.hpp>
-#include <ardour/tempo.h>
-#include "canvas.h"
-#include "simpleline.h"
+#include "ardour/tempo.h"
-typedef boost::fast_pool_allocator<
- std::pair<double, ArdourCanvas::SimpleLine>,
- boost::default_user_allocator_new_delete,
- boost::details::pool::null_mutex,
- 8192>
- MapAllocator;
+#include "canvas/line_set.h"
class TempoLines {
public:
- TempoLines(ArdourCanvas::Canvas& canvas, ArdourCanvas::Group* group);
+ TempoLines (ArdourCanvas::Container* group, double screen_height);
void tempo_map_changed();
- void draw(ARDOUR::TempoMap::BBTPointList& points, double frames_per_unit);
+ void draw (std::vector<ARDOUR::TempoMap::BBTPoint>& grid,
+ unsigned divisions,
+ ARDOUR::framecnt_t leftmost_frame,
+ ARDOUR::framecnt_t frame_rate);
void show();
void hide();
private:
- typedef std::map<double, ArdourCanvas::SimpleLine*, std::less<double>, MapAllocator> Lines;
- Lines _lines;
+ void draw_ticks (std::vector<ARDOUR::TempoMap::BBTPoint>& grid,
+ unsigned divisions,
+ ARDOUR::framecnt_t leftmost_frame,
+ ARDOUR::framecnt_t frame_rate);
- ArdourCanvas::Canvas& _canvas;
- ArdourCanvas::Group* _group;
- double _clean_left;
- double _clean_right;
+ ArdourCanvas::LineSet lines;
};
#endif /* __ardour_tempo_lines_h__ */