Ignore:
Timestamp:
2008-08-11T20:59:42+02:00 (16 years ago)
Author:
framm
Message:
  • mappaint modifications by Joerg Henne <j.henne@…>; now supports new config options mappaint.node.selected-size and .unselected-size, .fill-selected and .fill-unselected, mappaint.segment.default-width; change in unselect_all (supports escape), new keyboard shortcuts for zoom in/out (keys + and -)
Location:
trunk/src/org/openstreetmap/josm/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r655 r768  
    277277                return ColorHelper.html2color(colStr);
    278278        }
     279
     280        public int getInteger(String key, int def) {
     281            String v = get(key);
     282            if(null == v)
     283                return def;
     284           
     285            try {
     286                return Integer.parseInt(v);
     287            } catch(NumberFormatException e) {
     288                // fall out
     289            }
     290           
     291            return def;
     292    }
    279293}
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

    r757 r768  
    99import java.awt.Point;
    1010import java.awt.Polygon;
     11import java.awt.RenderingHints;
    1112import java.awt.Stroke;
    1213import java.awt.geom.GeneralPath;
     
    1718
    1819import org.openstreetmap.josm.Main;
     20import org.openstreetmap.josm.actions.UnselectAllAction;
    1921import org.openstreetmap.josm.data.Preferences;
    2022import org.openstreetmap.josm.data.osm.DataSet;
     
    7779    protected boolean showOrderNumber;
    7880   
     81        private boolean fillSelectedNode;
     82
     83        private boolean fillUnselectedNode;
     84
     85        private int selectedNodeRadius;
     86
     87        private int unselectedNodeRadius;
     88
     89        private int selectedNodeSize;
     90
     91        private int unselectedNodeSize;
     92
     93        private int defaultSegmentWidth = 2;
     94
    7995    public final static Color darkerblue = new Color(0,0,96);
    8096    public final static Color darkblue = new Color(0,0,128);
     
    126142            }
    127143        } else {
    128             drawNode(n, n.selected ? selectedColor : nodeColor);
     144                        if (n.selected)
     145                                drawNode(n, selectedColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
     146                        else
     147                                drawNode(n, nodeColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
    129148        }
    130149    }
     
    143162
    144163        Color colour = untaggedColor;
    145         int width = 2;
     164                int width = defaultSegmentWidth;
    146165        int realWidth = 0; //the real width of the element in meters
    147166        boolean dashed = false;
     
    326345     * @param color The color of the node.
    327346     */
    328     public void drawNode(Node n, Color color) {
    329         if(isZoomOk(null)) {
    330             Point p = nc.getPoint(n.eastNorth);
    331             if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
    332             g.setColor(color);
    333             g.drawRect(p.x-1, p.y-1, 2, 2);
    334         }
    335     }
     347    public void drawNode(Node n, Color color, int size, int radius, boolean fill) {
     348                if (isZoomOk(null) && size > 1) {
     349                        Point p = nc.getPoint(n.eastNorth);
     350                        if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth())
     351                                || (p.y > nc.getHeight()))
     352                                return;
     353                        g.setColor(color);
     354                        if (fill)
     355                                g.fillRect(p.x - radius, p.y - radius, size, size);
     356                        else
     357                                g.drawRect(p.x - radius, p.y - radius, size, size);
     358                }
     359        }
    336360
    337361    // NW 111106 Overridden from SimplePaintVisitor in josm-1.4-nw1
     
    353377        fillAreas = Main.pref.getBoolean("mappaint.fillareas", true);
    354378
    355         /* XXX - there must be a better way to get a bounded Integer pref! */
    356         try {
    357             fillAlpha = Integer.valueOf(Main.pref.get("mappaint.fillalpha", "50"));
    358             if (fillAlpha < 0) {
    359                 fillAlpha = 0;
    360             }
    361             if (fillAlpha > 255) {
    362                 fillAlpha = 255;
    363             }
    364         } catch (NumberFormatException nfe) {
    365             fillAlpha = 50;
    366         }
     379                selectedNodeRadius = Main.pref.getInteger("mappaint.node.selected-size",
     380                        5) / 2;
     381                selectedNodeSize = selectedNodeRadius * 2;
     382                unselectedNodeRadius = Main.pref.getInteger(
     383                        "mappaint.node.unselected-size", 3) / 2;
     384                unselectedNodeSize = unselectedNodeRadius * 2;
     385
     386                defaultSegmentWidth = Main.pref.getInteger(
     387                        "mappaint.segment.default-width", 2);
     388
     389                fillSelectedNode = Main.pref.getBoolean("mappaint.node.fill-selected",
     390                        true);
     391                fillUnselectedNode = Main.pref.getBoolean(
     392                        "mappaint.node.fill-unselected", false);
     393
     394                ((Graphics2D)g)
     395                        .setRenderingHint(
     396                                RenderingHints.KEY_ANTIALIASING,
     397                                Main.pref.getBoolean("mappaint.use-antialiasing", true) ? RenderingHints.VALUE_ANTIALIAS_ON
     398                                        : RenderingHints.VALUE_ANTIALIAS_OFF);
     399
     400                fillAlpha = Math.min(255, Math.max(0, Integer.valueOf(Main.pref
     401                        .getInteger("mappaint.fillalpha", 50))));
    367402
    368403        Collection<Way> noAreaWays = new LinkedList<Way>();
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

    r759 r768  
    88import java.awt.Point;
    99import java.awt.Rectangle;
     10import java.awt.RenderingHints;
    1011import java.awt.Stroke;
    1112import java.awt.geom.GeneralPath;
    12 
    1313import java.util.Iterator;
     14
    1415import org.openstreetmap.josm.Main;
    1516import org.openstreetmap.josm.data.Preferences;
    1617import org.openstreetmap.josm.data.osm.DataSet;
    17 import org.openstreetmap.josm.data.osm.Relation;
    1818import org.openstreetmap.josm.data.osm.RelationMember;
    1919import org.openstreetmap.josm.data.osm.Node;
    2020import org.openstreetmap.josm.data.osm.OsmPrimitive;
     21import org.openstreetmap.josm.data.osm.Relation;
     22import org.openstreetmap.josm.data.osm.RelationMember;
    2123import org.openstreetmap.josm.data.osm.Way;
    2224import org.openstreetmap.josm.gui.NavigatableComponent;
    23 import org.openstreetmap.josm.tools.ColorHelper;
    2425
    2526/**
     
    6465        protected boolean showOrderNumber;
    6566       
     67        private boolean fillSelectedNode;
     68
     69        private boolean fillUnselectedNode;
     70
     71        private int selectedNodeRadius;
     72
     73        private int unselectedNodeRadius;
     74
     75        private int selectedNodeSize;
     76
     77        private int unselectedNodeSize;
     78
     79        private int defaultSegmentWidth = 2;
     80
    6681        /**
    6782         * Draw subsequent segments of same color as one Path
     
    85100                showOrderNumber = Main.pref.getBoolean("draw.segment.order_number");
    86101               
     102                selectedNodeRadius = Main.pref.getInteger("mappaint.node.selected-size",
     103                        5) / 2;
     104                selectedNodeSize = selectedNodeRadius * 2;
     105                unselectedNodeRadius = Main.pref.getInteger(
     106                        "mappaint.node.unselected-size", 3) / 2;
     107                unselectedNodeSize = unselectedNodeRadius * 2;
     108
     109                defaultSegmentWidth = Main.pref.getInteger(
     110                        "mappaint.segment.default-width", 2);
     111
     112                fillSelectedNode = Main.pref.getBoolean("mappaint.node.fill-selected",
     113                        true);
     114                fillUnselectedNode = Main.pref.getBoolean(
     115                        "mappaint.node.fill-unselected", false);
     116
     117                ((Graphics2D)g)
     118                        .setRenderingHint(
     119                                RenderingHints.KEY_ANTIALIASING,
     120                                Main.pref.getBoolean("mappaint.use-antialiasing", true) ? RenderingHints.VALUE_ANTIALIAS_ON
     121                                        : RenderingHints.VALUE_ANTIALIAS_OFF);
     122
    87123                // draw tagged ways first, then untagged ways. takes
    88124                // time to iterate through list twice, OTOH does not
     
    121157                if (n.incomplete) return;
    122158
    123                 Color color = null;
    124159                if (inactive)
    125                         color = inactiveColor;
     160                        drawNode(n, inactiveColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
    126161                else if (n.selected)
    127                         color = selectedColor;
     162                        drawNode(n, selectedColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
    128163                else
    129                         color = nodeColor;
    130                 drawNode(n, color);
     164                        drawNode(n, nodeColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
    131165        }
    132166
     
    235269         * @param color The color of the node.
    236270         */
    237         public void drawNode(Node n, Color color) {
    238                 Point p = nc.getPoint(n.eastNorth);
    239         if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
    240 
    241         g.setColor(color);
    242 
    243         if (n.tagged) {
    244             g.drawRect(p.x, p.y, 0, 0);
    245             g.drawRect(p.x-2, p.y-2, 4, 4);
    246         } else {
    247             g.drawRect(p.x-1, p.y-1, 2, 2);
    248         }
     271        public void drawNode(Node n, Color color, int size, int radius, boolean fill) {
     272                if (size > 1) {
     273                        Point p = nc.getPoint(n.eastNorth);
     274                        if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth())
     275                                || (p.y > nc.getHeight()))
     276                                return;
     277                        g.setColor(color);
     278                        if (fill)
     279                                g.fillRect(p.x - radius, p.y - radius, size, size);
     280                        else
     281                                g.drawRect(p.x - radius, p.y - radius, size, size);
     282                }
    249283        }
    250284
Note: See TracChangeset for help on using the changeset viewer.