diff options
Diffstat (limited to 'src/conn-avoid-ref.cpp')
| -rw-r--r-- | src/conn-avoid-ref.cpp | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index ec9aba793..9190fe633 100644 --- a/src/conn-avoid-ref.cpp +++ b/src/conn-avoid-ref.cpp @@ -139,9 +139,9 @@ void SPAvoidRef::handleSettingChange(void) } -GSList *SPAvoidRef::getAttachedShapes(const unsigned int type) +std::vector<SPItem *> SPAvoidRef::getAttachedShapes(const unsigned int type) { - GSList *list = NULL; + std::vector<SPItem *> list; Avoid::IntList shapes; GQuark shapeId = g_quark_from_string(item->getId()); @@ -157,15 +157,15 @@ GSList *SPAvoidRef::getAttachedShapes(const unsigned int type) continue; } SPItem *shapeItem = SP_ITEM(obj); - list = g_slist_prepend(list, shapeItem); + list.push_back(shapeItem); } return list; } -GSList *SPAvoidRef::getAttachedConnectors(const unsigned int type) +std::vector<SPItem *> SPAvoidRef::getAttachedConnectors(const unsigned int type) { - GSList *list = NULL; + std::vector<SPItem *> list; Avoid::IntList conns; GQuark shapeId = g_quark_from_string(item->getId()); @@ -181,7 +181,7 @@ GSList *SPAvoidRef::getAttachedConnectors(const unsigned int type) continue; } SPItem *connItem = SP_ITEM(obj); - list = g_slist_prepend(list, connItem); + list.push_back(connItem); } return list; } @@ -253,7 +253,7 @@ static std::vector<Geom::Point> approxItemWithPoints(SPItem const *item, const G SPGroup* group = SP_GROUP(item); // consider all first-order children std::vector<SPItem*> itemlist = sp_item_group_item_list(group); - for (std::vector<SPItem*>::const_iterator i = itemlist.begin(); i != itemlist.end(); i++) { + for (std::vector<SPItem*>::const_iterator i = itemlist.begin(); i != itemlist.end(); ++i) { SPItem* child_item = *i; std::vector<Geom::Point> child_points = approxItemWithPoints(child_item, item_transform * child_item->transform); poly_points.insert(poly_points.end(), child_points.begin(), child_points.end()); @@ -296,14 +296,14 @@ static Avoid::Polygon avoid_item_poly(SPItem const *item) Geom::Line hull_edge(hull[-1], hull[0]); Geom::Line prev_parallel_hull_edge; prev_parallel_hull_edge.setOrigin(hull_edge.origin()+hull_edge.versor().ccw()*spacing); - prev_parallel_hull_edge.setVersor(hull_edge.versor()); + prev_parallel_hull_edge.setVector(hull_edge.versor()); int hull_size = hull.size(); for (int i = 0; i < hull_size; ++i) { hull_edge.setPoints(hull[i], hull[i+1]); Geom::Line parallel_hull_edge; parallel_hull_edge.setOrigin(hull_edge.origin()+hull_edge.versor().ccw()*spacing); - parallel_hull_edge.setVersor(hull_edge.versor()); + parallel_hull_edge.setVector(hull_edge.versor()); // determine the intersection point try { @@ -331,7 +331,7 @@ static Avoid::Polygon avoid_item_poly(SPItem const *item) } -GSList *get_avoided_items(GSList *list, SPObject *from, SPDesktop *desktop, +std::vector<SPItem *> get_avoided_items(std::vector<SPItem *> &list, SPObject *from, SPDesktop *desktop, bool initialised) { for (SPObject *child = from->firstChild() ; child != NULL; child = child->next ) { @@ -342,7 +342,7 @@ GSList *get_avoided_items(GSList *list, SPObject *from, SPDesktop *desktop, (!initialised || SP_ITEM(child)->avoidRef->shapeRef) ) { - list = g_slist_prepend (list, SP_ITEM(child)); + list.push_back(SP_ITEM(child)); } if (SP_IS_ITEM(child) && desktop->isLayer(SP_ITEM(child))) { @@ -376,17 +376,15 @@ void init_avoided_shape_geometry(SPDesktop *desktop) DocumentUndo::setUndoSensitive(document, false); bool initialised = false; - GSList *items = get_avoided_items(NULL, desktop->currentRoot(), desktop, + std::vector<SPItem *> tmp; + std::vector<SPItem *> items = get_avoided_items(tmp, desktop->currentRoot(), desktop, initialised); - for ( GSList const *iter = items ; iter != NULL ; iter = iter->next ) { - SPItem *item = reinterpret_cast<SPItem *>(iter->data); + for (std::vector<SPItem *>::const_iterator iter = items.begin(); iter != items.end(); ++iter) { + SPItem *item = *iter; item->avoidRef->handleSettingChange(); } - if (items) { - g_slist_free(items); - } DocumentUndo::setUndoSensitive(document, saved); } |
