]> granicus.if.org Git - graphviz/commitdiff
return errors from node_distinct_coloring via the return value, rather than flag
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 20 Jun 2021 18:47:58 +0000 (11:47 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 26 Jun 2021 21:27:36 +0000 (14:27 -0700)
This makes things simpler for readers, callers, as well as the compiler.

cmd/gvmap/make_map.c
lib/edgepaint/edge_distinct_coloring.c
lib/edgepaint/node_distinct_coloring.c
lib/edgepaint/node_distinct_coloring.h

index f7f5b98bfcc0acc7100ef9eb30b73f3ea037f94f..3a8626fec38b61e00ce43aaea54aa6dcb63c7fa4 100644 (file)
@@ -53,7 +53,6 @@ void map_palette_optimal_coloring(char *color_scheme, char *lightness, SparseMat
     color_diff_sum: the sum of min color dfference across all nodes
   */
   real *colors = NULL, color_diff, color_diff_sum;
-  int flag;
   int n = A0->m, i, cdim;
 
   SparseMatrix A;
@@ -70,7 +69,7 @@ void map_palette_optimal_coloring(char *color_scheme, char *lightness, SparseMat
     SparseMatrix_export(stdout, A);
   }
 
-  node_distinct_coloring(color_scheme, lightness, weightedQ, A, accuracy, iter_max, seed, &cdim, &colors, &color_diff, &color_diff_sum, &flag);
+  node_distinct_coloring(color_scheme, lightness, weightedQ, A, accuracy, iter_max, seed, &cdim, &colors, &color_diff, &color_diff_sum);
 
   if (A != A0){
     SparseMatrix_delete(A);
index 28062c748caf67ce10ce4f03c1051003dc99ac43..bc9ff453aae476bc14809888b3090dc870abbb9b 100644 (file)
@@ -239,7 +239,7 @@ Agraph_t* edge_distinct_coloring(char *color_scheme, char *lightness, Agraph_t*
 #endif
     int weightedQ = FALSE;
     int iter_max = 100;
-    node_distinct_coloring(color_scheme, lightness, weightedQ, C, accuracy, iter_max, seed, &cdim, &colors, &color_diff, &color_diff_sum, &flag);
+    flag = node_distinct_coloring(color_scheme, lightness, weightedQ, C, accuracy, iter_max, seed, &cdim, &colors, &color_diff, &color_diff_sum);
     if (flag) goto RETURN;
 #ifdef TIME
     fprintf(stderr, "cpu for color assignmment =%10.3f\n", ((real) (clock() - start))/CLOCKS_PER_SEC);
index 61e210d105d2c1735dd61f42145bb5b2ce68f1b3..14a8d896edbda81a70a21960a85f992a1acaa415 100644 (file)
@@ -206,8 +206,8 @@ static void node_distinct_coloring_internal(int scheme, QuadTree qt, int weighte
  
 }
 
-void node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ, SparseMatrix A0, real accuracy, int iter_max, int seed, int *cdim0, real **colors, real *color_diff0,
-                           real *color_diff_sum0, int *flag){
+int node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ, SparseMatrix A0, real accuracy, int iter_max, int seed, int *cdim0, real **colors, real *color_diff0,
+                           real *color_diff_sum0){
   /* 
      for a graph A, get a distinctive color of its nodes so that the color distance among all neighboring nodes are maximized. Here
      color distance on a node is defined as the minimum of color differences between a node and its neighbors (or the minimum of weighted color differences if weightedQ = true,
@@ -250,8 +250,7 @@ void node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ,
     qt = lab_gamut_quadtree(lightness, max_qtree_level);
     if (!qt){
       fprintf(stderr, "out of memory\n");
-      *flag = -1;
-      return;
+      return -1;
     }
   } else if (strcmp(color_scheme, "rgb") == 0){
     if (Verbose) fprintf(stderr,"rgb\n");
@@ -267,19 +266,16 @@ void node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ,
     qt = QuadTree_new_from_point_list(cdim, maxcolors, max_qtree_level, colors, NULL);
     assert(qt);
   } else {
-    *flag = ERROR_BAD_COLOR_SCHEME;
-    return;
+    return ERROR_BAD_COLOR_SCHEME;
   }
 
 
   *color_diff0 = *color_diff_sum0 = -1;
   if (accuracy <= 0) accuracy = 0.0001;
 
-  *flag = 0;
   n = A->m;
   if (n != A->n) {
-    *flag = -1;
-    return;
+    return -1;
   }
  
   if (!(*colors)) {
@@ -316,4 +312,5 @@ void node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ,
   *color_diff_sum0 /= nnodes;
 
   if (A != A0) SparseMatrix_delete(A);
+  return 0;
 }
index 7a5dc69137916f225efa023407b902cb0d491265..a371584b20525e38dddf171d163632c59807143e 100644 (file)
@@ -13,6 +13,6 @@
 
 enum {COLOR_RGB, COLOR_GRAY, COLOR_LAB};
 enum {ERROR_BAD_COLOR_SCHEME = -9};
-void node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ, SparseMatrix A, real accuracy, int iter_max, int seed, int *cdim, real **colors, real *color_diff, real *color_diff_sum, int *flag);
+int node_distinct_coloring(char *color_scheme, char *lightness, int weightedQ, SparseMatrix A, real accuracy, int iter_max, int seed, int *cdim, real **colors, real *color_diff, real *color_diff_sum);
 
 #endif