src/Tools/Graphview/shapes.scala
changeset 59262 5cd92c743958
parent 59258 d5c9900636ef
child 59290 569a8109eeb2
--- a/src/Tools/Graphview/shapes.scala	Sun Jan 04 16:45:41 2015 +0100
+++ b/src/Tools/Graphview/shapes.scala	Sun Jan 04 21:01:27 2015 +0100
@@ -24,11 +24,11 @@
     def shape(m: Visualizer.Metrics, visualizer: Visualizer, node: Graph_Display.Node)
       : Rectangle2D.Double =
     {
-      val (x, y) = visualizer.Coordinates(node)
+      val p = visualizer.Coordinates.get_node(node)
       val bounds = m.string_bounds(node.toString)
       val w = bounds.getWidth + m.pad
       val h = bounds.getHeight + m.pad
-      new Rectangle2D.Double((x - (w / 2)).floor, (y - (h / 2)).floor, w.ceil, h.ceil)
+      new Rectangle2D.Double((p.x - (w / 2)).floor, (p.y - (h / 2)).floor, w.ceil, h.ceil)
     }
 
     def paint(gfx: Graphics2D, visualizer: Visualizer, node: Graph_Display.Node)
@@ -81,28 +81,23 @@
     def paint(gfx: Graphics2D, visualizer: Visualizer,
       edge: Graph_Display.Edge, head: Boolean, dummies: Boolean)
     {
-      val (fx, fy) = visualizer.Coordinates(edge._1)
-      val (tx, ty) = visualizer.Coordinates(edge._2)
+      val p = visualizer.Coordinates.get_node(edge._1)
+      val q = visualizer.Coordinates.get_node(edge._2)
       val ds =
       {
-        val min = fy min ty
-        val max = fy max ty
-        visualizer.Coordinates(edge).filter({ case (_, y) => min < y && y < max })
+        val a = p.y min q.y
+        val b = p.y max q.y
+        visualizer.Coordinates.get_dummies(edge).filter(d => a < d.y && d.y < b)
       }
       val path = new GeneralPath(Path2D.WIND_EVEN_ODD, ds.length + 2)
 
-      path.moveTo(fx, fy)
-      ds.foreach({ case (x, y) => path.lineTo(x, y) })
-      path.lineTo(tx, ty)
+      path.moveTo(p.x, p.y)
+      ds.foreach(d => path.lineTo(d.x, d.y))
+      path.lineTo(q.x, q.y)
 
-      if (dummies) {
-        ds.foreach({
-            case (x, y) => {
-              val at = AffineTransform.getTranslateInstance(x, y)
-              Dummy.paint_transformed(gfx, visualizer, at)
-            }
-          })
-      }
+      if (dummies)
+        ds.foreach(d =>
+          Dummy.paint_transformed(gfx, visualizer, AffineTransform.getTranslateInstance(d.x, d.y)))
 
       gfx.setStroke(default_stroke)
       gfx.setColor(visualizer.edge_color(edge))
@@ -121,48 +116,45 @@
     def paint(gfx: Graphics2D, visualizer: Visualizer,
       edge: Graph_Display.Edge, head: Boolean, dummies: Boolean)
     {
-      val (fx, fy) = visualizer.Coordinates(edge._1)
-      val (tx, ty) = visualizer.Coordinates(edge._2)
+      val p = visualizer.Coordinates.get_node(edge._1)
+      val q = visualizer.Coordinates.get_node(edge._2)
       val ds =
       {
-        val min = fy min ty
-        val max = fy max ty
-        visualizer.Coordinates(edge).filter({ case (_, y) => min < y && y < max })
+        val a = p.y min q.y
+        val b = p.y max q.y
+        visualizer.Coordinates.get_dummies(edge).filter(d => a < d.y && d.y < b)
       }
 
       if (ds.isEmpty) Straight_Edge.paint(gfx, visualizer, edge, head, dummies)
       else {
         val path = new GeneralPath(Path2D.WIND_EVEN_ODD, ds.length + 2)
-        path.moveTo(fx, fy)
+        path.moveTo(p.x, p.y)
 
-        val coords = ((fx, fy) :: ds ::: List((tx, ty)))
-        val (dx, dy) = (coords(2)._1 - coords(0)._1, coords(2)._2 - coords(0)._2)
+        val coords = p :: ds ::: List(q)
+        val dx = coords(2).x - coords(0).x
+        val dy = coords(2).y - coords(0).y
 
         val (dx2, dy2) =
-          ((dx, dy) /: coords.sliding(3))({
-            case ((dx, dy), List((lx, ly), (mx, my), (rx, ry))) => {
-              val (dx2, dy2) = (rx - lx, ry - ly)
-
-              path.curveTo(lx + slack * dx , ly + slack * dy,
-                           mx - slack * dx2, my - slack * dy2,
-                           mx              , my)
+          ((dx, dy) /: coords.sliding(3)) {
+            case ((dx, dy), List(l, m, r)) =>
+              val dx2 = r.x - l.x
+              val dy2 = r.y - l.y
+              path.curveTo(
+                l.x + slack * dx, l.y + slack * dy,
+                m.x - slack * dx2, m.y - slack * dy2,
+                m.x, m.y)
               (dx2, dy2)
-            }
-          })
+          }
 
-        val (lx, ly) = ds.last
-        path.curveTo(lx + slack * dx2, ly + slack * dy2,
-                     tx - slack * dx2, ty - slack * dy2,
-                     tx              , ty)
+        val l = ds.last
+        path.curveTo(
+          l.x + slack * dx2, l.y + slack * dy2,
+          q.x - slack * dx2, q.y - slack * dy2,
+          q.x, q.y)
 
-        if (dummies) {
-          ds.foreach({
-              case (x, y) => {
-                val at = AffineTransform.getTranslateInstance(x, y)
-                Dummy.paint_transformed(gfx, visualizer, at)
-              }
-            })
-        }
+        if (dummies)
+          ds.foreach(d =>
+            Dummy.paint_transformed(gfx, visualizer, AffineTransform.getTranslateInstance(d.x, d.y)))
 
         gfx.setStroke(default_stroke)
         gfx.setColor(visualizer.edge_color(edge))