9#include <graphviz/gvc.h>
21 desc = strict ? Agstrictdirected : Agdirected;
24 desc = strict ? Agstrictundirected : Agundirected;
28 mGraph = agopen((
char *)name.c_str(), desc, NULL);
43 gvLayout(gvc,
mGraph, layout.c_str());
44 gvRenderData(gvc,
mGraph, format.c_str(), &
data, &len);
48 gvFreeRenderData(
data);
55 auto n =
new Node(
this, name);
64 auto e =
new Edge(
this, name, head, tail);
77 Agraph_t *g = agraphof(
mPtr);
80 char *k = (
char *)key.c_str();
81 char *v = (
char *)value.c_str();
82 char *vd = html ? agstrdup_html(g, v) : agstrdup(g, v);
84 agsafeset(
mPtr, k, vd, d);
Edge(Graph *g, const String &name, Node *head, Node *tail)
void set(const String &key, const String &value, bool html=false)
Edge * addEdge(const String &name, Node *head, Node *tail)
Edge * edge(const String &name)
std::map< String, Edge * > mEdges
Node * node(const String &name)
std::map< String, Node * > mNodes
Node * addNode(const String &name)
Graph(const String &name, Type type, bool strict=false)
void render(std::ostream &os, const String &layout="dot", const String &format="svg")
Node(Graph *g, const String &name)
struct dps_magma_data data