Ignore:
Timestamp:
2011-02-07T11:42:34+01:00 (13 years ago)
Author:
bastiK
Message:

mapcss: basic support for node shapes and some fine tuning

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java

    r3862 r3865  
    22package org.openstreetmap.josm.data.osm.visitor.paint;
    33
     4import java.awt.AlphaComposite;
    45import java.awt.BasicStroke;
    56import java.awt.Color;
     
    3132import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon.PolyData;
    3233import org.openstreetmap.josm.gui.NavigatableComponent;
     34import org.openstreetmap.josm.gui.mappaint.ElemStyle;
    3335import org.openstreetmap.josm.gui.mappaint.NodeElemStyle;
     36import org.openstreetmap.josm.gui.mappaint.NodeElemStyle.Symbol;
    3437import org.openstreetmap.josm.tools.ImageProvider;
    3538import org.openstreetmap.josm.tools.LanguageInfo;
     
    5457
    5558    private final Font orderFont;
    56     private final int fillAlpha;
    5759    private final int virtualNodeSize;
    5860    private final int virtualNodeSpace;
     
    8991
    9092        this.orderFont = new Font(Main.pref.get("mappaint.font", "Helvetica"), Font.PLAIN, Main.pref.getInteger("mappaint.fontsize", 8));
    91         this.fillAlpha = Math.min(255, Math.max(0, Integer.valueOf(Main.pref.getInteger("mappaint.fillalpha", 50))));
    9293        this.virtualNodeSize = virtual ? Main.pref.getInteger("mappaint.node.virtual-size", 8) / 2 : 0;
    9394        this.virtualNodeSpace = Main.pref.getInteger("mappaint.node.virtual-space", 70);
     
    187188    }
    188189
    189     public void drawNodeIcon(Node n, ImageIcon icon, boolean selected, boolean member, String name) {
     190    public void drawNodeIcon(Node n, ImageIcon icon, float iconAlpha, boolean selected, boolean member, String name) {
    190191        Point p = nc.getPoint(n);
    191192        if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
    192193
    193194        int w = icon.getIconWidth(), h=icon.getIconHeight();
     195        if (iconAlpha != 1f) {
     196            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, iconAlpha));
     197        }
    194198        icon.paintIcon ( nc, g, p.x-w/2, p.y-h/2 );
     199        g.setPaintMode();
    195200        if(name != null) {
    196201            if (inactive || n.isDisabled()) {
     
    208213            g.setColor(selected? selectedColor : relationSelectedColor);
    209214            g.drawRect(p.x-w/2-2, p.y-h/2-2, w+4, h+4);
     215        }
     216    }
     217
     218    public void drawNodeSymbol(Node n, Symbol s, boolean selected, boolean member, String name) {
     219        Point p = nc.getPoint(n);
     220        if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
     221        int radius = (int) (s.size / 2);
     222
     223        if (s.fillColor != null) {
     224            g.setColor(s.fillColor);
     225            switch (s.symbol) {
     226                case CIRCLE:
     227                    g.fillOval(p.x - radius, p.y - radius, (int) s.size, (int) s.size);
     228                    break;
     229                case SQUARE:
     230                    g.fillRect(p.x - radius, p.y - radius, (int) s.size, (int) s.size);
     231                    break;
     232            }
     233        }
     234        if (s.stroke != null) {
     235            g.setStroke(s.stroke);
     236            g.setColor(s.strokeColor);
     237            switch (s.symbol) {
     238                case CIRCLE:
     239                    g.drawOval(p.x - radius, p.y - radius, (int) s.size - 1, (int) s.size - 1);
     240                    break;
     241                case SQUARE:
     242                    g.drawRect(p.x - radius, p.y - radius, (int) s.size - 1, (int) s.size - 1);
     243                    break;
     244            }
     245            g.setStroke(new BasicStroke());
    210246        }
    211247    }
     
    271307            TexturePaint texture = new TexturePaint(fillImage,
    272308                    new Rectangle(polygon.xpoints[0], polygon.ypoints[0], fillImage.getWidth(), fillImage.getHeight()));
    273 
    274309            g.setPaint(texture);
     310            if (color.getAlpha() != 255) {
     311                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, ElemStyle.color_int2float(color.getAlpha())));
     312            }
    275313            g.fill(polygon);
     314            g.setPaintMode();
    276315        }
    277316
Note: See TracChangeset for help on using the changeset viewer.