Ignore:
Timestamp:
2007-07-14T23:25:09+02:00 (18 years ago)
Author:
ulf
Message:

make it possible to have both an icon and an area for the same key/value pair (in a single or two rules - as you like). I've used it for amenity=parking, but this will probably be useful for other key/values as well.

Mixing area and line is still not possible, basically because JOSM core doesn't make a difference here (it's both just a way for JOSM). Fortunately, rules with both area and line possible are pretty rare.

Location:
applications/editors/josm/plugins/mappaint/src/mappaint
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java

    r2807 r3590  
    1616{
    1717    boolean inDoc, inRule, inCondition, inElemStyle, inLine, inIcon, inArea;
    18     ElemStyle curStyle;
     18    ElemStyle curLineStyle=null;
     19    ElemStyle curIconStyle=null;
     20    ElemStyle curAreaStyle=null;
    1921    ElemStyles styles;
    2022    String curKey, curValue ;
     
    140142        {
    141143            inRule = false;
    142             styles.add (curKey, curValue, curStyle);
     144                        if(curLineStyle != null)
     145                        {
     146                styles.add (curKey, curValue, curLineStyle);
     147                                curLineStyle = null;
     148                        }
     149                        if(curIconStyle != null)
     150                        {
     151                styles.add (curKey, curValue, curIconStyle);
     152                                curIconStyle = null;
     153                        }
     154                        if(curAreaStyle != null)
     155                        {
     156                styles.add (curKey, curValue, curAreaStyle);
     157                                curAreaStyle = null;
     158                        }
    143159        }
    144160        else if (inCondition && qName.equals("condition"))
     
    147163        {
    148164            inLine = false;
    149             curStyle = new LineElemStyle(curWidth,curRealWidth, curColour,
     165            curLineStyle = new LineElemStyle(curWidth,curRealWidth, curColour,
    150166                                                                                curMinZoom);
    151167                                                curWidth=1;
     
    155171        {
    156172            inIcon = false;
    157             curStyle = new IconElemStyle(curIcon,curAnnotate,curMinZoom);
     173            curIconStyle = new IconElemStyle(curIcon,curAnnotate,curMinZoom);
    158174        }
    159175        else if (inArea && qName.equals("area"))
    160176        {
    161177            inArea = false;
    162             curStyle = new AreaElemStyle (curColour,curMinZoom);
     178            curAreaStyle = new AreaElemStyle (curColour,curMinZoom);
    163179        }
    164180
  • applications/editors/josm/plugins/mappaint/src/mappaint/ElemStyles.java

    r1501 r3590  
    1717        {
    1818                String key = k + "=" + v;
     19               
     20                /* unfortunately, there don't seem to be an efficient way to */
     21                /* find out, if a given OsmPrimitive is an area or not, */
     22                /* so distinguish only between way and node here - for now */
     23                if(style instanceof AreaElemStyle) {
     24                        key = key + "way";
     25                }
     26                else if(style instanceof LineElemStyle) {
     27                        key = key + "way";
     28                }
     29                else if(style instanceof IconElemStyle) {
     30                        key = key + "node";
     31                }
    1932                styles.put(key, style);
    2033        }
     
    2437                if(p.keys!=null)
    2538                {
     39                        String classname;
     40                       
     41                        if(p instanceof org.openstreetmap.josm.data.osm.Node) {
     42                                classname = "node";
     43                        } else {
     44                                classname = "way";
     45                        }
    2646                        Iterator<String> iterator = p.keys.keySet().iterator();
    2747                        while(iterator.hasNext())       
    2848                        {
    2949                                String key = iterator.next();
    30                                 String kv = key + "=" + p.keys.get(key);
     50                                String kv = key + "=" + p.keys.get(key) + classname;
    3151                                if(styles.containsKey(kv))
    3252                                {
Note: See TracChangeset for help on using the changeset viewer.