chiark / gitweb /
segment labelling work-in-progress - yet to do are labels and graph colouring
[trains.git] / layout / redactgraph.c
index 9900e7edeccd82788b7c9ed4488eadc8346435b4..09bc197dfc1fccff9f4e5fb33563304c3dd7250e 100644 (file)
@@ -31,8 +31,6 @@
  * are often useful.
  */
 
-#define _GNU_SOURCE
-
 #include <stdarg.h>
 #include <string.h>
 #include <stdlib.h>
@@ -727,6 +725,38 @@ static void printforforsafety(void) {
   output("end\n");
 }
 
+static void printforlayoutsegjoins(void) {
+  Node *node;
+  EdgeEnd *edgeend;
+  Segment **segmentp, *segment;
+  int side;
+  
+  FOR_ALL_NODES(node) {
+    output("layer ");
+    FOR_BOTH(side)
+      if (!node->sides[side].head) {
+       output("segterminus");
+       goto one_sided;
+      }
+    output("segjoin");
+  one_sided:
+    output("%d\n", (node->layermin + node->layermax)/2);
+
+    output("abs segjoin_%s",node->pname);
+    FOR_NODE_EDGEENDS(side,edgeend, node)
+      output("_%s",edgeend->edge->subseg->segment->segname);
+    output(" %f %f %f\n", node->x,node->y,node->a);
+    FOR_ALL_SEGMENTS(segmentp,segment) segment->u= 0;
+    FOR_NODE_EDGEENDS(side,edgeend, node) {
+      segment= edgeend->edge->subseg->segment;
+      if (segment->u++) continue;
+      output("segend %s\n",segment->segname);
+      output("segcmap %s  0.5 setgray\n",segment->segname);
+    }
+    output("\n");
+  }
+}
+
 /*---------- main program ----------*/
 
 typedef struct {
@@ -738,6 +768,7 @@ static const OpInfo opinfos[]= {
 #define OI(x) { #x, x },
   OI(printforneato)
   OI(printforforsafety)
+  OI(printforlayoutsegjoins)
   OI(consistency)
   OI(movfeatsplitedges)
   OI(movfeatrmstubs)