From: Emden Gansner Date: Fri, 10 Jun 2016 19:25:11 +0000 (-0400) Subject: Factor out common code for handling the class attribute; X-Git-Tag: TRAVIS_CI_BUILD_EXPERIMENTAL~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7fc3667b316377ebeee895a344bb954291310576;p=graphviz Factor out common code for handling the class attribute; add check for empty string value. --- diff --git a/plugin/core/gvrender_core_svg.c b/plugin/core/gvrender_core_svg.c index 7325db798..6e23584bb 100644 --- a/plugin/core/gvrender_core_svg.c +++ b/plugin/core/gvrender_core_svg.c @@ -80,6 +80,17 @@ static void svg_bzptarray(GVJ_t * job, pointf * A, int n) #endif } +static void svg_print_class(GVJ_t * job, char* kind, void* obj) +{ + char* str; + + gvprintf(job, "\" class=\"%s", kind); + if ((str = agget(obj, "class")) && *str) { + gvputs(job, " "); + gvputs(job, xml_string(str)); + } +} + static void svg_print_color(GVJ_t * job, gvcolor_t color) { switch (color.type) { @@ -209,15 +220,10 @@ static void svg_begin_layer(GVJ_t * job, char *layername, int layerNum, int numLayers) { obj_state_t *obj = job->obj; - char *str; gvputs(job, "u.n, "class"))) { - gvputs(job, " "); - gvputs(job, xml_string(str)); - } + svg_print_class(job, "layer", obj->u.g); gvputs(job, "\">\n"); } @@ -233,17 +239,12 @@ 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"); - if ((str = agget(obj->u.n, "class"))) { - gvputs(job, " "); - gvputs(job, xml_string(str)); - } + svg_print_class(job, "graph", obj->u.g); gvprintf(job, "\" transform=\"scale(%g %g) rotate(%d) translate(%g %g)\">\n", job->scale.x, job->scale.y, -job->rotation, @@ -264,15 +265,10 @@ 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"); - if ((str = agget(obj->u.n, "class"))) { - gvputs(job, " "); - gvputs(job, xml_string(str)); - } + svg_print_class(job, "cluster", obj->u.sg); gvputs(job, "\">\n"); gvputs(job, ""); gvputs(job, xml_string(agnameof(obj->u.g))); @@ -287,17 +283,12 @@ 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, "<g id=\""); gvputs(job, xml_string(obj->id)); if (job->layerNum > 1) gvprintf (job, "_%s", xml_string(job->gvc->layerIDs[job->layerNum])); - gvputs(job, "\" class=\"node"); - if ((str = agget(obj->u.n, "class"))) { - gvputs(job, " "); - gvputs(job, xml_string(str)); - } + svg_print_class(job, "node", obj->u.n); gvputs(job, "\">\n"); gvputs(job, "<title>"); gvputs(job, xml_string(agnameof(obj->u.n))); @@ -313,15 +304,10 @@ static void svg_begin_edge(GVJ_t * job) { obj_state_t *obj = job->obj; char *ename; - char *str; gvputs(job, "<g id=\""); gvputs(job, xml_string(obj->id)); - gvputs(job, "\" class=\"edge"); - if ((str = agget(obj->u.n, "class"))) { - gvputs(job, " "); - gvputs(job, xml_string(str)); - } + svg_print_class(job, "edge", obj->u.e); gvputs(job, "\">\n"); gvputs(job, "<title>");