summaryrefslogtreecommitdiffstats
path: root/src/ui/tools
diff options
context:
space:
mode:
authorMarc Jeanmougin <mc>2015-02-19 03:25:21 +0000
committerMarc Jeanmougin <mc>2015-02-19 03:25:21 +0000
commit5fd00cab14d48beaf2279a2b8f3ad5b02b76c87b (patch)
treeff77bac142c02624cbdfaa2ebd01422e8697205a /src/ui/tools
parentI can't really understand why, but i can now launch inkscape without it segfa... (diff)
downloadinkscape-5fd00cab14d48beaf2279a2b8f3ad5b02b76c87b.tar.gz
inkscape-5fd00cab14d48beaf2279a2b8f3ad5b02b76c87b.zip
Put a few std::vector<SPitem*>
(bzr r13922.1.5)
Diffstat (limited to 'src/ui/tools')
-rw-r--r--src/ui/tools/connector-tool.cpp4
-rw-r--r--src/ui/tools/eraser-tool.cpp18
-rw-r--r--src/ui/tools/gradient-tool.cpp12
-rw-r--r--src/ui/tools/lpe-tool.cpp4
-rw-r--r--src/ui/tools/measure-tool.cpp4
-rw-r--r--src/ui/tools/mesh-tool.cpp12
-rw-r--r--src/ui/tools/node-tool.cpp6
-rw-r--r--src/ui/tools/select-tool.cpp2
-rw-r--r--src/ui/tools/spray-tool.cpp14
-rw-r--r--src/ui/tools/text-tool.cpp4
-rw-r--r--src/ui/tools/tool-base.cpp4
-rw-r--r--src/ui/tools/tweak-tool.cpp12
12 files changed, 47 insertions, 49 deletions
diff --git a/src/ui/tools/connector-tool.cpp b/src/ui/tools/connector-tool.cpp
index fc40c20e7..9c6eead16 100644
--- a/src/ui/tools/connector-tool.cpp
+++ b/src/ui/tools/connector-tool.cpp
@@ -1316,8 +1316,8 @@ void cc_selection_set_avoid(bool const set_avoid)
int changes = 0;
- SelContainer l = selection->itemList();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++) {
+ std::vector<SPItem*> l = selection->itemList();
+ for(std::vector<SPItem*>::const_iterator i=l.begin();i!=l.end();i++) {
SPItem *item = SP_ITEM(*i);
char const *value = (set_avoid) ? "true" : NULL;
diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp
index 3526e015a..520b93e72 100644
--- a/src/ui/tools/eraser-tool.cpp
+++ b/src/ui/tools/eraser-tool.cpp
@@ -676,8 +676,7 @@ void EraserTool::set_to_accumulated() {
Geom::OptRect eraserBbox = acid->visualBounds();
Geom::Rect bounds = (*eraserBbox) * desktop->doc2dt();
std::vector<SPItem*> remainingItems;
- SelContainer toWorkOn;
-
+ std::vector<SPItem*> toWorkOn;
if (selection->isEmpty()) {
if ( eraserMode ) {
toWorkOn = desktop->getDocument()->getItemsPartiallyInBox(desktop->dkey, bounds);
@@ -685,16 +684,15 @@ void EraserTool::set_to_accumulated() {
Inkscape::Rubberband *r = Inkscape::Rubberband::get(desktop);
toWorkOn = desktop->getDocument()->getItemsAtPoints(desktop->dkey, r->getPoints());
}
-
- toWorkOn.remove(static_cast<SPObject*>(acid) );
+ toWorkOn.erase(find(toWorkOn.begin(),toWorkOn.end(),acid));
} else {
- toWorkOn = selection->itemList();
+ toWorkOn= selection->itemList();
wasSelection = true;
}
if ( !toWorkOn.empty() ) {
if ( eraserMode ) {
- for (SelContainer::const_iterator i = toWorkOn.begin();i!=toWorkOn.end();i++) {
+ for (std::vector<SPItem*>::const_iterator i = toWorkOn.begin();i!=toWorkOn.end();i++) {
SPItem *item = SP_ITEM(*i);
if ( eraserMode ) {
@@ -712,8 +710,8 @@ void EraserTool::set_to_accumulated() {
if ( !selection->isEmpty() ) {
// If the item was not completely erased, track the new remainder.
- SelContainer nowSel(selection->itemList());
- for (SelContainer::const_iterator i2 = nowSel.begin();i!=nowSel.end();i++) {
+ std::vector<SPItem*> nowSel(selection->itemList());
+ for (std::vector<SPItem*>::const_iterator i2 = nowSel.begin();i!=nowSel.end();i2++) {
remainingItems.push_back(SP_ITEM(*i2));
}
}
@@ -723,11 +721,11 @@ void EraserTool::set_to_accumulated() {
}
}
} else {
- for (SelContainer::const_iterator i = toWorkOn.begin();i!=toWorkOn.end();i++) {
+ for (std::vector<SPItem*> ::const_iterator i = toWorkOn.begin();i!=toWorkOn.end();i++) {
sp_object_ref( SP_ITEM(*i), 0 );
}
- for (SelContainer::const_iterator i = toWorkOn.begin();i!=toWorkOn.end();i++) {
+ for (std::vector<SPItem*>::const_iterator i = toWorkOn.begin();i!=toWorkOn.end();i++) {
SPItem *item = SP_ITEM(*i);
item->deleteObject(true);
sp_object_unref(item);
diff --git a/src/ui/tools/gradient-tool.cpp b/src/ui/tools/gradient-tool.cpp
index d1db5fb93..6f7b220ed 100644
--- a/src/ui/tools/gradient-tool.cpp
+++ b/src/ui/tools/gradient-tool.cpp
@@ -504,8 +504,8 @@ bool GradientTool::root_handler(GdkEvent* event) {
// always resets selection to the single object under cursor
sp_gradient_context_add_stop_near_point(this, SP_ITEM(selection->itemList().front()), this->mousepoint_doc, event->button.time);
} else {
- SelContainer items=selection->itemList();
- for (SelContainer::const_iterator i = items.begin();i!=items.end();i++) {
+ std::vector<SPItem*> items=selection->itemList();
+ for (std::vector<SPItem*>::const_iterator i = items.begin();i!=items.end();i++) {
SPItem *item = SP_ITEM(*i);
SPGradientType new_type = (SPGradientType) prefs->getInt("/tools/gradient/newgradient", SP_GRADIENT_TYPE_LINEAR);
Inkscape::PaintTarget fsmode = (prefs->getInt("/tools/gradient/newfillorstroke", 1) != 0) ? Inkscape::FOR_FILL : Inkscape::FOR_STROKE;
@@ -915,8 +915,8 @@ static void sp_gradient_drag(GradientTool &rc, Geom::Point const pt, guint /*sta
} else {
// Starting from empty space:
// Sort items so that the topmost comes last
- SelContainer items(selection->itemList());
- items.sort(sp_item_repr_compare_position_obj);
+ std::vector<SPItem*> items(selection->itemList());
+ sort(items.begin(),items.end(),sp_item_repr_compare_position);
// take topmost
vector = sp_gradient_vector_for_object(document, desktop, SP_ITEM(items.back()), fill_or_stroke);
}
@@ -925,8 +925,8 @@ static void sp_gradient_drag(GradientTool &rc, Geom::Point const pt, guint /*sta
SPCSSAttr *css = sp_repr_css_attr_new();
sp_repr_css_set_property(css, "fill-opacity", "1.0");
- SelContainer itemlist = selection->itemList();
- for (SelContainer::const_iterator i = itemlist.begin();i!=itemlist.end();i++) {
+ std::vector<SPItem*> itemlist = selection->itemList();
+ for (std::vector<SPItem*>::const_iterator i = itemlist.begin();i!=itemlist.end();i++) {
//FIXME: see above
sp_repr_css_change_recursive(SP_OBJECT(*i)->getRepr(), css, "style");
diff --git a/src/ui/tools/lpe-tool.cpp b/src/ui/tools/lpe-tool.cpp
index ce0ad7a9a..290eeef87 100644
--- a/src/ui/tools/lpe-tool.cpp
+++ b/src/ui/tools/lpe-tool.cpp
@@ -407,8 +407,8 @@ lpetool_create_measuring_items(LpeTool *lc, Inkscape::Selection *selection)
SPCanvasGroup *tmpgrp = lc->desktop->getTempGroup();
gchar *arc_length;
double lengthval;
- SelContainer items=selection->itemList();
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ std::vector<SPItem*> items=selection->itemList();
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
if (SP_IS_PATH(*i)) {
path = SP_PATH(*i);
curve = path->getCurve();
diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp
index 8d52210ff..2b44639c8 100644
--- a/src/ui/tools/measure-tool.cpp
+++ b/src/ui/tools/measure-tool.cpp
@@ -441,9 +441,9 @@ bool MeasureTool::root_handler(GdkEvent* event) {
// TODO switch to a different variable name. The single letter 'l' is easy to misread.
//select elements crossed by line segment:
- SelContainer items = desktop->getDocument()->getItemsAtPoints(desktop->dkey, points);
+ std::vector<SPItem*> items = desktop->getDocument()->getItemsAtPoints(desktop->dkey, points);
std::vector<double> intersection_times;
- for (SelContainer::const_iterator i=items.begin();i!=items.end();i++) {
+ for (std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++) {
SPItem *item = static_cast<SPItem*>(*i);
if (SP_IS_SHAPE(item)) {
diff --git a/src/ui/tools/mesh-tool.cpp b/src/ui/tools/mesh-tool.cpp
index 1cc06a5b9..0a34e4855 100644
--- a/src/ui/tools/mesh-tool.cpp
+++ b/src/ui/tools/mesh-tool.cpp
@@ -481,8 +481,8 @@ bool MeshTool::root_handler(GdkEvent* event) {
sp_mesh_context_split_near_point(this, SP_ITEM(selection->itemList().front()), this->mousepoint_doc, event->button.time);
} else {
// Create a new gradient with default coordinates.
- SelContainer items=selection->itemList();
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ std::vector<SPItem*> items=selection->itemList();
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
SPItem *item = SP_ITEM(*i);
SPGradientType new_type = SP_GRADIENT_TYPE_MESH;
Inkscape::PaintTarget fsmode = (prefs->getInt("/tools/gradient/newfillorstroke", 1) != 0) ? Inkscape::FOR_FILL : Inkscape::FOR_STROKE;
@@ -958,8 +958,8 @@ static void sp_mesh_drag(MeshTool &rc, Geom::Point const /*pt*/, guint /*state*/
} else {
// Starting from empty space:
// Sort items so that the topmost comes last
- SelContainer items(selection->itemList());
- items.sort(sp_item_repr_compare_position_obj);
+ std::vector<SPItem*> items(selection->itemList());
+ sort(items.begin(),items.end(),sp_item_repr_compare_position);
// take topmost
vector = sp_gradient_vector_for_object(document, desktop, SP_ITEM(items.back()), fill_or_stroke);
}
@@ -968,8 +968,8 @@ static void sp_mesh_drag(MeshTool &rc, Geom::Point const /*pt*/, guint /*state*/
SPCSSAttr *css = sp_repr_css_attr_new();
sp_repr_css_set_property(css, "fill-opacity", "1.0");
- SelContainer items=selection->itemList();
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ std::vector<SPItem*> items=selection->itemList();
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
//FIXME: see above
sp_repr_css_change_recursive(SP_OBJECT(*i)->getRepr(), css, "style");
diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp
index 46c978c84..6ddb379cc 100644
--- a/src/ui/tools/node-tool.cpp
+++ b/src/ui/tools/node-tool.cpp
@@ -420,8 +420,8 @@ void NodeTool::selection_changed(Inkscape::Selection *sel) {
std::set<ShapeRecord> shapes;
- SelContainer items=sel->itemList();
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ std::vector<SPItem*> items=sel->itemList();
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
SPObject *obj = static_cast<SPObject*>(*i);
if (SP_IS_ITEM(obj)) {
@@ -667,7 +667,7 @@ void NodeTool::select_area(Geom::Rect const &sel, GdkEventButton *event) {
if (this->_multipath->empty()) {
// if multipath is empty, select rubberbanded items rather than nodes
Inkscape::Selection *selection = this->desktop->selection;
- SelContainer items = this->desktop->getDocument()->getItemsInBox(this->desktop->dkey, sel);
+ std::vector<SPItem*> items = this->desktop->getDocument()->getItemsInBox(this->desktop->dkey, sel);
selection->setList(items);
} else {
if (!held_shift(*event)) {
diff --git a/src/ui/tools/select-tool.cpp b/src/ui/tools/select-tool.cpp
index f84170631..25cbf76a4 100644
--- a/src/ui/tools/select-tool.cpp
+++ b/src/ui/tools/select-tool.cpp
@@ -718,7 +718,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (r->is_started() && !within_tolerance) {
// this was a rubberband drag
- SelContainer items;
+ std::vector<SPItem*> items;
if (r->getMode() == RUBBERBAND_MODE_RECT) {
Geom::OptRect const b = r->getRectangle();
diff --git a/src/ui/tools/spray-tool.cpp b/src/ui/tools/spray-tool.cpp
index d339f6d19..ac41f3a34 100644
--- a/src/ui/tools/spray-tool.cpp
+++ b/src/ui/tools/spray-tool.cpp
@@ -436,9 +436,9 @@ static bool sp_spray_recursive(SPDesktop *desktop,
SPItem *unionResult = NULL; // Previous union
int i=1;
- SelContainer items=selection->itemList();
- for(SelContainer::const_iterator it=items.begin();it!=items.end();it++){
- SPItem *item1 = dynamic_cast<SPItem *>(static_cast<SPObject *>(*it));
+ std::vector<SPItem*> items=selection->itemList();
+ for(std::vector<SPItem*>::const_iterator it=items.begin();it!=items.end();it++){
+ SPItem *item1 = *it;
if (i == 1) {
parent_item = item1;
}
@@ -550,15 +550,15 @@ static bool sp_spray_dilate(SprayTool *tc, Geom::Point /*event_p*/, Geom::Point
double move_standard_deviation = get_move_standard_deviation(tc);
{
- SelContainer const items(selection->itemList());
+ std::vector<SPItem*> const items(selection->itemList());
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
SPItem *item = dynamic_cast<SPItem *>(static_cast<SPObject *>(*i));
g_assert(item != NULL);
sp_object_ref(item);
}
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
SPItem *item = dynamic_cast<SPItem *>(static_cast<SPObject *>(*i));
g_assert(item != NULL);
@@ -573,7 +573,7 @@ static bool sp_spray_dilate(SprayTool *tc, Geom::Point /*event_p*/, Geom::Point
}
}
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
SPItem *item = dynamic_cast<SPItem *>(static_cast<SPObject *>(*i));
g_assert(item != NULL);
sp_object_unref(item);
diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp
index a4370256d..48c109688 100644
--- a/src/ui/tools/text-tool.cpp
+++ b/src/ui/tools/text-tool.cpp
@@ -1470,7 +1470,7 @@ int TextTool::_styleQueried(SPStyle *style, int property)
}
sp_text_context_validate_cursor_iterators(this);
- SelContainer styles_list;
+ std::vector<SPItem*> styles_list;
Inkscape::Text::Layout::iterator begin_it, end_it;
if (this->text_sel_start < this->text_sel_end) {
@@ -1496,7 +1496,7 @@ int TextTool::_styleQueried(SPStyle *style, int property)
while (SP_IS_STRING(pos_obj) && pos_obj->parent) {
pos_obj = pos_obj->parent; // SPStrings don't have style
}
- styles_list.push_front(pos_obj);
+ styles_list.insert(styles_list.begin(),(SPItem*)pos_obj);
}
int result = sp_desktop_query_style_from_list (styles_list, style, property);
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp
index cc05f9775..def8080d0 100644
--- a/src/ui/tools/tool-base.cpp
+++ b/src/ui/tools/tool-base.cpp
@@ -1178,8 +1178,8 @@ SPItem *sp_event_context_find_item(SPDesktop *desktop, Geom::Point const &p,
SPItem *
sp_event_context_over_item(SPDesktop *desktop, SPItem *item,
Geom::Point const &p) {
- SelContainer temp;
- temp.push_front(static_cast<SPObject*>(item));
+ std::vector<SPItem*> temp;
+ temp.push_back(item);
SPItem *item_at_point = desktop->getItemFromListAtPointBottom(temp, p);
return item_at_point;
}
diff --git a/src/ui/tools/tweak-tool.cpp b/src/ui/tools/tweak-tool.cpp
index 9342127ce..6f7764506 100644
--- a/src/ui/tools/tweak-tool.cpp
+++ b/src/ui/tools/tweak-tool.cpp
@@ -382,13 +382,13 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P
}
if (dynamic_cast<SPText *>(item) || dynamic_cast<SPFlowtext *>(item)) {
- SelContainer items;
+ std::vector<SPItem*> items;
items.push_back(item);
- SelContainer selected;
- SelContainer to_select;
+ std::vector<SPItem*> selected;
+ std::vector<Inkscape::XML::Node*> to_select;
SPDocument *doc = item->document;
sp_item_list_to_curves (items, selected, to_select);
- SPObject* newObj = doc->getObjectByRepr(dynamic_cast<Inkscape::XML::Node *>(to_select.front()));
+ SPObject* newObj = doc->getObjectByRepr(to_select.back());
item = dynamic_cast<SPItem *>(newObj);
g_assert(item != NULL);
selection->add(item);
@@ -1087,8 +1087,8 @@ sp_tweak_dilate (TweakTool *tc, Geom::Point event_p, Geom::Point p, Geom::Point
double move_force = get_move_force(tc);
double color_force = MIN(sqrt(path_force)/20.0, 1);
- SelContainer items=selection->itemList();
- for(SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ std::vector<SPItem*> items=selection->itemList();
+ for(std::vector<SPItem*>::const_iterator i=items.begin();i!=items.end();i++){
SPItem *item = dynamic_cast<SPItem *>(static_cast<SPObject *>(*i));
if (is_color_mode (tc->mode)) {