altosuilib: Outline map lines and distance value with white
authorKeith Packard <keithp@keithp.com>
Wed, 25 Jun 2014 01:25:31 +0000 (18:25 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 25 Jun 2014 01:25:31 +0000 (18:25 -0700)
This makes the value and line visible on dark backgrounds

Signed-off-by: Keith Packard <keithp@keithp.com>
altosuilib/AltosUIMapLine.java
altosuilib/AltosUIMapView.java

index 86d2e6e2c38911b0aa15f16ba9f1e3a2057c3cec..32437d4ec513ad7c301784dfeed72ee782e64699 100644 (file)
@@ -31,6 +31,7 @@ public class AltosUIMapLine {
        AltosUILatLon   start, end;
 
        private Font    font = null;
        AltosUILatLon   start, end;
 
        private Font    font = null;
+       static public int stroke_width = 6;
 
        public void set_font(Font font) {
                this.font = font;
 
        public void set_font(Font font) {
                this.font = font;
@@ -87,19 +88,24 @@ public class AltosUIMapLine {
        }
 
        public void paint(Graphics2D g, AltosUIMapTransform t) {
        }
 
        public void paint(Graphics2D g, AltosUIMapTransform t) {
-               g.setColor(Color.BLUE);
 
                if (start == null || end == null)
                        return;
 
 
                if (start == null || end == null)
                        return;
 
+               g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+
                Line2D.Double line = new Line2D.Double(t.screen(start),
                                                       t.screen(end));
 
                Line2D.Double line = new Line2D.Double(t.screen(start),
                                                       t.screen(end));
 
+               g.setColor(Color.WHITE);
+               g.setStroke(new BasicStroke(stroke_width+4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+               g.draw(line);
+
+               g.setColor(Color.BLUE);
+               g.setStroke(new BasicStroke(stroke_width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
                g.draw(line);
 
                String  message = line_dist();
                g.draw(line);
 
                String  message = line_dist();
-               g.setFont(font);
-               g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                Rectangle2D     bounds;
                bounds = font.getStringBounds(message, g.getFontRenderContext());
 
                Rectangle2D     bounds;
                bounds = font.getStringBounds(message, g.getFontRenderContext());
 
@@ -111,6 +117,13 @@ public class AltosUIMapLine {
                } else {
                        x += 2.0f;
                }
                } else {
                        x += 2.0f;
                }
+
+               g.setFont(font);
+               g.setColor(Color.WHITE);
+               for (int dy = -2; dy <= 2; dy += 2)
+                       for (int dx = -2; dx <= 2; dx += 2)
+                               g.drawString(message, x + dx, y + dy);
+               g.setColor(Color.BLUE);
                g.drawString(message, x, y);
        }
 }
                g.drawString(message, x, y);
        }
 }
index 34a85f52efb992b8ef2f4df2e6ee030ce2eb15cf..70b8e2e92c8fb7772e387ce9d209df809a472145 100644 (file)
@@ -67,7 +67,7 @@ public class AltosUIMapView extends Component implements MouseMotionListener, Mo
        AltosUILatLon           centre;
 
        public void set_font() {
        AltosUILatLon           centre;
 
        public void set_font() {
-               line.set_font(AltosUILib.value_font);
+               line.set_font(AltosUILib.status_font);
                for (AltosUIMapTile tile : tiles.values())
                        tile.set_font(AltosUILib.value_font);
                repaint();
                for (AltosUIMapTile tile : tiles.values())
                        tile.set_font(AltosUILib.value_font);
                repaint();