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, |