* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altosuilib_13;
+package org.altusmetrum.altosuilib_14;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.concurrent.*;
import javax.imageio.*;
-import org.altusmetrum.altoslib_13.*;
+import org.altusmetrum.altoslib_14.*;
public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosMapInterface {
g.drawOval((int)pt.x-5, (int)pt.y-5, 10, 10);
g.drawOval((int)pt.x-20, (int)pt.y-20, 40, 40);
g.drawOval((int)pt.x-35, (int)pt.y-35, 70, 70);
+
+ if (label != null) {
+ Rectangle2D bounds;
+ bounds = line_font.getStringBounds(label, g.getFontRenderContext());
+ float x = (float) pt.x;
+ float y = (float) pt.y + (float) bounds.getHeight() / 2.0f;
+
+ g.setFont(line_font);
+ g.setColor(Color.WHITE);
+ for (int dy = -2; dy <= 2; dy += 2)
+ for (int dx = -2; dx <= 2; dx += 2)
+ g.drawString(label, x + dx, y + dy);
+ if (0 <= state && state < AltosUIMap.stateColors.length)
+ g.setColor(AltosUIMap.stateColors[state]);
+ else
+ g.setColor(AltosUIMap.stateColors[AltosLib.ao_flight_invalid]);
+ g.drawString(label, x, y);
+ }
+ }
+
+ MapMark(double lat, double lon, int state, String label) {
+ super(lat, lon, state, label);
}
MapMark(double lat, double lon, int state) {
public void mouseMoved(MouseEvent e) {
AltosMapPathPoint point = map.nearest(e.getPoint().x, e.getPoint().y);
- if (nearest_mark == null)
- nearest_mark = map.add_mark(point.gps.lat,
- point.gps.lon,
- point.state);
- else {
- nearest_mark.lat_lon.lat = point.gps.lat;
- nearest_mark.lat_lon.lon = point.gps.lon;
- nearest_mark.state = point.state;
- }
if (point != null) {
+ if (nearest_mark == null)
+ nearest_mark = map.add_mark(point.gps.lat,
+ point.gps.lon,
+ point.state);
+ else {
+ nearest_mark.lat_lon.lat = point.gps.lat;
+ nearest_mark.lat_lon.lon = point.gps.lon;
+ nearest_mark.state = point.state;
+ }
nearest_label.setText(String.format("%9.2f sec %s%s%s%s",
point.time,
pos(point.gps.lat,
return new MapMark(lat, lon, state);
}
+ public AltosMapMark new_mark(double lat, double lon, int state, String label) {
+ return new MapMark(lat, lon, state, label);
+ }
+
public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) {
return new MapTile(cache, upper_left, center, zoom, maptype, px_size, scale);
}
map.add_mark(lat, lon, status);
}
+ public void add_mark(double lat, double lon, int status, String label) {
+ map.add_mark(lat, lon, status, label);
+ }
+
public void clear_marks() {
map.clear_marks();
}