Ejemplo n.º 1
0
Archivo: viz.c Proyecto: sanbor/viz.js
__attribute__((used)) char* vizRenderFromString(const char *string, const char *format, const char *engine) {

  Agraph_t *graph;
  char *result;
  unsigned int length;
  
  if (context == NULL) {
    context = gvContext();
    gvAddLibrary(context, &gvplugin_core_LTX_library);
    gvAddLibrary(context, &gvplugin_dot_layout_LTX_library);
    gvAddLibrary(context, &gvplugin_neato_layout_LTX_library);
  }
  
  graph = agmemread((char *) string);
  
  gvLayout(context, graph, engine);
  
  gvRenderData(context, graph, format, &result, &length);

  gvFreeLayout(context, graph);
  
  agclose(graph);

  return result;
  
}
Ejemplo n.º 2
0
// render to a malloc'ed data string, to be free'd by caller.
char* renderdata(Agraph_t *g, const char *format)
{
    int err;
    char *data;
    unsigned int length;

    if (!g)
	return NULL;
    err = gvRenderData(gvc, g, format, &data, &length);
    if (err)
	return NULL;
    data = (char*)realloc(data, length + 1);
    return data;
}
Ejemplo n.º 3
0
Archivo: vng.cpp Proyecto: hunanhd/vns
static bool GenDrawFormatFile(Digraph& dg, VNG_Param& param, const string& fmt, char** result, unsigned int* length)
{
    GVC_t* gvc = gvContext();

    //创建图
    Agraph_t* g = CreateGraph(dg, param);
    gvLayout(gvc,g,"dot");

    //写入到缓存数组中
    gvRenderData(gvc,g,fmt.c_str(), result, length);
    //gvFreeRenderData(result);

    gvFreeLayout(gvc,g);
    agclose(g);

    // gvfreecontext函数返回错误个数
    // 错误数为0表示没有问题
    return (gvFreeContext(gvc) == 0);
}
Ejemplo n.º 4
0
GraphVizUtils::VerticesCoordinates GraphVizUtils::getVerticesCoordinates(
		GraphIF * graph, GraphVizEngine layoutEngine,
		GraphDimmention graphMaxWidth, GraphDimmention graphMaxHeight) {
	GVC_t *gvc { };
	Agraph_t *g { };
	std::string dotFormatedGraph { };
	char * graphRenderedData { };
	unsigned int length { };
	VerticesCoordinates verticesCoordinates { };

	std::stringstream ss { };

	gvc = gvContext();

	dotFormatedGraph = OutputUtils::impl::DOT::exportGraph(graph);
	g = agmemread(dotFormatedGraph.c_str());

	gvLayout(gvc, g, EnumUtils::getGraphVizEngineString(layoutEngine));
	gvRenderData(gvc, g, "plain", &graphRenderedData, &length);

	ss << graphRenderedData;

	switch (layoutEngine) {
	case GraphVizEngine::DOT:
		break;
	case GraphVizEngine::NEATO:
		verticesCoordinates =
				GraphVizUtils::impl::getVerticesCoordinatesAsNeato(ss,
						graph->getNumberOfVertices(), graphMaxWidth,
						graphMaxHeight);
		break;
	default:
		break;
	}

	gvFreeRenderData(graphRenderedData);
	gvFreeLayout(gvc, g);
	agclose(g);
	gvFreeContext(gvc);

	return verticesCoordinates;
}
Ejemplo n.º 5
0
__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;
}