Implemented marker visualisation from XML in ResizableRaceCanvas

- Replaced and deprecated Constants
- Added getMarkers to RaceDataSource interface
- Added boundary testing for source data

#story[782]
This commit is contained in:
Connor Taylor-Brown
2017-04-28 01:58:55 +12:00
parent 073102d1a3
commit 02511db2b9
9 changed files with 78 additions and 28 deletions
@@ -27,7 +27,8 @@ public class ResizableRaceCanvas extends Canvas {
private boolean annoAbbrev = true;
private boolean annoSpeed = true;
private boolean annoPath = true;
private ArrayList<GPSCoordinate> raceBoundaries;
private List<GPSCoordinate> raceBoundaries;
private List<Marker> markers;
double[] xpoints = {}, ypoints = {};
public ResizableRaceCanvas(RaceDataSource raceData) {
@@ -40,7 +41,11 @@ public class ResizableRaceCanvas extends Canvas {
double long1 = raceData.getMapTopLeft().getLongitude();
double lat2 = raceData.getMapBottomRight().getLatitude();
double long2 = raceData.getMapBottomRight().getLongitude();
setMap(new RaceMap(lat1, long1, lat2, long2, (int) getWidth(), (int) getHeight()));
this.raceBoundaries = raceData.getBoundary();
this.markers = raceData.getMarkers();
}
/**
@@ -206,6 +211,22 @@ public class ResizableRaceCanvas extends Canvas {
gc.fillPolygon(xpoints, ypoints, xpoints.length);
}
/**
* Draw race markers
*/
public void drawMarkers() {
for(Marker marker: markers) {
GraphCoordinate mark1 = this.map.convertGPS(marker.getMark1());
if(marker.isCompoundMark()) {
GraphCoordinate mark2 = this.map.convertGPS(marker.getMark2());
// TODO - improve colour coding of markers
displayLine(mark1, mark2, Color.GREEN);
} else {
displayPoint(mark1, Color.GREEN);
}
}
}
/**
* Draws the Race Map
*/
@@ -222,26 +243,9 @@ public class ResizableRaceCanvas extends Canvas {
this.map.setHeight((int) height);
this.map.setWidth((int) width);
//finish line
gc.setLineWidth(2);
drawBoundaries();
GraphCoordinate finishLineCoord1 = this.map.convertGPS(Constants.finishLineMarker1);
GraphCoordinate finishLineCoord2 = this.map.convertGPS(Constants.finishLineMarker2);
displayLine(finishLineCoord1, finishLineCoord2, Color.DARKRED);
//marks
GraphCoordinate markCoord = this.map.convertGPS(Constants.mark1);
GraphCoordinate windwardGate1 = this.map.convertGPS(Constants.windwardGate1);
GraphCoordinate windwardGate2 = this.map.convertGPS(Constants.windwardGate2);
GraphCoordinate leewardGate1 = this.map.convertGPS(Constants.leewardGate1);
GraphCoordinate leewardGate2 = this.map.convertGPS(Constants.leewardGate2);
displayMark(markCoord, Color.GOLD);
displayLine(windwardGate1, windwardGate2, Color.DARKCYAN);
displayLine(leewardGate1, leewardGate2, Color.DARKVIOLET);
//start line
GraphCoordinate startline1 = this.map.convertGPS(Constants.startLineMarker1);
GraphCoordinate startline2 = this.map.convertGPS(Constants.startLineMarker2);
displayLine(startline1, startline2, Color.GREEN);
drawMarkers();
updateBoats();