Changeset 4623 in josm for trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
- Timestamp:
- 2011-12-01T00:53:26+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
r4621 r4623 6 6 import java.util.Collection; 7 7 import java.util.Collections; 8 import java.util.HashMap;9 8 import java.util.Iterator; 10 9 import java.util.List; 11 import java.util.Map;12 10 import java.util.Map.Entry; 13 11 … … 17 15 import org.openstreetmap.josm.data.osm.Way; 18 16 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon; 17 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache; 19 18 import org.openstreetmap.josm.gui.NavigatableComponent; 20 19 import org.openstreetmap.josm.gui.mappaint.StyleCache.StyleList; … … 31 30 private int defaultNodesIdx, defaultLinesIdx; 32 31 33 private final Map<NavigatableComponent, Map<Relation, Multipolygon>> multipolygonsCache;34 35 32 public ElemStyles() 36 33 { 37 34 styleSources = new ArrayList<StyleSource>(); 38 multipolygonsCache = new HashMap<NavigatableComponent, Map<Relation,Multipolygon>>();39 35 } 40 36 … … 121 117 } 122 118 123 private final Multipolygon getCachedMultipolygon(NavigatableComponent nc, Relation r) {124 Multipolygon multipolygon = null;125 Map<Relation, Multipolygon> map = multipolygonsCache.get(nc);126 if (map == null) {127 multipolygonsCache.put(nc, map = new HashMap<Relation, Multipolygon>());128 }129 multipolygon = map.get(r);130 if (multipolygon == null) {131 map.put(r, multipolygon = new Multipolygon(nc));132 multipolygon.load(r);133 }134 return multipolygon;135 }136 137 119 /** 138 120 * Create the list of styles and its valid scale range for one primitive. … … 179 161 continue; 180 162 } 181 Multipolygon multipolygon = getCachedMultipolygon(nc, r);163 Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, r); 182 164 183 165 if (multipolygon.getOuterWays().contains(osm)) { … … 244 226 continue; 245 227 } 246 final Multipolygon multipolygon = getCachedMultipolygon(nc, ref);228 final Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, ref); 247 229 248 230 if (multipolygon.getInnerWays().contains(osm)) { … … 277 259 if (!Utils.exists(p.a, AreaElemStyle.class)) { 278 260 // look at outer ways to find area style 279 Multipolygon multipolygon = new Multipolygon(nc); 280 multipolygon.load((Relation) osm); 261 Multipolygon multipolygon = MultipolygonCache.getInstance().get(nc, (Relation) osm); 281 262 for (Way w : multipolygon.getOuterWays()) { 282 263 Pair<StyleList, Range> wayStyles = generateStyles(w, scale, null, false); … … 429 410 styleSources.addAll(sources); 430 411 } 431 432 public void clearMultipolygonsCache(NavigatableComponent nc) {433 multipolygonsCache.remove(nc);434 }435 412 }
Note:
See TracChangeset
for help on using the changeset viewer.