Changeset 3817 in josm
- Timestamp:
- 2011-01-25T18:11:54+01:00 (12 years ago)
- 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 43 43 44 44 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; 46 54 } 47 55 … … 49 57 if (!osm.hasKeys()) 50 58 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(); 82 74 } 75 return result; 83 76 } 84 77 … … 111 104 112 105 public IconElemStyle getIcon(OsmPrimitive osm) { 113 return osm.hasKeys() ? (IconElemStyle) get (osm) : null;106 return osm.hasKeys() ? (IconElemStyle) getNode(osm) : null; 114 107 } 115 108 -
trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java
r3814 r3817 67 67 } 68 68 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) { 70 75 String lineIdx = null; 71 76 HashMap<String, LineElemStyle> overlayMap = new HashMap<String, LineElemStyle>(); … … 75 80 LineElemStyle styleLine; 76 81 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)) { 78 83 area = styleArea; 79 84 } … … 86 91 } 87 92 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)) { 89 94 area = styleArea; 90 95 } … … 97 102 } 98 103 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)) { 100 105 area = styleArea; 101 106 } … … 109 114 } 110 115 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)) { 112 117 area = s; 113 118 }
Note: See TracChangeset
for help on using the changeset viewer.