Changeset 1695 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2009-06-27T00:28:57+02:00 (15 years ago)
Author:
stoecker
Message:

fix #2767 - some area-style-ways are not displayed properly

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

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

    r1677 r1695  
    227227            //if(!profilerOmitDraw)
    228228            //{
    229             if (fillAreas > dist && (!areaStyle.closed || w.isClosed()))
     229            if (fillAreas > dist)
    230230            {
    231231            //    profilerVisibleAreas++;
     
    460460                AreaElemStyle areaStyle = (AreaElemStyle)style;
    461461                drawWay(way, areaStyle.line, selectedColor, true);
    462                 if(area && (!areaStyle.closed || way.isClosed()))
     462                if(area)
    463463                    drawArea(way, areaselected ? selectedColor : areaStyle.color);
    464464            }
     
    979979                {
    980980                    Polygon p = pd.get();
    981                     if(isPolygonVisible(p) && (!areaStyle.closed || pd.isClosed()))
     981                    if(isPolygonVisible(p))
    982982                    {
    983983                        drawAreaPolygon(p, (pd.way.selected || r.selected) ? selectedColor
  • trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java

    r1415 r1695  
    1111import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1212import org.openstreetmap.josm.data.osm.OsmUtils;
     13import org.openstreetmap.josm.data.osm.Way;
    1314import org.openstreetmap.josm.Main;
    1415
     
    5455            return ret;
    5556        }
    56         private ElemStyle get(Map<String, String> keys)
     57        private ElemStyle get(Map<String, String> keys, boolean noclosed)
    5758        {
    5859            AreaElemStyle retArea = null;
     
    6869                LineElemStyle styleLine;
    6970                String idx = "n" + key + "=" + val;
    70                 if((styleArea = areas.get(idx)) != null && (retArea == null || styleArea.priority > retArea.priority))
     71                if((styleArea = areas.get(idx)) != null && (retArea == null
     72                || styleArea.priority > retArea.priority) && (!noclosed || !styleArea.closed))
    7173                    retArea = styleArea;
    7274                if((styleLine = lines.get(idx)) != null && (retLine == null || styleLine.priority > retLine.priority))
     
    7880                    over.put(idx, styleLine);
    7981                idx = "b" + key + "=" + OsmUtils.getNamedOsmBoolean(val);
    80                 if((styleArea = areas.get(idx)) != null && (retArea == null || styleArea.priority > retArea.priority))
     82                if((styleArea = areas.get(idx)) != null && (retArea == null
     83                || styleArea.priority > retArea.priority) && (!noclosed || !styleArea.closed))
    8184                    retArea = styleArea;
    8285                if((styleLine = lines.get(idx)) != null && (retLine == null || styleLine.priority > retLine.priority))
     
    8891                    over.put(idx, styleLine);
    8992                idx = "x" + key;
    90                 if((styleArea = areas.get(idx)) != null && (retArea == null || styleArea.priority > retArea.priority))
     93                if((styleArea = areas.get(idx)) != null && (retArea == null
     94                || styleArea.priority > retArea.priority) && (!noclosed || !styleArea.closed))
    9195                    retArea = styleArea;
    9296                if((styleLine = lines.get(idx)) != null && (retLine == null || styleLine.priority > retLine.priority))
     
    118122        {
    119123            return (osm.keys == null) ? null :
    120             ((osm instanceof Node) ? getNode(osm.keys) : get(osm.keys));
     124            ((osm instanceof Node) ? getNode(osm.keys) : get(osm.keys,
     125            osm instanceof Way && !((Way)osm).isClosed()));
    121126        }
    122127
     
    130135            if(o.keys != null && !(o instanceof Node))
    131136            {
     137                boolean noclosed = o instanceof Way && !((Way)o).isClosed();
    132138                Iterator<String> iterator = o.keys.keySet().iterator();
    133139                while(iterator.hasNext())
     
    135141                    String key = iterator.next();
    136142                    String val = o.keys.get(key);
    137                     if(areas.containsKey("n" + key + "=" + val)
    138                     || areas.containsKey("b" + key + "=" + OsmUtils.getNamedOsmBoolean(val))
    139                     || areas.containsKey("x" + key))
     143                    AreaElemStyle s = areas.get("n" + key + "=" + val);
     144                    if(s == null || (s.closed && noclosed))
     145                        s = areas.get("b" + key + "=" + OsmUtils.getNamedOsmBoolean(val));
     146                    if(s == null || (s.closed && noclosed))
     147                        s = areas.get("x" + key);
     148                    if(s != null && !(s.closed && noclosed))
    140149                        return true;
    141150                }
Note: See TracChangeset for help on using the changeset viewer.