static void svg_begin_layer(GVJ_t * job, char *layername, int layerNum,
int numLayers)
{
+ obj_state_t *obj = job->obj;
+ char *str;
+
gvputs(job, "<g id=\"");
gvputs(job, xml_string(layername));
- gvputs(job, "\" class=\"layer\">\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)
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, "<g id=\"");
gvputs(job, xml_string(obj->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 */
static void svg_begin_cluster(GVJ_t * job)
{
obj_state_t *obj = job->obj;
+ char *str;
gvputs(job, "<g id=\"");
gvputs(job, xml_string(obj->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, "<title>");
gvputs(job, xml_string(agnameof(obj->u.g)));
gvputs(job, "</title>\n");
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\">");
+ gvputs(job, "\" class=\"node");
+ if ((str = agget(obj->u.n, "class"))) {
+ gvputs(job, " ");
+ gvputs(job, xml_string(str));
+ }
+ gvputs(job, "\">\n");
gvputs(job, "<title>");
gvputs(job, xml_string(agnameof(obj->u.n)));
gvputs(job, "</title>\n");
{
obj_state_t *obj = job->obj;
char *ename;
+ char *str;
gvputs(job, "<g id=\"");
gvputs(job, xml_string(obj->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, "<title>");
ename = strdup_and_subst_obj("\\E", (void *) (obj->u.e));