Changeset 3590 in osm for applications


Ignore:
Timestamp:
2007-07-14T23:25:09+02:00 (17 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
Files:
3 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                                {
  • applications/editors/josm/plugins/mappaint/styles/standard/elemstyles.xml

    r3583 r3590  
    994. area attributes
    1010                - colour
    11 5. amenity attributes
     115. icon attributes
    1212                - icon path to icon , relative from where this file is
     13
     14Using both area and line attributes for the same key/value pair doesn't work!
    1315-->
    1416
     
    712714                <condition k="amenity" v="parking" />
    713715                <icon annotate="true" src="carpark.png" />
    714         <scale_min>1</scale_min>
    715         <scale_max>50000</scale_max>
    716         </rule>
    717 
    718 <!-- enabling parking areas will hide single parking nodes COMPLETELY.
    719      unless this is fixed in mappaint, disable the area for now!
    720         <rule>
    721                 <condition k="amenity" v="parking" />
    722                 <icon annotate="true" src="carpark.png" />
    723716                <area colour="#f7efb7"/>
    724717        <scale_min>1</scale_min>
    725718        <scale_max>50000</scale_max>
    726719        </rule>
    727 -->
    728720
    729721        <rule>
Note: See TracChangeset for help on using the changeset viewer.