From: Keenan Brock Date: Sun, 26 Apr 2015 22:29:42 +0000 (-0400) Subject: output class value in svg files X-Git-Tag: TRAVIS_CI_BUILD_EXPERIMENTAL~109^2~5^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=be2d19fb48872adffdb40633d9f885de098ec354;p=graphviz output class value in svg files --- diff --git a/plugin/core/gvrender_core_svg.c b/plugin/core/gvrender_core_svg.c index c0cf41174..7325db798 100644 --- a/plugin/core/gvrender_core_svg.c +++ b/plugin/core/gvrender_core_svg.c @@ -208,9 +208,17 @@ static void svg_end_graph(GVJ_t * job) static void svg_begin_layer(GVJ_t * job, char *layername, int layerNum, int numLayers) { + obj_state_t *obj = job->obj; + char *str; + gvputs(job, "\n"); + gvputs(job, "\" class=\"layer"); + if ((str = agget(obj->u.n, "class"))) { + gvputs(job, " "); + gvputs(job, xml_string(str)); + } + gvputs(job, "\">\n"); } static void svg_end_layer(GVJ_t * job) @@ -225,14 +233,19 @@ static void svg_end_layer(GVJ_t * job) static void svg_begin_page(GVJ_t * job) { obj_state_t *obj = job->obj; + char *str; /* its really just a page of the graph, but its still a graph, * and it is the entire graph if we're not currently paging */ gvputs(job, "id)); - gvputs(job, "\" class=\"graph\""); + gvputs(job, "\" class=\"graph"); + if ((str = agget(obj->u.n, "class"))) { + gvputs(job, " "); + gvputs(job, xml_string(str)); + } gvprintf(job, - " transform=\"scale(%g %g) rotate(%d) translate(%g %g)\">\n", + "\" transform=\"scale(%g %g) rotate(%d) translate(%g %g)\">\n", job->scale.x, job->scale.y, -job->rotation, job->translation.x, -job->translation.y); /* default style */ @@ -251,10 +264,16 @@ static void svg_end_page(GVJ_t * job) static void svg_begin_cluster(GVJ_t * job) { obj_state_t *obj = job->obj; + char *str; gvputs(job, "id)); - gvputs(job, "\" class=\"cluster\">"); + gvputs(job, "\" class=\"cluster"); + if ((str = agget(obj->u.n, "class"))) { + gvputs(job, " "); + gvputs(job, xml_string(str)); + } + gvputs(job, "\">\n"); gvputs(job, ""); gvputs(job, xml_string(agnameof(obj->u.g))); gvputs(job, "\n"); @@ -268,12 +287,18 @@ static void svg_end_cluster(GVJ_t * job) static void svg_begin_node(GVJ_t * job) { obj_state_t *obj = job->obj; + char *str; gvputs(job, "id)); if (job->layerNum > 1) gvprintf (job, "_%s", xml_string(job->gvc->layerIDs[job->layerNum])); - gvputs(job, "\" class=\"node\">"); + gvputs(job, "\" class=\"node"); + if ((str = agget(obj->u.n, "class"))) { + gvputs(job, " "); + gvputs(job, xml_string(str)); + } + gvputs(job, "\">\n"); gvputs(job, ""); gvputs(job, xml_string(agnameof(obj->u.n))); gvputs(job, "\n"); @@ -288,10 +313,16 @@ static void svg_begin_edge(GVJ_t * job) { obj_state_t *obj = job->obj; char *ename; + char *str; gvputs(job, "id)); - gvputs(job, "\" class=\"edge\">"); + gvputs(job, "\" class=\"edge"); + if ((str = agget(obj->u.n, "class"))) { + gvputs(job, " "); + gvputs(job, xml_string(str)); + } + gvputs(job, "\">\n"); gvputs(job, ""); ename = strdup_and_subst_obj("\\E", (void *) (obj->u.e));