Ticket #8934: 8934-2-HaloedTexts.patch

File 8934-2-HaloedTexts.patch, 3.3 KB (added by AlfonZ, 13 years ago)
  • src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java

     
    499499            if ((pb.width >= nb.getWidth() && pb.height >= nb.getHeight()) && // quick check
    500500                    area.contains(centeredNBounds) // slow but nice
    501501            ) {
     502                Font defaultFont = g.getFont();
     503                int x = (int)(centeredNBounds.getMinX() - nb.getMinX());
     504                int y = (int)(centeredNBounds.getMinY() - nb.getMinY());
    502505                if (isInactiveMode || osm.isDisabled()) {
    503506                    g.setColor(inactiveColor);
     507                    g.setFont (text.font);
     508                    g.drawString(name, x, y);
     509                } else if (text.haloRadius != null) {
     510                    g.setStroke(new BasicStroke(2*text.haloRadius, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
     511                    g.setColor(text.haloColor);
     512                    FontRenderContext frc = g.getFontRenderContext();
     513                    GlyphVector gv = text.font.createGlyphVector(frc, name);
     514                    Shape textOutline = gv.getOutline(x, y);
     515                    g.draw(textOutline);
     516                    g.setStroke(new BasicStroke());
     517                    g.setColor(text.color);
     518                    g.fill(textOutline);
    504519                } else {
    505520                    g.setColor(text.color);
     521                    g.setFont (text.font);
     522                    g.drawString(name, x, y);
    506523                }
    507                 Font defaultFont = g.getFont();
    508                 g.setFont (text.font);
    509                 g.drawString (name,
    510                         (int)(centeredNBounds.getMinX() - nb.getMinX()),
    511                         (int)(centeredNBounds.getMinY() - nb.getMinY()));
    512524                g.setFont(defaultFont);
    513525            }
    514526        }
     
    589601        }
    590602        if (isInactiveMode || n.isDisabled()) {
    591603            g.setColor(inactiveColor);
    592         } else {
    593             g.setColor(text.color);
    594         }
    595         if (text.haloRadius != null) {
     604            g.drawString(s, x, y);
     605        } else if (text.haloRadius != null) {
    596606            g.setStroke(new BasicStroke(2*text.haloRadius, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
    597607            g.setColor(text.haloColor);
    598608            FontRenderContext frc = g.getFontRenderContext();
     
    603613            g.setColor(text.color);
    604614            g.fill(textOutline);
    605615        } else {
     616            g.setColor(text.color);
    606617            g.drawString(s, x, y);
    607618        }
    608619        g.setFont(defaultFont);
     
    11501161                gv.setGlyphTransform(i, trfm);
    11511162            }
    11521163        }
    1153         if (text.haloRadius != null) {
     1164        if (isInactiveMode || way.isDisabled()) {
     1165            g.setColor(inactiveColor);
     1166            g.drawGlyphVector(gv, 0, 0);
     1167        } else if (text.haloRadius != null) {
    11541168            Shape textOutline = gv.getOutline();
    11551169            g.setStroke(new BasicStroke(2*text.haloRadius, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
    11561170            g.setColor(text.haloColor);