summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas/lookup_table.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/canvas/canvas/lookup_table.h')
-rw-r--r--libs/canvas/canvas/lookup_table.h73
1 files changed, 39 insertions, 34 deletions
diff --git a/libs/canvas/canvas/lookup_table.h b/libs/canvas/canvas/lookup_table.h
index 4ab69b6167..5be33c1bca 100644
--- a/libs/canvas/canvas/lookup_table.h
+++ b/libs/canvas/canvas/lookup_table.h
@@ -22,6 +22,8 @@
#include <vector>
#include <boost/multi_array.hpp>
+
+#include "canvas/visibility.h"
#include "canvas/types.h"
class OptimizingLookupTableTest;
@@ -31,53 +33,56 @@ namespace ArdourCanvas {
class Item;
class Group;
-class LookupTable
+class LIBCANVAS_API LookupTable
{
public:
- LookupTable (Group const &);
- virtual ~LookupTable ();
-
- virtual std::vector<Item*> get (Rect const &) = 0;
- virtual std::vector<Item*> items_at_point (Duple) const = 0;
+ LookupTable (Group const &);
+ virtual ~LookupTable ();
+
+ virtual std::vector<Item*> get (Rect const &) = 0;
+ virtual std::vector<Item*> items_at_point (Duple const &) const = 0;
+ virtual bool has_item_at_point (Duple const & point) const = 0;
protected:
- Group const & _group;
+ Group const & _group;
};
-class DumbLookupTable : public LookupTable
+class LIBCANVAS_API DumbLookupTable : public LookupTable
{
public:
- DumbLookupTable (Group const &);
-
- std::vector<Item*> get (Rect const &);
- std::vector<Item*> items_at_point (Duple) const;
+ DumbLookupTable (Group const &);
+
+ std::vector<Item*> get (Rect const &);
+ std::vector<Item*> items_at_point (Duple const &) const;
+ bool has_item_at_point (Duple const & point) const;
};
-class OptimizingLookupTable : public LookupTable
+class LIBCANVAS_API OptimizingLookupTable : public LookupTable
{
public:
- OptimizingLookupTable (Group const &, int);
- ~OptimizingLookupTable ();
- std::vector<Item*> get (Rect const &);
- std::vector<Item*> items_at_point (Duple) const;
-
- static int default_items_per_cell;
-
-private:
-
- void area_to_indices (Rect const &, int &, int &, int &, int &) const;
- void point_to_indices (Duple, int &, int &) const;
-
- friend class ::OptimizingLookupTableTest;
-
- typedef std::vector<Item*> Cell;
- int _items_per_cell;
- int _dimension;
- Duple _cell_size;
- Duple _offset;
- Cell** _cells;
- bool _added;
+ OptimizingLookupTable (Group const &, int);
+ ~OptimizingLookupTable ();
+ std::vector<Item*> get (Rect const &);
+ std::vector<Item*> items_at_point (Duple const &) const;
+ bool has_item_at_point (Duple const & point) const;
+
+ static int default_items_per_cell;
+
+ private:
+
+ void area_to_indices (Rect const &, int &, int &, int &, int &) const;
+ void point_to_indices (Duple, int &, int &) const;
+
+ friend class ::OptimizingLookupTableTest;
+
+ typedef std::vector<Item*> Cell;
+ int _items_per_cell;
+ int _dimension;
+ Duple _cell_size;
+ Duple _offset;
+ Cell** _cells;
+ bool _added;
};
}