7 #include <graphviz/gvc.h> 9 #include <graphviz/cgraph.h> 11 #include <graphviz/graph.h> 19 if (net == NULL || graph_name == NULL)
return NULL;
22 Agraph_t *layers[net->
size];
23 Agnode_t **nodes[net->
size];
26 g = agopen(graph_name, Agdirected, NULL);
29 g = agopen(graph_name, AGDIGRAPH);
32 if (g == NULL)
return NULL;
34 agsafeset(g,
"charset",
"UTF-8",
"");
35 agsafeset(g,
"rankdir",
"LR",
"");
36 agsafeset(g,
"center",
"true",
"");
37 agsafeset(g,
"ranksep",
"5",
"");
39 for (
size_t l = 0; l < net->
size; ++l)
43 layers[l] = agsubg(g, lbuff, 1);
44 agsafeset(layers[l],
"style",
"filled",
"");
45 agsafeset(layers[l],
"bgcolor",
"black",
"");
46 agsafeset(layers[l],
"label", lbuff,
"");
48 nodes[l] = malloc(
sizeof(Agnode_t*) * net->
layers[l]->
size);
49 for (
size_t n = 0; n < net->
layers[l]->
size; ++n)
52 sprintf(buff,
"L%ld_%ld", net->
layers[l]->
index, n);
54 nodes[l][n] = agnode(layers[l], buff, 1);
56 nodes[l][n] = agnode(layers[l], buff);
58 agsafeset(nodes[l][n],
"shape",
"circle",
"");
62 for (
size_t l = 0; l < net->
size; ++l)
67 if (link != NULL && net->
layers[l] == link->
from)
84 for (
size_t l = 0; l < net->
size; ++l)
92 if (net == NULL || fout == NULL || graph_name == NULL)
return -1;
95 if (g == NULL)
return -1;
97 FILE *f = fopen(fout,
"w+");
112 if (net == NULL || graph_name == NULL || format == NULL || fout == NULL)
return -1;
115 if (g == NULL)
return -1;
119 if (gvc == NULL) { agclose(g);
return -1;}
120 gvLayout(gvc, g,
"dot");
122 gvRender (gvc, g, format, fout);
124 gvFreeLayout(gvc, g);
134 if (net == NULL || graph_name == NULL || format == NULL || fout == NULL)
return -1;
137 if (g == NULL)
return -1;
141 if (gvc == NULL) { agclose(g);
return -1; }
142 gvLayout(gvc, g,
"dot");
144 gvRenderFilename (gvc, g, format, fout);
146 gvFreeLayout(gvc, g);
struct PCFNN_LAYER ** layers
Structure to represent a link between to PCFNN_LAYER.
struct PCFNN_LAYER_LINK ** links
Agraph_t * PCFNN_GRAPH_create_graph(struct PCFNN_NETWORK *net, char *graph_name)
Generate a graph (with graphviz) from the given PCFNN_NETWORK.
int PCFNN_GRAPH_render_graph_to_file(struct PCFNN_NETWORK *net, char *graph_name, char *format, char *fout)
Generate a graph (with graphviz) from the given PCFNN_NETWORK and render it to the given path fout wi...
int PCFNN_GRAPH_render_graph_to_stream(struct PCFNN_NETWORK *net, char *graph_name, char *format, FILE *fout)
Generate a graph (with graphviz) from the given PCFNN_NETWORK and render it to the given stream fout ...
int PCFNN_GRAPH_create_graph_to_dot_file(struct PCFNN_NETWORK *net, char *graph_name, char *fout)
Generate a graph (with graphviz) from the given PCFNN_NETWORK and write it to fout with the dot file ...
struct PCFNN_LAYER * from