From b0caf0cf11a3afdfbc9327641dde6ea7a8257fc5 Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Sat, 26 Dec 2009 01:31:51 +0100 Subject: Refactoring of 3D box tool, mainly to avoid unnecessary creation of perspectives. (bzr r8910) --- src/selection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/selection.cpp') diff --git a/src/selection.cpp b/src/selection.cpp index 4d92a18df..ed8a9d57b 100644 --- a/src/selection.cpp +++ b/src/selection.cpp @@ -224,7 +224,7 @@ void Selection::remove_box_perspective(SPBox3D *box) { Persp3D *persp = box3d_get_perspective(box); std::map::iterator p = _persps.find(persp); if (p == _persps.end()) { - g_print ("Warning! Trying to remove unselected perspective from selection!\n"); + //g_print ("Warning! Trying to remove unselected perspective from selection!\n"); return; } if ((*p).second > 1) { -- cgit v1.2.3 From bcef1f768feeb937aa0e86842871f0b479ec284a Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Sat, 26 Dec 2009 01:32:25 +0100 Subject: Major simplification of 3D box code. (bzr r8911) --- src/selection.cpp | 49 +++++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) (limited to 'src/selection.cpp') diff --git a/src/selection.cpp b/src/selection.cpp index ed8a9d57b..828a96968 100644 --- a/src/selection.cpp +++ b/src/selection.cpp @@ -162,24 +162,12 @@ void Selection::add(SPObject *obj, bool persist_selection_context/* = false */) _emitChanged(persist_selection_context); } -void Selection::add_box_perspective(SPBox3D *box) { - Persp3D *persp = box3d_get_perspective(box); - std::map::iterator p = _persps.find(persp); - if (p != _persps.end()) { - (*p).second++; - } else { - _persps[persp] = 1; - } -} - void Selection::add_3D_boxes_recursively(SPObject *obj) { std::list boxes = box3d_extract_boxes(obj); for (std::list::iterator i = boxes.begin(); i != boxes.end(); ++i) { SPBox3D *box = *i; - box3d_add_to_selection(box); _3dboxes.push_back(box); - add_box_perspective(box); } } @@ -220,33 +208,17 @@ void Selection::remove(SPObject *obj) { _emitChanged(); } -void Selection::remove_box_perspective(SPBox3D *box) { - Persp3D *persp = box3d_get_perspective(box); - std::map::iterator p = _persps.find(persp); - if (p == _persps.end()) { - //g_print ("Warning! Trying to remove unselected perspective from selection!\n"); - return; - } - if ((*p).second > 1) { - _persps[persp]--; - } else { - _persps.erase(p); - } -} - void Selection::remove_3D_boxes_recursively(SPObject *obj) { std::list boxes = box3d_extract_boxes(obj); for (std::list::iterator i = boxes.begin(); i != boxes.end(); ++i) { SPBox3D *box = *i; - box3d_remove_from_selection(box); std::list::iterator b = std::find(_3dboxes.begin(), _3dboxes.end(), box); if (b == _3dboxes.end()) { g_print ("Warning! Trying to remove unselected box from selection.\n"); return; } _3dboxes.erase(b); - remove_box_perspective(box); } } @@ -344,14 +316,27 @@ GSList const *Selection::reprList() { std::list const Selection::perspList() { std::list pl; - for (std::map::iterator p = _persps.begin(); p != _persps.end(); ++p) { - pl.push_back((*p).first); + for (std::list::iterator i = _3dboxes.begin(); i != _3dboxes.end(); ++i) { + Persp3D *persp = box3d_get_perspective(*i); + if (std::find(pl.begin(), pl.end(), persp) == pl.end()) + pl.push_back(persp); } return pl; } -std::list const Selection::box3DList() { - return _3dboxes; +std::list const Selection::box3DList(Persp3D *persp) { + std::list boxes; + if (persp) { + SPBox3D *box; + for (std::list::iterator i = _3dboxes.begin(); i != _3dboxes.end(); ++i) { + box = *i; + if (persp == box3d_get_perspective(box)) + boxes.push_back(box); + } + } else { + boxes = _3dboxes; + } + return boxes; } SPObject *Selection::single() { -- cgit v1.2.3 From 760e1d9dca7bff3c00758d8efc38f8ba22766e08 Mon Sep 17 00:00:00 2001 From: Diederik van Lierop Date: Wed, 30 Dec 2009 15:34:51 +0100 Subject: Small snap bug has been eliminated, flowed text snapping now uses baseline, replacing tabs by spaces, removing some commented lines (bzr r8925) --- src/selection.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/selection.cpp') diff --git a/src/selection.cpp b/src/selection.cpp index 828a96968..7b936587c 100644 --- a/src/selection.cpp +++ b/src/selection.cpp @@ -440,7 +440,7 @@ std::vector > Selection::getSnapPoints(SnapPreferenc //Include the transformation origin for snapping //For a selection or group only the overall origin is considered if (snapprefs != NULL && snapprefs->getIncludeItemCenter()) { - p.push_back(std::make_pair(this_item->getCenter(), SNAPSOURCE_ROTATION_CENTER)); + p.push_back(std::make_pair(this_item->getCenter(), SNAPSOURCE_ROTATION_CENTER)); } } @@ -452,12 +452,12 @@ std::vector > Selection::getSnapPointsConvexHull(Sna std::vector > p; for (GSList const *iter = items; iter != NULL; iter = iter->next) { - sp_item_snappoints(SP_ITEM(iter->data), false, p, snapprefs); + sp_item_snappoints(SP_ITEM(iter->data), false, p, snapprefs); } std::vector > pHull; if (!p.empty()) { - std::vector >::iterator i; + std::vector >::iterator i; Geom::RectHull cvh((p.front()).first); for (i = p.begin(); i != p.end(); i++) { // these are the points we get back -- cgit v1.2.3