diff options
Diffstat (limited to 'src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java')
-rw-r--r-- | src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java index edd622a..7221d86 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.graph.Airway; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import com.benburwell.planes.gui.aircraftmap.GeoPoint; @@ -14,6 +15,7 @@ import java.util.stream.Collectors; * @author ben */ public class RouteSymbol implements Drawable { + public final int VERTEX_RADIUS = 3; private final Airway airway; public RouteSymbol(Airway airway) { @@ -25,32 +27,38 @@ public class RouteSymbol implements Drawable { } @Override - public void drawOn(Graphics graphicsContext, AircraftMap map) { - int w = map.getWidth(); - int h = map.getHeight(); - graphicsContext.setColor(GraphicsTheme.Styles.MAP_ROUTE_COLOR); - List<GeoPoint> points = this.airway.getPoints().stream().map(GeoPoint::new).collect(Collectors.toList()); - for (int i = 0; i < points.size() - 1; i++) { - GeoPoint p1 = points.get(i); - int p1x = p1.getX(map); - int p1y = p1.getY(map); - - GeoPoint p2 = points.get(i + 1); - int p2x = p2.getX(map); - int p2y = p2.getY(map); - - boolean p1OnMap = inRange(0, p1x, w) && inRange(0, p1y, h); - boolean p2OnMap = inRange(0, p2x, w) && inRange(0, p2y, h); - boolean showEdge = p1OnMap || p2OnMap; - if (showEdge) { - graphicsContext.drawLine(p1x, p1y, p2x, p2y); - graphicsContext.fillOval(p1x - 2, p1y - 2, 4, 4); + public void drawOn(Graphics graphicsContext, AircraftMap map, DisplayMode displayMode) { + if (!displayMode.equals(DisplayMode.HIDDEN)) { + int w = map.getWidth(); + int h = map.getHeight(); + graphicsContext.setColor(GraphicsTheme.Styles.MAP_ROUTE_COLOR); + List<GeoPoint> points = this.airway.getPoints().stream().map(GeoPoint::new).collect(Collectors.toList()); + for (int i = 0; i < points.size() - 1; i++) { + GeoPoint p1 = points.get(i); + int p1x = p1.getX(map); + int p1y = p1.getY(map); + + GeoPoint p2 = points.get(i + 1); + int p2x = p2.getX(map); + int p2y = p2.getY(map); + + boolean p1OnMap = inRange(0, p1x, w) && inRange(0, p1y, h); + boolean p2OnMap = inRange(0, p2x, w) && inRange(0, p2y, h); + boolean showEdge = p1OnMap || p2OnMap; + if (showEdge) { + graphicsContext.drawLine(p1x, p1y, p2x, p2y); + if (displayMode.equals(DisplayMode.DETAILED)) { + graphicsContext.fillOval(p1x - VERTEX_RADIUS, p1y - VERTEX_RADIUS, VERTEX_RADIUS * 2, VERTEX_RADIUS * 2); + } + } + } + int pnx = points.get(points.size() - 1).getX(map); + int pny = points.get(points.size() - 1).getY(map); + if (inRange(0, pnx, w) && inRange(0, pny, h)) { + if (displayMode.equals(DisplayMode.DETAILED)) { + graphicsContext.fillOval(pnx - VERTEX_RADIUS, pny - VERTEX_RADIUS, VERTEX_RADIUS * 2, VERTEX_RADIUS * 2); + } } - } - int pnx = points.get(points.size() - 1).getX(map); - int pny = points.get(points.size() - 1).getY(map); - if (inRange(0, pnx, w) && inRange(0, pny, h)) { - graphicsContext.fillOval(pnx - 2, pny - 2, 4, 4); } } } |