Code

dumps the graph to cout in dot format
[inkscape.git] / src / conn-avoid-ref.cpp
index 6575609022ba557f48479756250e90ed29b299af..d832a34b4b81491a31d3c9ea234cf1cbc3868090 100644 (file)
@@ -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,54 @@ void SPAvoidRef::handleSettingChange(void)
 }
 
 
+GSList *SPAvoidRef::getAttachedShapes(const unsigned int type)
+{
+    GSList *list = NULL;
+
+    Avoid::IntList shapes;
+    GQuark shapeId = g_quark_from_string(item->id);
+    Avoid::attachedShapes(shapes, shapeId, type);
+    
+    Avoid::IntList::iterator finish = shapes.end();
+    for (Avoid::IntList::iterator i = shapes.begin(); i != finish; ++i) {
+        const gchar *connId = g_quark_to_string(*i);
+        SPObject *obj = item->document->getObjectById(connId);
+        if (obj == NULL) {
+            g_warning("getAttachedShapes: Object with id=\"%s\" is not "
+                    "found. Skipping.", connId);
+            continue;
+        }
+        SPItem *shapeItem = SP_ITEM(obj);
+        list = g_slist_prepend(list, shapeItem);
+    }
+    return list;
+}
+
+
+GSList *SPAvoidRef::getAttachedConnectors(const unsigned int type)
+{
+    GSList *list = NULL;
+
+    Avoid::IntList conns;
+    GQuark shapeId = g_quark_from_string(item->id);
+    Avoid::attachedConns(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);
+        SPObject *obj = item->document->getObjectById(connId);
+        if (obj == NULL) {
+            g_warning("getAttachedConnectors: Object with id=\"%s\" is not "
+                    "found. Skipping.", connId);
+            continue;
+        }
+        SPItem *connItem = SP_ITEM(obj);
+        list = g_slist_prepend(list, connItem);
+    }
+    return list;
+}
+
+
 static Avoid::Polygn avoid_item_poly(SPItem const *item)
 {
     SPDesktop *desktop = inkscape_active_desktop();