From bf26c1cb6feedab295da4823ef571a7e66fc36ed Mon Sep 17 00:00:00 2001 From: mjwybrow Date: Fri, 10 Feb 2006 04:23:35 +0000 Subject: * src/sp-conn-end-pair.cpp, src/sp-conn-end-pair.h, src/conn-avoid-ref.cpp, src/conn-avoid-ref.h, src/libavoid/connector.cpp, src/libavoid/connector.h, src/libavoid/visibility.cpp: Add some code to allow querying of items and connectors to find out what is attached to them. This will allow graph layout algorithms (currently being work on by Tim Dwyer) to determine a graph structure from the diagram. (bzr r107) --- src/conn-avoid-ref.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/conn-avoid-ref.cpp') diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index 657560902..8fbdfb673 100644 --- a/src/conn-avoid-ref.cpp +++ b/src/conn-avoid-ref.cpp @@ -16,6 +16,7 @@ #include "libnr/nr-rect-ops.h" #include "libavoid/polyutil.h" #include "libavoid/incremental.h" +#include "libavoid/connector.h" #include "xml/simple-node.cpp" #include "document.h" #include "prefs-utils.h" @@ -108,6 +109,25 @@ void SPAvoidRef::handleSettingChange(void) } +GSList *SPAvoidRef::getAttachedConnectors(const unsigned int type) +{ + GSList *list = NULL; + + Avoid::IntList conns; + GQuark shapeId = g_quark_from_string(item->id); + Avoid::attachedToShape(conns, shapeId, type); + + Avoid::IntList::iterator finish = conns.end(); + for (Avoid::IntList::iterator i = conns.begin(); i != finish; ++i) { + const gchar *connId = g_quark_to_string(*i); + SPItem *item = SP_ITEM(item->document->getObjectById(connId)); + g_assert(item != NULL); + list = g_slist_prepend(list, item); + } + return list; +} + + static Avoid::Polygn avoid_item_poly(SPItem const *item) { SPDesktop *desktop = inkscape_active_desktop(); -- cgit v1.2.3