1 #ifndef __CANVAS_LOOKUP_TABLE_H__
2 #define __CANVAS_LOOKUP_TABLE_H__
5 #include <boost/multi_array.hpp>
6 #include "canvas/types.h"
8 class OptimizingLookupTableTest;
10 namespace ArdourCanvas {
18 LookupTable (Group const &);
19 virtual ~LookupTable ();
21 virtual std::vector<Item*> get (Rect const &) = 0;
22 virtual std::vector<Item*> items_at_point (Duple) const = 0;
29 class DumbLookupTable : public LookupTable
32 DumbLookupTable (Group const &);
34 std::vector<Item*> get (Rect const &);
35 std::vector<Item*> items_at_point (Duple) const;
38 class OptimizingLookupTable : public LookupTable
41 OptimizingLookupTable (Group const &, int);
42 ~OptimizingLookupTable ();
43 std::vector<Item*> get (Rect const &);
44 std::vector<Item*> items_at_point (Duple) const;
46 static int default_items_per_cell;
50 void area_to_indices (Rect const &, int &, int &, int &, int &) const;
51 void point_to_indices (Duple, int &, int &) const;
53 friend class ::OptimizingLookupTableTest;
55 typedef std::vector<Item*> Cell;