diff options
Diffstat (limited to 'libs/canvas/canvas/lookup_table.h')
-rw-r--r-- | libs/canvas/canvas/lookup_table.h | 73 |
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; }; } |