]> granicus.if.org Git - graphviz/commitdiff
Combine identical initialization and termination functions, and
authorerg <devnull@localhost>
Sat, 19 Apr 2008 16:00:36 +0000 (16:00 +0000)
committererg <devnull@localhost>
Sat, 19 Apr 2008 16:00:36 +0000 (16:00 +0000)
put into common.

lib/circogen/circularinit.c
lib/common/render.h
lib/common/utils.c

index c1b5487f27769223c25dc4178ef777abcb1bdcb3..b48debe81d8e20845782da65d640afa66e6f7961 100644 (file)
@@ -38,7 +38,7 @@ static void circular_init_node(node_t * n)
 {
     common_init_node(n);
 
-    neato_nodesize(n, GD_flip(n->graph));
+    gv_nodesize(n, GD_flip(n->graph));
     ND_pos(n) = N_NEW(GD_ndim(n->graph), double);
 }
 
@@ -303,34 +303,6 @@ void circo_layout(Agraph_t * g)
     dotneato_postprocess(g);
 }
 
-static void circular_cleanup_node(node_t * n)
-{
-    free(ND_pos(n));
-    if (ND_shape(n))
-       ND_shape(n)->fns->freefn(n);
-    free_label(ND_label(n));
-    memset(&(n->u), 0, sizeof(Agnodeinfo_t));
-}
-
-static void circular_free_splines(edge_t * e)
-{
-    int i;
-    if (ED_spl(e)) {
-       for (i = 0; i < ED_spl(e)->size; i++)
-           free(ED_spl(e)->list[i].list);
-       free(ED_spl(e)->list);
-       free(ED_spl(e));
-    }
-    ED_spl(e) = NULL;
-}
-
-static void circular_cleanup_edge(edge_t * e)
-{
-    circular_free_splines(e);
-    free_label(ED_label(e));
-    memset(&(e->u), 0, sizeof(Agedgeinfo_t));
-}
-
 void circo_cleanup(graph_t * g)
 {
     node_t *n;
@@ -344,9 +316,9 @@ void circo_cleanup(graph_t * g)
 
     for (; n; n = agnxtnode(g, n)) {
        for (e = agfstout(g, n); e; e = agnxtout(g, e)) {
-           circular_cleanup_edge(e);
+           gv_cleanup_edge(e);
        }
-       circular_cleanup_node(n);
+       gv_cleanup_node(n);
     }
     free(GD_neato_nlist(g));
     if (g != g->root) memset(&(g->u), 0, sizeof(Agraphinfo_t));
index b5bb94c8ed17739d4dcb8dbab0b237b5c1cc2ce8..f3d9124ed7f6c16fbf0a41efb1a0eedb6a2d7b38 100644 (file)
@@ -113,6 +113,9 @@ extern "C" {
     extern void global_def(char *,
                           Agsym_t * (*fun) (Agraph_t *, char *, char *));
     extern int gvRenderJobs (GVC_t * gvc, graph_t * g);
+    extern void gv_cleanup_edge(Agedge_t * e);
+    extern void gv_nodesize(Agnode_t * n, boolean flip);
+    extern void gv_cleanup_node(Agnode_t * n);
     extern int initMapData (GVJ_t*, char*, char*, char*, char*, void*);
     extern boolean isPolygon(node_t *);
     extern char *strdup_and_subst_obj(char *str, void *obj);
index 4e7c1c5cc061233a6121c095273ba69686e5b8f5..70116efecf9d6ea0f7e760e4e6cd1f11c8d2decc 100644 (file)
@@ -1747,3 +1747,41 @@ int strncasecmp(const char *s1, const char *s2, unsigned int n)
 }
 
 #endif                         /* HAVE_STRNCASECMP */
+
+static void gv_free_splines(edge_t * e)
+{
+    int i;
+    if (ED_spl(e)) {
+        for (i = 0; i < ED_spl(e)->size; i++)
+            free(ED_spl(e)->list[i].list);
+        free(ED_spl(e)->list);
+        free(ED_spl(e));
+    }
+    ED_spl(e) = NULL;
+}
+
+void gv_cleanup_edge(edge_t * e)
+{
+    gv_free_splines(e);
+    free_label(ED_label(e));
+    memset(&(e->u), 0, sizeof(Agedgeinfo_t));
+}
+
+void gv_cleanup_node(node_t * n)
+{
+    if (ND_pos(n)) free(ND_pos(n));
+    if (ND_shape(n))
+        ND_shape(n)->fns->freefn(n);
+    free_label(ND_label(n));
+    memset(&(n->u), 0, sizeof(Agnodeinfo_t));
+}
+
+void gv_nodesize(node_t * n, boolean flip)
+{
+    int w;
+
+    w = ND_xsize(n) = POINTS(ND_width(n));
+    ND_lw_i(n) = ND_rw_i(n) = w / 2;
+    ND_ht_i(n) = ND_ysize(n) = POINTS(ND_height(n));
+}
+