]> granicus.if.org Git - graphviz/commitdiff
Handle invisible nodes in emit_node. Otherwise, style=invis has to
authorerg <devnull@localhost>
Mon, 6 Apr 2009 16:41:31 +0000 (16:41 +0000)
committererg <devnull@localhost>
Mon, 6 Apr 2009 16:41:31 +0000 (16:41 +0000)
go into the HTML label code, plus gvrender_usershape so that images
in invisible nodes aren't drawn.
The only changes in semantics is that we no longer emit map data for
invisible nodes. If someone can make a case that invisible nodes should
be sensitive, we can go the more complex route.

lib/common/emit.c

index 72b3c31f98ef6538d789dc900fc4aca395b61f60..6e7fdb73ce3523218bac875d9e0181b0d1414749 100644 (file)
@@ -1213,6 +1213,10 @@ static void emit_node(GVJ_t * job, node_t * n)
 {
     GVC_t *gvc = job->gvc;
     char *s;
+    char *style;
+    char **styles = 0;
+    char **sp;
+    char *p;
 
     if (ND_shape(n)                                 /* node has a shape */
            && node_in_layer(job, agraphof(n), n)    /* and is in layer */
@@ -1226,6 +1230,15 @@ static void emit_node(GVJ_t * job, node_t * n)
        if (s[0])
            gvrender_comment(job, s);
         
+       style = late_string(n, N_style, "");
+       if (style[0]) {
+           styles = parse_style(style);
+           sp = styles;
+           while ((p = *sp++)) {
+               if (streq(p, "invis")) return;
+           }
+       }
+
        emit_begin_node(job, n);
        ND_shape(n)->fns->codefn(job, n);
        emit_end_node(job);