summaryrefslogtreecommitdiffstats
path: root/src/object-set.h
diff options
context:
space:
mode:
authorAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-06-19 22:59:39 +0000
committerAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-06-19 22:59:39 +0000
commit73a7b549a1a59b121218d4f6d22d51c449a4ca60 (patch)
treea76ed3ce8956dbffde439f01f694edb40ad60719 /src/object-set.h
parentMoved most functions from Selection to ObjectSet (diff)
parent[Bug #1454910] Compressed SVG with media error. (diff)
downloadinkscape-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.h25
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);