package maps.gml.view; import maps.gml.GMLEdge; import rescuecore2.misc.gui.ScreenTransform; import java.awt.Graphics2D; import java.awt.Color; import java.awt.Stroke; import java.awt.BasicStroke; /** An EdgeDecorator that draws a line for each edge. */ public class LineEdgeDecorator implements EdgeDecorator { private static final Stroke PASSABLE_STROKE = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); private static final Stroke IMPASSABLE_STROKE = new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); private Color colour; /** Construct a LineEdgeDecorator. @param colour The colour to draw the line. */ public LineEdgeDecorator(Color colour) { this.colour = colour; } @Override public void decorate(GMLEdge edge, Graphics2D g, ScreenTransform transform) { int x1 = transform.xToScreen(edge.getStart().getX()); int y1 = transform.yToScreen(edge.getStart().getY()); int x2 = transform.xToScreen(edge.getEnd().getX()); int y2 = transform.yToScreen(edge.getEnd().getY()); g.setColor(colour); g.setStroke(edge.isPassable() ? PASSABLE_STROKE : IMPASSABLE_STROKE); g.drawLine(x1, y1, x2, y2); } }