diff options
| author | Adrian Boguszewski <adrbogus1@student.pg.gda.pl> | 2016-06-19 22:59:39 +0000 |
|---|---|---|
| committer | Adrian Boguszewski <adrbogus1@student.pg.gda.pl> | 2016-06-19 22:59:39 +0000 |
| commit | 73a7b549a1a59b121218d4f6d22d51c449a4ca60 (patch) | |
| tree | a76ed3ce8956dbffde439f01f694edb40ad60719 /src/object-set.h | |
| parent | Moved most functions from Selection to ObjectSet (diff) | |
| parent | [Bug #1454910] Compressed SVG with media error. (diff) | |
| download | inkscape-73a7b549a1a59b121218d4f6d22d51c449a4ca60.tar.gz inkscape-73a7b549a1a59b121218d4f6d22d51c449a4ca60.zip | |
Added first range to ObjectSet
(bzr r14954.1.8)
Diffstat (limited to 'src/object-set.h')
| -rw-r--r-- | src/object-set.h | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/object-set.h b/src/object-set.h index 391046ab8..05264a3ea 100644 --- a/src/object-set.h +++ b/src/object-set.h @@ -18,6 +18,9 @@ #include <boost/multi_index/identity.hpp> #include <boost/multi_index/sequenced_index.hpp> #include <boost/multi_index/hashed_index.hpp> +#include <boost/multi_index/random_access_index.hpp> +#include <boost/range/sub_range.hpp> +#include <boost/range/any_range.hpp> #include <sigc++/connection.h> #include "sp-object.h" #include "sp-item.h" @@ -26,16 +29,31 @@ class SPBox3D; class Persp3D; struct hashed{}; +struct random_access{}; typedef boost::multi_index_container< SPObject*, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, + boost::multi_index::random_access< + boost::multi_index::tag<random_access>>, boost::multi_index::hashed_unique< boost::multi_index::tag<hashed>, boost::multi_index::identity<SPObject*>> >> multi_index_container; +typedef boost::any_range< + SPObject*, + boost::random_access_traversal_tag, + SPObject* const&, + std::ptrdiff_t> SPObjectRange; + +typedef boost::any_range< + SPItem*, + boost::random_access_traversal_tag, + SPItem* const&, + std::ptrdiff_t> SPItemRange; + class ObjectSet { public: enum CompareSize {HORIZONTAL, VERTICAL, AREA}; @@ -126,7 +144,7 @@ public: SPItem *largestItem(CompareSize compare); /** Returns the list of selected objects. */ - std::vector<SPObject*> list(); + SPObjectRange range(); /** Returns the list of selected SPItems. */ std::vector<SPItem*> itemList(); @@ -174,15 +192,12 @@ public: */ std::list<SPBox3D *> const box3DList(Persp3D *persp = NULL); - - multi_index_container::iterator begin(); - multi_index_container::iterator end(); - protected: virtual void _connectSignals(SPObject* object) {}; virtual void _releaseSignals(SPObject* object) {}; virtual void _emitSignals() {}; void _add(SPObject* object); + void _clear(); void _remove(SPObject* object); bool _anyAncestorIsInSet(SPObject *object); void _removeDescendantsFromSet(SPObject *object); |
