Changeset 3817 in josm


Ignore:
Timestamp:
2011-01-25T18:11:54+01:00 (13 years ago)
Author:
bastiK
Message:

make turn restriction rendering work again

Location:
trunk/src/org/openstreetmap/josm/gui/mappaint
Files:
2 edited

Legend:

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

    r3803 r3817  
    4343
    4444    public ElemStyle get(OsmPrimitive osm) {
    45         return get(osm, false);
     45        return (!osm.hasKeys()) ? null : ((osm instanceof Node) ? getNode(osm) : get(osm, false));
     46    }
     47
     48    public ElemStyle getNode(OsmPrimitive osm) {
     49        IconElemStyle icon = null;
     50        for (StyleSource s : getStyleSources()) {
     51            icon = s.getNode(osm, icon);
     52        }
     53        return icon;
    4654    }
    4755
     
    4957        if (!osm.hasKeys())
    5058            return null;
    51 
    52         if (osm instanceof Node) {
    53             IconElemStyle icon = null;
    54             for (StyleSource s : getStyleSources()) {
    55                 icon = s.getNode(osm, icon);
    56             }
    57             return icon;
    58         } else {
    59             boolean noclosed;
    60             if (forceArea) {
    61                 noclosed = false;
    62             } else {
    63                 noclosed = osm instanceof Way && !((Way) osm).isClosed();
    64             }
    65             AreaElemStyle area = null;
    66             LineElemStyle line = null;
    67             ElemStyle result = null;
    68             for (StyleSource s : getStyleSources()) {
    69                 result = s.get(osm, noclosed, area, line);
    70                 if (result instanceof LineElemStyle) {
    71                     area = null;
    72                     line = (LineElemStyle) result;
    73                 } else if (result instanceof AreaElemStyle) {
    74                     area = (AreaElemStyle) result;
    75                     if (area.getLineStyle() != null) {
    76                         line = area.getLineStyle();
    77                     }
    78                 } else if (result != null)
    79                     throw new AssertionError();
    80             }
    81             return result;
     59        AreaElemStyle area = null;
     60        LineElemStyle line = null;
     61        ElemStyle result = null;
     62        for (StyleSource s : getStyleSources()) {
     63            result = s.get(osm, forceArea || !(osm instanceof Way) || ((Way) osm).isClosed(), area, line);
     64            if (result instanceof LineElemStyle) {
     65                area = null;
     66                line = (LineElemStyle) result;
     67            } else if (result instanceof AreaElemStyle) {
     68                area = (AreaElemStyle) result;
     69                if (area.getLineStyle() != null) {
     70                    line = area.getLineStyle();
     71                }
     72            } else if (result != null)
     73                throw new AssertionError();
    8274        }
     75        return result;
    8376    }
    8477
     
    111104
    112105    public IconElemStyle getIcon(OsmPrimitive osm) {
    113         return osm.hasKeys() ? (IconElemStyle) get(osm) : null;
     106        return osm.hasKeys() ? (IconElemStyle) getNode(osm) : null;
    114107    }
    115108
  • trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java

    r3814 r3817  
    6767    }
    6868
    69     public ElemStyle get(OsmPrimitive primitive, boolean noclosed, AreaElemStyle area, LineElemStyle line) {
     69    /**
     70     * @param closed The primitive is a closed way or we pretend it is closed.
     71     *  This is useful for multipolygon relations and outer ways of untagged
     72     *  multipolygon relations.
     73     */
     74    public ElemStyle get(OsmPrimitive primitive, boolean closed, AreaElemStyle area, LineElemStyle line) {
    7075        String lineIdx = null;
    7176        HashMap<String, LineElemStyle> overlayMap = new HashMap<String, LineElemStyle>();
     
    7580            LineElemStyle styleLine;
    7681            String idx = "n" + key + "=" + val;
    77             if ((styleArea = areas.get(idx)) != null && (area == null || styleArea.priority >= area.priority) && (!noclosed || !styleArea.closed)) {
     82            if ((styleArea = areas.get(idx)) != null && (area == null || styleArea.priority >= area.priority) && (closed || !styleArea.closed)) {
    7883                area = styleArea;
    7984            }
     
    8691            }
    8792            idx = "b" + key + "=" + OsmUtils.getNamedOsmBoolean(val);
    88             if ((styleArea = areas.get(idx)) != null && (area == null || styleArea.priority >= area.priority) && (!noclosed || !styleArea.closed)) {
     93            if ((styleArea = areas.get(idx)) != null && (area == null || styleArea.priority >= area.priority) && (closed || !styleArea.closed)) {
    8994                area = styleArea;
    9095            }
     
    97102            }
    98103            idx = "x" + key;
    99             if ((styleArea = areas.get(idx)) != null && (area == null || styleArea.priority >= area.priority) && (!noclosed || !styleArea.closed)) {
     104            if ((styleArea = areas.get(idx)) != null && (area == null || styleArea.priority >= area.priority) && (closed || !styleArea.closed)) {
    100105                area = styleArea;
    101106            }
     
    109114        }
    110115        for (AreaElemStyle s : areasList) {
    111             if ((area == null || s.priority >= area.priority) && (!noclosed || !s.closed) && s.check(primitive)) {
     116            if ((area == null || s.priority >= area.priority) && (closed || !s.closed) && s.check(primitive)) {
    112117                area = s;
    113118            }
Note: See TracChangeset for help on using the changeset viewer.