Changeset 1695 in josm


Ignore:
Timestamp:
Jun 27, 2009 12:28:57 AM (4 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.