/*
- 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"
-
-typedef boost::fast_pool_allocator<
- std::pair<double, ArdourCanvas::SimpleLine>,
- boost::default_user_allocator_new_delete,
- boost::details::pool::null_mutex,
- 8192>
- MapAllocator;
+#include <list>
+#include "ardour/tempo.h"
class TempoLines {
public:
void tempo_map_changed();
- void draw(ARDOUR::TempoMap::BBTPointList& points, double frames_per_unit);
+ void draw (const ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
+ const ARDOUR::TempoMap::BBTPointList::const_iterator& end,
+ double frames_per_unit);
void show();
void hide();
private:
- typedef std::map<double, ArdourCanvas::SimpleLine*, std::less<double>, MapAllocator> Lines;
+ typedef std::list<ArdourCanvas::Line*> Lines;
Lines _lines;
+ Lines _cache;
- ArdourCanvas::Canvas& _canvas;
+ ArdourCanvas::Canvas& _canvas;
ArdourCanvas::Group* _group;
- double _clean_left;
- double _clean_right;
double _height;
};