}
vector<Item *>
-DumbLookupTable::get (Rect const &)
+DumbLookupTable::get (Rect const &area)
{
list<Item *> const & items = _item.items ();
vector<Item *> vitems;
+#if 1
+ for (list<Item *>::const_iterator i = items.begin(); i != items.end(); ++i) {
+ boost::optional<Rect> item_bbox = (*i)->bounding_box ();
+ if (!item_bbox) continue;
+ Rect item = (*i)->item_to_window (item_bbox.get());
+ if (item.intersection (area)) {
+ vitems.push_back (*i);
+ }
+ }
+#else
copy (items.begin(), items.end(), back_inserter (vitems));
+#endif
return vitems;
}
if (!(*i)->visible()) {
continue;
}
-
+
if ((*i)->covers (point)) {
// std::cerr << "\t\t" << (*i)->whatami() << '/' << (*i)->name << " covers " << point << std::endl;
return true;
-
+
}
}
if (y >= _dimension) {
cout << "WARNING: y=" << y << ", dim=" << _dimension << ", py=" << point.y << " cellsize=" << _cell_size << "\n";
}
-
+
/* XXX: hmm */
x = min (_dimension - 1, x);
y = min (_dimension - 1, y);
if (y >= _dimension) {
cout << "WARNING: y=" << y << ", dim=" << _dimension << ", py=" << point.y << " cellsize=" << _cell_size << "\n";
}
-
+
/* XXX: hmm */
x = min (_dimension - 1, x);
y = min (_dimension - 1, y);
return false;
}
-
+
/** @param area Area in our owning item's coordinates */
vector<Item*>
OptimizingLookupTable::get (Rect const & area)
vector<Item*> vitems;
copy (items.begin (), items.end (), back_inserter (vitems));
-
+
return vitems;
}