diff options
| author | mjwybrow <mjwybrow@users.sourceforge.net> | 2006-02-10 04:23:35 +0000 |
|---|---|---|
| committer | mjwybrow <mjwybrow@users.sourceforge.net> | 2006-02-10 04:23:35 +0000 |
| commit | bf26c1cb6feedab295da4823ef571a7e66fc36ed (patch) | |
| tree | 1c99174b02c8a3c84d4f53403d16b3978bd23e3b /src/conn-avoid-ref.cpp | |
| parent | Add unit conversion. (diff) | |
| download | inkscape-bf26c1cb6feedab295da4823ef571a7e66fc36ed.tar.gz inkscape-bf26c1cb6feedab295da4823ef571a7e66fc36ed.zip | |
* 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)
Diffstat (limited to 'src/conn-avoid-ref.cpp')
| -rw-r--r-- | src/conn-avoid-ref.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
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(); |
