Changeset 3653 in josm


Ignore:
Timestamp:
Nov 14, 2010 5:54:23 PM (3 years ago)
Author:
bastiK
Message:

applied #5627 (patch by bilbo) - Speedup of node drawing

Location:
trunk/src/org/openstreetmap/josm
Files:
5 edited

Legend:

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

    r3430 r3653  
    234234 
    235235    public boolean isConnectionNode() { 
    236         return (OsmPrimitive.getFilteredList(getReferrers(), Way.class)).size() > 1; 
     236        return isReferredByWays(2); 
    237237    } 
    238238 
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java

    r3471 r3653  
    12861286    } 
    12871287 
     1288    /** 
     1289      Return true, if this primitive is referred by at least n ways 
     1290      @param n Minimal number of ways to return true. Must be positive 
     1291     */ 
     1292    public final boolean isReferredByWays(int n) { 
     1293        // Count only referrers that are members of the same dataset (primitive can have some fake references, for example 
     1294        // when way is cloned 
     1295        Object referrers = this.referrers; 
     1296        if (referrers == null) return false; 
     1297        checkDataset(); 
     1298        if (referrers instanceof OsmPrimitive) { 
     1299          return n<=1 && referrers instanceof Way && ((OsmPrimitive)referrers).dataSet == dataSet; 
     1300        } else { 
     1301          int counter=0; 
     1302          for (OsmPrimitive o : (OsmPrimitive[])referrers) { 
     1303            if (dataSet == o.dataSet && o instanceof Way) { 
     1304              if (++counter >= n)  
     1305                return true; 
     1306            } 
     1307          } 
     1308          return false; 
     1309        } 
     1310    } 
     1311 
     1312 
    12881313    /*----------------- 
    12891314     * OTHER METHODS 
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java

    r3329 r3653  
    111111    public void drawNode(Node n) { 
    112112        /* check, if the node is visible at all */ 
    113         if((n.getEastNorth().east()  > maxEN.east() ) || 
    114                 (n.getEastNorth().north() > maxEN.north()) || 
    115                 (n.getEastNorth().east()  < minEN.east() ) || 
    116                 (n.getEastNorth().north() < minEN.north())) 
     113        EastNorth en = n.getEastNorth(); 
     114        if((en.east()  > maxEN.east() ) || 
     115                (en.north() > maxEN.north()) || 
     116                (en.east()  < minEN.east() ) || 
     117                (en.north() < minEN.north())) 
    117118            return; 
    118119 
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java

    r3565 r3653  
    216216    public void drawNode(Node n, Color color, int size, boolean fill, String name) { 
    217217        if (size > 1) { 
     218            Point p = nc.getPoint(n); 
     219            if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return; 
    218220            int radius = size / 2; 
    219             Point p = nc.getPoint(n); 
    220             if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) 
    221                     || (p.y > nc.getHeight())) 
    222                 return; 
    223221 
    224222            if (inactive || n.isDisabled()) { 
     
    228226            } 
    229227            if (fill) { 
    230                 g.fillRect(p.x - radius, p.y - radius, size, size); 
    231                 g.drawRect(p.x - radius, p.y - radius, size, size); 
     228                g.fillRect(p.x - radius, p.y - radius, size + 1, size + 1); 
    232229            } else { 
    233230                g.drawRect(p.x - radius, p.y - radius, size, size); 
  • trunk/src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java

    r3291 r3653  
    3333 
    3434            Color color; 
     35            boolean isConnection = n.isConnectionNode(); 
    3536 
    3637            if (painter.isInactive() || n.isDisabled()) { 
     
    3839            } else if (selected) { 
    3940                color = member ? settings.getRelationSelectedColor() : settings.getSelectedColor(); 
    40             } else if (n.isConnectionNode()) { 
     41            } else if (isConnection) { 
    4142                if (n.isTagged()) { 
    4243                    color = settings.getTaggedConnectionColor(); 
     
    5455            final int size = max((selected ? settings.getSelectedNodeSize() : 0), 
    5556                                    (n.isTagged() ? settings.getTaggedNodeSize() : 0), 
    56                                     (n.isConnectionNode() ? settings.getConnectionNodeSize() : 0), 
     57                                    (isConnection ? settings.getConnectionNodeSize() : 0), 
    5758                                    settings.getUnselectedNodeSize()); 
    5859 
    5960            final boolean fill = (selected && settings.isFillSelectedNode()) || 
    6061                                    (n.isTagged() && settings.isFillTaggedNode()) || 
    61                                     (n.isConnectionNode() && settings.isFillConnectionNode()) || 
     62                                    (isConnection && settings.isFillConnectionNode()) || 
    6263                                    settings.isFillUnselectedNode(); 
    6364 
Note: See TracChangeset for help on using the changeset viewer.