/* Compute a layout using layout engine from command line args */
extern int gvLayoutJobs(GVC_t *gvc, graph_t *g);
+/* Render layout into string attributes of the graph */
+extern void attach_attrs(graph_t *g);
+
/* Render layout in a specified format to an open FILE */
extern int gvRender(GVC_t *gvc, graph_t *g, char *format, FILE *out);
--- /dev/null
+#!/usr/bin/python
+
+# use layout positioning from within script
+
+import sys
+sys.path.append('/usr/lib/graphviz/python')
+import gv
+
+# create a new empty graph
+G = gv.digraph("G")
+
+# define a simple graph ( A->B )
+gv.edge(gv.node(G, "A"),gv.node(G, "B"))
+
+# compute a directed graph layout
+gv.layout(G, 'dot')
+
+# annotate the graph with the layout information
+gv.render(G)
+
+# do something with the layout
+n = gv.firstnode(G)
+while gv.ok(n) :
+ print "node " + gv.nameof(n) + " is at " + gv.getv(n,"pos")
+ n = gv.nextnode(G,n)
err = gvLayout(gvc, g, engine);
}
+// annotate the graph with layout information
+void render(Agraph_t *g)
+{
+ attach_attrs(g);
+}
+
+// render to a filename
void render(Agraph_t *g, char *format, char *filename)
{
int err;
err = gvRenderFilename(gvc, g, format, filename);
-
}
+
+// render to stdout
void render(Agraph_t *g, char *format)
{
int err;
err = gvRender(gvc, g, format, stdout);
}
+
+// render to a FILE
void render(Agraph_t *g, char *format, FILE *f)
{
int err;
err = gvRender(gvc, g, format, f);
}
+
+// FIXME - render to a caller provided memory blob
void render(Agraph_t *g, char *format, void **data)
{
// FIXME
extern void layout(Agraph_t *g, char *engine);
/** Render */
-/*** Render a graph in a specific format */
+/*** Render a layout into attributes of the graph */
+extern void render(Agraph_t *g);
+
+/*** Render a layout in a specific format */
extern void render(Agraph_t *g, char *format);
extern void render(Agraph_t *g, char *format, char *filename);
extern void render(Agraph_t *g, char *format, FILE *f);