src/Tools/Graphview/shapes.scala
changeset 59241 541b95e94dc7
parent 59240 e411afcfaa29
child 59242 fda4091cc6b0
equal deleted inserted replaced
59240:e411afcfaa29 59241:541b95e94dc7
    14 
    14 
    15 object Shapes
    15 object Shapes
    16 {
    16 {
    17   trait Node
    17   trait Node
    18   {
    18   {
    19     def shape(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Shape
    19     def shape(m: Visualizer.Metrics, visualizer: Visualizer, peer: Option[String]): Shape
    20     def paint(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Unit
    20     def paint(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Unit
    21   }
    21   }
    22 
    22 
    23   object Growing_Node extends Node
    23   object Growing_Node extends Node
    24   {
    24   {
    25     private val stroke =
    25     private val stroke =
    26       new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)
    26       new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)
    27 
    27 
    28     def shape(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Rectangle2D.Double =
    28     def shape(m: Visualizer.Metrics, visualizer: Visualizer, peer: Option[String])
       
    29       : Rectangle2D.Double =
    29     {
    30     {
    30       val (x, y) = visualizer.Coordinates(peer.get)
    31       val (x, y) = visualizer.Coordinates(peer.get)
    31       val m = visualizer.metrics(g)
       
    32       val bounds = m.string_bounds(visualizer.Caption(peer.get))
    32       val bounds = m.string_bounds(visualizer.Caption(peer.get))
    33       val w = bounds.getWidth + m.pad
    33       val w = bounds.getWidth + m.pad
    34       val h = bounds.getHeight + m.pad
    34       val h = bounds.getHeight + m.pad
    35       new Rectangle2D.Double(x - (w / 2), y - (h / 2), w, h)
    35       new Rectangle2D.Double(x - (w / 2), y - (h / 2), w, h)
    36     }
    36     }
    37 
    37 
    38     def paint(g: Graphics2D, visualizer: Visualizer, peer: Option[String])
    38     def paint(g: Graphics2D, visualizer: Visualizer, peer: Option[String])
    39     {
    39     {
    40       val caption = visualizer.Caption(peer.get)
    40       val caption = visualizer.Caption(peer.get)
    41       val m = visualizer.metrics(g)
    41       val m = Visualizer.Metrics(g)
    42       val bounds = m.string_bounds(caption)
    42       val bounds = m.string_bounds(caption)
    43 
    43 
    44       val s = shape(g, visualizer, peer)
    44       val s = shape(m, visualizer, peer)
    45 
    45 
    46       val c = visualizer.node_color(peer)
    46       val c = visualizer.node_color(peer)
    47       g.setStroke(stroke)
    47       g.setStroke(stroke)
    48       g.setColor(c.border)
    48       g.setColor(c.border)
    49       g.draw(s)
    49       g.draw(s)
    58 
    58 
    59   object Dummy extends Node
    59   object Dummy extends Node
    60   {
    60   {
    61     private val stroke =
    61     private val stroke =
    62       new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)
    62       new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)
    63     private val shape = new Rectangle2D.Double(-5, -5, 10, 10)
    63     private val shape = new Rectangle2D.Double(-5, -5, 10, 10)  // FIXME
    64     private val identity = new AffineTransform()
    64     private val identity = new AffineTransform()
    65 
    65 
    66     def shape(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Shape = shape
    66     def shape(m: Visualizer.Metrics, visualizer: Visualizer, peer: Option[String]): Shape = shape
    67 
    67 
    68     def paint(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Unit =
    68     def paint(g: Graphics2D, visualizer: Visualizer, peer: Option[String]): Unit =
    69       paint_transformed(g, visualizer, peer, identity)
    69       paint_transformed(g, visualizer, peer, identity)
    70 
    70 
    71     def paint_transformed(g: Graphics2D, visualizer: Visualizer,
    71     def paint_transformed(g: Graphics2D, visualizer: Visualizer,
   116 
   116 
   117       g.setStroke(stroke)
   117       g.setStroke(stroke)
   118       g.setColor(visualizer.edge_color(peer))
   118       g.setColor(visualizer.edge_color(peer))
   119       g.draw(path)
   119       g.draw(path)
   120 
   120 
   121       if (head) Arrow_Head.paint(g, path, visualizer.Drawer.shape(g, Some(peer._2)))
   121       if (head)
       
   122         Arrow_Head.paint(g, path, visualizer.Drawer.shape(Visualizer.Metrics(g), Some(peer._2)))
   122     }
   123     }
   123   }
   124   }
   124 
   125 
   125   object Cardinal_Spline_Edge extends Edge
   126   object Cardinal_Spline_Edge extends Edge
   126   {
   127   {
   176 
   177 
   177         g.setStroke(stroke)
   178         g.setStroke(stroke)
   178         g.setColor(visualizer.edge_color(peer))
   179         g.setColor(visualizer.edge_color(peer))
   179         g.draw(path)
   180         g.draw(path)
   180 
   181 
   181         if (head) Arrow_Head.paint(g, path, visualizer.Drawer.shape(g, Some(peer._2)))
   182         if (head)
       
   183           Arrow_Head.paint(g, path, visualizer.Drawer.shape(Visualizer.Metrics(g), Some(peer._2)))
   182       }
   184       }
   183     }
   185     }
   184   }
   186   }
   185 
   187 
   186   object Arrow_Head
   188   object Arrow_Head