Ignore:
Timestamp:
2008-12-29T19:21:40+01:00 (15 years ago)
Author:
stoecker
Message:

added first part of multipolygon drawing

File:
1 edited

Legend:

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

    r1169 r1190  
    55import java.util.LinkedList;
    66import java.util.List;
     7import java.util.Map;
    78import java.util.Iterator;
    89
    910import org.openstreetmap.josm.data.osm.Node;
     11import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1012import org.openstreetmap.josm.data.osm.OsmUtils;
     13import org.openstreetmap.josm.data.osm.Relation;
    1114import org.openstreetmap.josm.data.osm.Way;
    1215import org.openstreetmap.josm.Main;
     
    4649    public void add(String name, String k, String v, String b, LineElemStyle style)
    4750    {
    48         getStyleSet(name, true).lines.put(getKey(k,v,b), style);
     51        String key = getKey(k,v,b);
     52        style.code = key;
     53        getStyleSet(name, true).lines.put(key, style);
    4954    }
    5055
    5156    public void addModifier(String name, String k, String v, String b, LineElemStyle style)
    5257    {
    53         getStyleSet(name, true).modifiers.put(getKey(k,v,b), style);
     58        String key = getKey(k,v,b);
     59        style.code = key;
     60        getStyleSet(name, true).modifiers.put(key, style);
    5461    }
    5562
    5663    public void add(String name, String k, String v, String b, AreaElemStyle style)
    5764    {
    58         getStyleSet(name, true).areas.put(getKey(k,v,b), style);
     65        String key = getKey(k,v,b);
     66        style.code = key;
     67        getStyleSet(name, true).areas.put(key, style);
    5968    }
    6069
    6170    public void add(String name, String k, String v, String b, IconElemStyle style)
    6271    {
    63         getStyleSet(name, true).icons.put(getKey(k,v,b), style);
     72        String key = getKey(k,v,b);
     73        style.code = key;
     74        getStyleSet(name, true).icons.put(key, style);
    6475    }
    6576
     
    109120    }
    110121
    111     public ElemStyle get(Way w)
    112     {
    113         StyleSet ss = getStyleSet(null, false);
    114         if(ss == null || w.keys == null)
    115             return null;
     122    private ElemStyle get(Map<String, String> keys, StyleSet ss)
     123    {
    116124        AreaElemStyle retArea = null;
    117125        LineElemStyle retLine = null;
    118126        String linestring = null;
    119127        HashMap<String, LineElemStyle> over = new HashMap<String, LineElemStyle>();
    120         Iterator<String> iterator = w.keys.keySet().iterator();
     128        Iterator<String> iterator = keys.keySet().iterator();
    121129        while(iterator.hasNext())
    122130        {
    123131            String key = iterator.next();
    124             String val = w.keys.get(key);
     132            String val = keys.get(key);
    125133            AreaElemStyle styleArea;
    126134            LineElemStyle styleLine;
     
    173181    }
    174182
    175     public boolean isArea(Way w)
    176     {
    177         StyleSet ss = getStyleSet(null, false);
    178         if(ss != null && w.keys != null)
    179         {
    180             Iterator<String> iterator = w.keys.keySet().iterator();
    181             while(iterator.hasNext())
    182             {
    183                 String key = iterator.next();
    184                 String val = w.keys.get(key);
    185                 if(ss.areas.containsKey("n" + key + "=" + val)
    186                 || ss.areas.containsKey("n" + key + "=" + OsmUtils.getNamedOsmBoolean(val))
    187                 || ss.areas.containsKey("x" + key))
    188                     return true;
    189             }
     183    public ElemStyle get(Way w)
     184    {
     185        StyleSet ss = getStyleSet(null, false);
     186        return (ss == null || w.keys == null) ? null : get(w.keys, ss);
     187    }
     188
     189    public ElemStyle get(Relation r)
     190    {
     191        StyleSet ss = getStyleSet(null, false);
     192        return (ss == null || r.keys == null) ? null : get(r.keys, ss);
     193    }
     194
     195    private boolean isArea(Map<String, String> keys, StyleSet ss)
     196    {
     197        Iterator<String> iterator = keys.keySet().iterator();
     198        while(iterator.hasNext())
     199        {
     200            String key = iterator.next();
     201            String val = keys.get(key);
     202            if(ss.areas.containsKey("n" + key + "=" + val)
     203            || ss.areas.containsKey("n" + key + "=" + OsmUtils.getNamedOsmBoolean(val))
     204            || ss.areas.containsKey("x" + key))
     205                return true;
    190206        }
    191207        return false;
    192208    }
     209
     210    public boolean isArea(OsmPrimitive o)
     211    {
     212        StyleSet ss = getStyleSet(null, false);
     213        return (ss != null && o.keys != null && !(o instanceof Node))
     214        ? isArea(o.keys, ss) : false;
     215    }
     216
    193217    public boolean hasAreas()
    194218    {
Note: See TracChangeset for help on using the changeset viewer.