summaryrefslogtreecommitdiffstats
path: root/src/conn-avoid-ref.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/conn-avoid-ref.cpp')
-rw-r--r--src/conn-avoid-ref.cpp32
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);
}