Ejemplo n.º 1
0
/* Render layout in a specified format to an external context */
int gvRenderContext(GVC_t *gvc, graph_t *g, const char *format, void *context)
{
    int rc;
    GVJ_t *job;
	
    g = g->root;
	
    /* create a job for the required format */
    rc = gvjobs_output_langname(gvc, format);
    job = gvc->job;
    if (rc == NO_SUPPORT) {
		agerr(AGERR, "Format: \"%s\" not recognized. Use one of:%s\n",
			  format, gvplugin_list(gvc, API_device, format));
		return -1;
    }
	
    job->output_lang = gvrender_select(job, job->output_langname);
    if (!LAYOUT_DONE(g) && !(job->flags & LAYOUT_NOT_REQUIRED)) {
	agerrorf( "Layout was not done\n");
		return -1;
    }
	
    job->context = context;
    job->external_context = TRUE;
	
    rc = gvRenderJobs(gvc, g);
    gvrender_end_job(job);
    gvdevice_finalize(job);
    gvjobs_delete(gvc);
	
    return rc;
}
Ejemplo n.º 2
0
/* Render layout in a specified format to an open FILE */
int gvRenderFilename(GVC_t *gvc, graph_t *g, const char *format, const char *filename)
{
    int rc;
    GVJ_t *job;

    g = g->root;

    /* create a job for the required format */
    rc = gvjobs_output_langname(gvc, format);
    job = gvc->job;
    if (rc == NO_SUPPORT) {
        agerr(AGERR, "Format: \"%s\" not recognized. Use one of:%s\n",
              format, gvplugin_list(gvc, API_device, format));
        return -1;
    }

    job->output_lang = gvrender_select(job, job->output_langname);
    if (!GD_drawing(g) && !(job->flags & LAYOUT_NOT_REQUIRED)) {
        fprintf(stderr, "Layout was not done\n");
        return -1;
    }
    gvjobs_output_filename(gvc, filename);
    gvRenderJobs(gvc, g);
    gvrender_end_job(job);
    gvdevice_finalize(job);
    gvjobs_delete(gvc);

    return 0;
}
Ejemplo n.º 3
0
int gvFreeContext(GVC_t * gvc)
{
    if (gvc->active_jobs)
	gvdevice_finalize(gvc);
    emit_jobs_eof(gvc);
    gvrender_delete_jobs(gvc);
    if (gvc->config_path)
	free(gvc->config_path);
    free(gvc);
    return (graphviz_errors + agerrors());
}