Changeset 7383 in josm for trunk/src


Ignore:
Timestamp:
2014-08-13T16:42:17+02:00 (5 years ago)
Author:
bastiK
Message:

applied #10301 - extend display of maxspeed nodes (patch by Klumbumbus)
Include Droid Sans font in the JOSM binary distribution.
This unifies the font rendering on different platforms and allows geometric constructions with text (as demonstrated for maxspeed). Both regular and bold style are available.

Location:
trunk/src/org/openstreetmap/josm
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r7343 r7383  
    6060import org.openstreetmap.josm.plugins.PluginInformation;
    6161import org.openstreetmap.josm.tools.BugReportExceptionHandler;
     62import org.openstreetmap.josm.tools.FontsManager;
    6263import org.openstreetmap.josm.tools.I18n;
    6364import org.openstreetmap.josm.tools.ImageProvider;
     
    346347        Main.pref.updateSystemProperties();
    347348
     349        FontsManager.initialize();
     350       
    348351        final JFrame mainFrame = new JFrame(tr("Java OpenStreetMap Editor"));
    349352        Main.parent = mainFrame;
  • trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java

    r7136 r7383  
    3434    }
    3535
    36     public static AreaElemStyle create(Cascade c) {
     36    public static AreaElemStyle create(final Environment env) {
     37        final Cascade c = env.mc.getCascade(env.layer);
    3738        MapImage fillImage = null;
    3839        Color color = null;
     
    7576        Keyword textPos = c.get(TEXT_POSITION, null, Keyword.class);
    7677        if (textPos == null || "center".equals(textPos.val)) {
    77             text = TextElement.create(c, PaintColors.AREA_TEXT.get(), true);
     78            text = TextElement.create(env, PaintColors.AREA_TEXT.get(), true);
    7879        }
    7980
  • trunk/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java

    r7083 r7383  
    111111        Cascade c = env.mc.getCascade(env.layer);
    112112
    113         TextElement text = TextElement.create(c, DEFAULT_TEXT_COLOR, false);
     113        TextElement text = TextElement.create(env, DEFAULT_TEXT_COLOR, false);
    114114        if (text == null) return null;
    115115        // Skip any primitives that don't have text to draw. (Styles are recreated for any tag change.)
  • trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java

    r7083 r7383  
    112112                n = DEFAULT_FONT_NAME;
    113113                if (n == null) {
    114                     DEFAULT_FONT_NAME = n = Main.pref.get("mappaint.font", "Helvetica");
     114                    DEFAULT_FONT_NAME = n = Main.pref.get("mappaint.font", "Droid Sans");
    115115                }
    116116            }
     
    174174    }
    175175
    176     protected static Font getFont(Cascade c) {
     176    protected static Font getFont(Cascade c, String s) {
    177177        String name = c.get("font-family", getDefaultFontName(), String.class);
    178178        float size = c.get("font-size", getDefaultFontSize(), Float.class);
     
    185185            style = Font.ITALIC;
    186186        }
    187         return getCachedFont(name, style | weight, Math.round(size));
     187        Font f = getCachedFont(name, style | weight, Math.round(size));
     188        if (f.canDisplayUpTo(s) == -1)
     189            return f;
     190        else {
     191            // fallback if the string contains characters that cannot be
     192            // rendered by the selected font
     193            return getCachedFont("SansSerif", style | weight, Math.round(size));
     194        }
    188195    }
    189196
  • trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java

    r7191 r7383  
    337337            Cascade c = e.getValue();
    338338            if (osm instanceof Way) {
    339                 addIfNotNull(sl, AreaElemStyle.create(c));
     339                addIfNotNull(sl, AreaElemStyle.create(env));
    340340                addIfNotNull(sl, RepeatImageElemStyle.create(env));
    341341                addIfNotNull(sl, LineElemStyle.createLine(env));
     
    354354            } else if (osm instanceof Relation) {
    355355                if (((Relation)osm).isMultipolygon()) {
    356                     addIfNotNull(sl, AreaElemStyle.create(c));
     356                    addIfNotNull(sl, AreaElemStyle.create(env));
    357357                    addIfNotNull(sl, RepeatImageElemStyle.create(env));
    358358                    addIfNotNull(sl, LineElemStyle.createLine(env));
  • trunk/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java

    r7083 r7383  
    1818        this.text = text;
    1919    }
    20     public static LineTextElemStyle create(Environment env) {
    21         Cascade c = env.mc.getCascade(env.layer);
     20    public static LineTextElemStyle create(final Environment env) {
     21        final Cascade c = env.mc.getCascade(env.layer);
    2222
    2323        Keyword textPos = c.get(TEXT_POSITION, null, Keyword.class);
     
    2525            return null;
    2626
    27         TextElement text = TextElement.create(c, PaintColors.TEXT.get(), false);
     27        TextElement text = TextElement.create(env, PaintColors.TEXT.get(), false);
    2828        if (text == null)
    2929            return null;
  • trunk/src/org/openstreetmap/josm/gui/mappaint/TextElement.java

    r7083 r7383  
    116116     * @throws IllegalArgumentException thrown if {@code defaultTextColor} is null
    117117     */
    118     public static TextElement create(Cascade c, Color defaultTextColor, boolean defaultAnnotate)  throws IllegalArgumentException{
     118    public static TextElement create(Environment env, Color defaultTextColor, boolean defaultAnnotate)  throws IllegalArgumentException{
    119119        CheckParameterUtil.ensureParameterNotNull(defaultTextColor);
     120        Cascade c = env.mc.getCascade(env.layer);
    120121
    121122        LabelCompositionStrategy strategy = buildLabelCompositionStrategy(c, defaultAnnotate);
    122123        if (strategy == null) return null;
    123         Font font = ElemStyle.getFont(c);
     124        String s = strategy.compose(env.osm);
     125        if (s == null) return null;
     126        Font font = ElemStyle.getFont(c, s);
    124127
    125128        float xOffset = 0;
Note: See TracChangeset for help on using the changeset viewer.