diff options
| author | Marc Jeanmougin <marc@jeanmougin.fr> | 2015-12-08 21:36:21 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2015-12-08 21:36:21 +0000 |
| commit | 402e0259b8310d25a1f51cc6a4c69f496f73591e (patch) | |
| tree | 9e0947e17ed84f037e20fe3ce733ee09d579e6b7 /src | |
| parent | 0-sized arrays are supposed to be forbidden (diff) | |
| download | inkscape-402e0259b8310d25a1f51cc6a4c69f496f73591e.tar.gz inkscape-402e0259b8310d25a1f51cc6a4c69f496f73591e.zip | |
cppification: GSList replaced by vectors (connectors)
(bzr r14504.1.13)
Diffstat (limited to 'src')
| -rw-r--r-- | src/conn-avoid-ref.cpp | 26 | ||||
| -rw-r--r-- | src/conn-avoid-ref.h | 7 | ||||
| -rw-r--r-- | src/graphlayout.cpp | 9 | ||||
| -rw-r--r-- | src/widgets/connector-toolbar.cpp | 10 |
4 files changed, 22 insertions, 30 deletions
diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index 4c9665fa0..d43d000a7 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; } @@ -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); } diff --git a/src/conn-avoid-ref.h b/src/conn-avoid-ref.h index e9e12118f..2c7da9aae 100644 --- a/src/conn-avoid-ref.h +++ b/src/conn-avoid-ref.h @@ -20,7 +20,6 @@ class SPDesktop; class SPObject; class SPItem; -typedef struct _GSList GSList; namespace Avoid { class ShapeRef; } class SPAvoidRef { @@ -41,8 +40,8 @@ public: // Avoid::runningTo // Avoid::runningFrom // Avoid::runningToAndFrom - GSList *getAttachedShapes(const unsigned int type); - GSList *getAttachedConnectors(const unsigned int type); + std::vector<SPItem *> getAttachedShapes(const unsigned int type); + std::vector<SPItem *> getAttachedConnectors(const unsigned int type); private: SPItem *item; @@ -55,7 +54,7 @@ private: sigc::connection _transformed_connection; }; -extern GSList *get_avoided_items(GSList *list, SPObject *from, +extern std::vector<SPItem *> get_avoided_items(std::vector<SPItem *> &list, SPObject *from, SPDesktop *desktop, bool initialised = true); extern void avoid_item_move(Geom::Affine const *mp, SPItem *moved_item); extern void init_avoided_shape_geometry(SPDesktop *desktop); diff --git a/src/graphlayout.cpp b/src/graphlayout.cpp index 9b67ba0b5..39ffb6cc7 100644 --- a/src/graphlayout.cpp +++ b/src/graphlayout.cpp @@ -106,7 +106,6 @@ void graphlayout(std::vector<SPItem*> const &items) { return; } - using Inkscape::Util::GSListIterator; list<SPItem *> selected; filterConnectors(items,selected); if (selected.empty()) return; @@ -164,10 +163,11 @@ void graphlayout(std::vector<SPItem*> const &items) { continue; } unsigned u=i_iter->second; - GSList *nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom); + std::vector<SPItem *> nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom); list<SPItem *> connectors; - connectors.insert<GSListIterator<SPItem *> >(connectors.end(),nlist,NULL); + connectors.insert(connectors.end(), nlist.begin(), nlist.end()); + for (list<SPItem *>::iterator j(connectors.begin()); j != connectors.end(); ++j) { @@ -203,9 +203,6 @@ void graphlayout(std::vector<SPItem*> const &items) { } } } - if(nlist) { - g_slist_free(nlist); - } } const unsigned E = es.size(); double eweights[E]; diff --git a/src/widgets/connector-toolbar.cpp b/src/widgets/connector-toolbar.cpp index 8cc254bd2..733fb34e8 100644 --- a/src/widgets/connector-toolbar.cpp +++ b/src/widgets/connector-toolbar.cpp @@ -200,17 +200,15 @@ static void connector_spacing_changed(GtkAdjustment *adj, GObject* tbl) desktop->namedview->updateRepr(); bool modmade = false; - GSList *items = get_avoided_items(NULL, desktop->currentRoot(), desktop); - for ( GSList const *iter = items ; iter != NULL ; iter = iter->next ) { - SPItem *item = reinterpret_cast<SPItem *>(iter->data); + std::vector<SPItem *> items; + items = get_avoided_items(items, desktop->currentRoot(), desktop); + for (std::vector<SPItem *>::const_iterator iter = items.begin(); iter != items.end(); ++iter ) { + SPItem *item = *iter; Geom::Affine m = Geom::identity(); avoid_item_move(&m, item); modmade = true; } - if (items) { - g_slist_free(items); - } if(modmade) { DocumentUndo::done(doc, SP_VERB_CONTEXT_CONNECTOR, _("Change connector spacing")); |
