AltosSiteMap: ensure buffer around active tile
[fw/altos] / ao-tools / altosui / AltosSiteMapTile.java
index 9d6f855d41bc865434dc7052cf3f17fb4357b9a7..e09429862d505dd92a4b3111a5f6a7abc5586671 100644 (file)
@@ -32,9 +32,6 @@ import java.awt.geom.Point2D;
 import java.awt.geom.Line2D;
 
 public class AltosSiteMapTile extends JLayeredPane {
-       Point2D.Double coord_pt;
-       Point2D.Double last_pt;
-
        JLabel mapLabel;
        JLabel draw;
        Graphics2D g2d;
@@ -55,24 +52,25 @@ public class AltosSiteMapTile extends JLayeredPane {
                Color.BLACK   // landed
        };
 
-       boolean drawn_landed_circle = false;
-       boolean drawn_boost_circle = false;
-       public void show(AltosState state, int crc_errors, Point2D.Double pt) {
-               if (last_pt == null) {
-                       // setLocation(state.pad_lat, state.pad_lon);
-                       // loadMap();
-                       last_pt = pt;
-               }
-
-               if (pt != last_pt) {
-                       if (0 <= state.state && state.state < stateColors.length) {
-                               g2d.setColor(stateColors[state.state]);
-                       }
-                       g2d.draw(new Line2D.Double(last_pt, pt));
+       private boolean drawn_landed_circle = false;
+       private boolean drawn_boost_circle = false;
+       private boolean scrollable = false;
+       public synchronized void setScrollable() {
+               scrollable = true;
+       }
+       public synchronized boolean isScrollable() {
+               return scrollable;
+       }
+       public synchronized void show(AltosState state, int crc_errors,
+                                     Point2D.Double last_pt, Point2D.Double pt)
+       {
+               if (0 <= state.state && state.state < stateColors.length) {
+                       g2d.setColor(stateColors[state.state]);
                }
+               g2d.draw(new Line2D.Double(last_pt, pt));
 
                int px_size = getWidth();
-               if (0 <= pt.x && pt.x < px_size) {
+               if (isScrollable() && 0 <= pt.x && pt.x < px_size) {
                        if (0 <= pt.y && pt.y < px_size) {
                                int dx = 500, dy = 250;
                                if (state.state > 2) {
@@ -100,7 +98,6 @@ public class AltosSiteMapTile extends JLayeredPane {
                        g2d.drawOval((int)pt.x-35, (int)pt.y-35, 70, 70);
                }
 
-               last_pt = pt;
                repaint();
        }
 
@@ -125,6 +122,9 @@ public class AltosSiteMapTile extends JLayeredPane {
 
                draw = new JLabel();
                g2d = fillLabel(draw, new Color(127, 127, 127, 0), px_size);
+               g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                                    RenderingHints.VALUE_ANTIALIAS_ON);
+               g2d.setStroke(new BasicStroke(6, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
                draw.setBounds(0, 0, px_size, px_size);
                draw.setOpaque(false);