/*
- 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/beats_frames_converter.h"
+#include "ardour/tempo.h"
-typedef boost::fast_pool_allocator<
- std::pair<const 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, double screen_height);
+ TempoLines (ArdourCanvas::Container* group, double screen_height, ARDOUR::BeatsFramesConverter* bfc);
+ ~TempoLines ();
- void tempo_map_changed();
+ void tempo_map_changed(framepos_t new_origin);
- 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;
-
- ArdourCanvas::Canvas& _canvas;
- ArdourCanvas::Group* _group;
- double _clean_left;
- double _clean_right;
- double _height;
+ void draw_ticks (std::vector<ARDOUR::TempoMap::BBTPoint>& grid,
+ unsigned divisions,
+ ARDOUR::framecnt_t leftmost_frame,
+ ARDOUR::framecnt_t frame_rate);
+
+ ArdourCanvas::LineSet lines;
+ ARDOUR::BeatsFramesConverter* _bfc;
};
#endif /* __ardour_tempo_lines_h__ */