int main(int argc, char **argv) { graph_t *prev = NULL; int r, rc = 0; Gvc = gvContextPlugins(lt_preloaded_symbols, DEMAND_LOADING); GvExitOnUsage = 1; gvParseArgs(Gvc, argc, argv); #ifndef _WIN32 signal(SIGUSR1, gvToggle); signal(SIGINT, intr); #ifndef NO_FPERR signal(SIGFPE, fperr); #endif #endif if (MemTest) { while (MemTest--) { /* Create a test graph */ G = create_test_graph(); /* Perform layout and cleanup */ gvLayoutJobs(Gvc, G); /* take layout engine from command line */ gvFreeLayout(Gvc, G); agclose (G); } } else if ((G = gvPluginsGraph(Gvc))) { gvLayoutJobs(Gvc, G); /* take layout engine from command line */ gvRenderJobs(Gvc, G); } else { while ((G = gvNextInputGraph(Gvc))) { if (prev) { gvFreeLayout(Gvc, prev); agclose(prev); } gvLayoutJobs(Gvc, G); /* take layout engine from command line */ gvRenderJobs(Gvc, G); gvFinalize(Gvc); r = agreseterrors(); rc = MAX(rc,r); prev = G; } } r = gvFreeContext(Gvc); return (MAX(rc,r)); }
__attribute__((used)) char* vizRenderFromString(char *string, char *format) { GVC_t *context = gvContext(); gvAddLibrary(context, &gvplugin_core_LTX_library); gvAddLibrary(context, &gvplugin_dot_layout_LTX_library); Agraph_t *graph = agmemread(string); gvLayout(context, graph, "dot"); char *result; unsigned int length; gvRenderData(context, graph, format, &result, &length); gvFreeLayout(context, graph); agclose(graph); gvFinalize(context); gvFreeContext(context); return result; }