Changeset 6162 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2013-08-20T18:29:49+02:00 (6 years ago)
Author:
bastiK
Message:

applied #8987 - immutable coordinates (patch by shinigami)

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

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java

    r6069 r6162  
    684684                Point p4 = mv.getPoint(newN2en);
    685685
    686                 EastNorth normalUnitVector = getNormalUniVector();
     686                Point2D normalUnitVector = getNormalUniVector();
    687687
    688688                if (mode == Mode.extrude || mode == Mode.create_new) {
     
    753753    }
    754754
    755     private EastNorth getNormalUniVector() {
    756         double fac = 1.0 / activeMoveDirection.en.distance(0,0);
     755    private Point2D getNormalUniVector() {
     756        double fac = 1.0 / activeMoveDirection.en.length();
    757757        // mult by factor to get unit vector.
    758         EastNorth normalUnitVector = new EastNorth(activeMoveDirection.en.getX() * fac, activeMoveDirection.en.getY() * fac);
     758        Point2D normalUnitVector = new Point2D.Double(activeMoveDirection.en.getX() * fac, activeMoveDirection.en.getY() * fac);
    759759
    760760        // Check to see if our new N1 is in a positive direction with respect to the normalUnitVector.
     
    762762        if (newN1en != null && ((newN1en.getX() > initialN1en.getX()) != (normalUnitVector.getX() > -0.0))) {
    763763            // If not, use a sign-flipped version of the normalUnitVector.
    764             normalUnitVector = new EastNorth(-normalUnitVector.getX(), -normalUnitVector.getY());
     764            normalUnitVector = new Point2D.Double(-normalUnitVector.getX(), -normalUnitVector.getY());
    765765        }
    766766
     
    771771    }
    772772
    773     private void drawAngleSymbol(Graphics2D g2, Point2D center, EastNorth normal, boolean mirror) {
     773    private void drawAngleSymbol(Graphics2D g2, Point2D center, Point2D normal, boolean mirror) {
    774774        // EastNorth units per pixel
    775775        double factor = 1.0/g2.getTransform().getScaleX();
  • trunk/src/org/openstreetmap/josm/command/Command.java

    r6084 r6162  
    1616
    1717import org.openstreetmap.josm.Main;
    18 import org.openstreetmap.josm.data.coor.LatLon;
    1918import org.openstreetmap.josm.data.osm.Node;
    2019import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    222221    private static boolean isOutlying(OsmPrimitive osm, Area area) {
    223222        if (osm instanceof Node && !osm.isNewOrUndeleted()) {
    224             LatLon coor = ((Node) osm).getCoor();
    225             return coor != null && !area.contains(coor);
     223            return !((Node) osm).getCoor().isIn(area);
    226224        } else if (osm instanceof Way) {
    227225            for (Node n : ((Way) osm).getNodes()) {
  • trunk/src/org/openstreetmap/josm/command/SequenceCommand.java

    r6142 r6162  
    77import java.util.Collection;
    88import java.util.HashSet;
    9 import java.util.List;
    109
    1110import javax.swing.Icon;
  • trunk/src/org/openstreetmap/josm/data/Bounds.java

    r6069 r6162  
    206206            LatLon result = new LatLon(minLat, minLon-360.0).getCenter(getMax());
    207207            if (result.lon() < -180.0) {
    208                 result.setLocation(result.lon()+360.0, result.lat());
     208                result = new LatLon(result.lat(), result.lon() + 360.0);
    209209            }
    210210            return result;
  • trunk/src/org/openstreetmap/josm/data/coor/CachedLatLon.java

    r6069 r6162  
    3333    }
    3434
    35     public final void setCoor(LatLon coor) {
    36         setLocation(coor.lon(), coor.lat());
    37         proj = null;
    38     }
    39 
    40     public final void setEastNorth(EastNorth eastNorth) {
    41         proj = Main.getProjection();
    42         this.eastNorth = eastNorth;
    43         LatLon l = proj.eastNorth2latlon(eastNorth);
    44         setLocation(l.lon(), l.lat());
    45     }
    46 
    4735    /**
    4836     * Replies the projected east/north coordinates.
  • trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java

    r6084 r6162  
    22package org.openstreetmap.josm.data.coor;
    33
    4 import java.awt.geom.Point2D;
    54import java.io.Serializable;
    65
     
    1716 * @author imi
    1817 */
    19 abstract class Coordinate extends Point2D implements Serializable {
     18abstract class Coordinate implements Serializable {
    2019
    21     protected double x;
    22     protected double y;
     20    protected final double x;
     21    protected final double y;
    2322
    2423    /**
     
    3231    }
    3332
    34     @Override
    3533    public double getX() {
    3634        return x;
    3735    }
    3836
    39     @Override
    4037    public double getY() {
    4138        return y;
    42     }
    43 
    44     @Override
    45     public void setLocation (double x, double y) {
    46         this.x = x;
    47         this.y = y;
    4839    }
    4940
  • trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java

    r6069 r6162  
    4444    }
    4545
    46     public double distance(EastNorth en2) {
    47         return Math.sqrt((this.x-en2.x)*(this.x-en2.x) + (this.y-en2.y)*(this.y-en2.y));
     46    /**
     47     * Counts euclidean distance between this and other EastNorth.
     48     *
     49     * @param en2 other EastNorth
     50     * @return distance between this and other EastNorth
     51     */
     52    public double distance(final EastNorth en2) {
     53        final double dx = this.x-en2.x;
     54        final double dy = this.y-en2.y;
     55        return Math.sqrt(dx*dx + dy*dy);
    4856    }
    4957
     58    /**
     59     * Counts square of euclidean distance between this and other EastNorth.
     60     *
     61     * @param en2 other EastNorth
     62     * @return square of distance between this and other EastNorth
     63     */
     64    public double distanceSq(final EastNorth en2) {
     65        final double dx = this.x-en2.x;
     66        final double dy = this.y-en2.y;
     67        return dx*dx + dy*dy;
     68    }
     69
     70    /**
     71     * Counts length (distance from [0,0]) of this.
     72     *
     73     * @return length of this
     74     */
     75    public double length(){
     76        return Math.sqrt(x*x + y*y);
     77    }
     78   
    5079    /**
    5180     * Returns the heading, in radians, that you have to use to get from
  • trunk/src/org/openstreetmap/josm/data/coor/LatLon.java

    r6069 r6162  
    1111import static org.openstreetmap.josm.tools.I18n.trc;
    1212
     13import java.awt.geom.Area;
    1314import java.text.DecimalFormat;
    1415import java.text.NumberFormat;
     
    219220    public boolean isWithin(Bounds b) {
    220221        return b.contains(this);
     222    }
     223
     224    /**
     225     * Check if this is contained in given area or area is null.
     226     *
     227     * @param a Area
     228     * @return <code>true</code> if this is contained in given area or area is null.
     229     */
     230    public boolean isIn(Area a) {
     231        return a == null || a.contains(x, y);
    221232    }
    222233
     
    284295    public LatLon getCenter(LatLon ll2) {
    285296        return new LatLon((this.lat() + ll2.lat())/2.0, (this.lon() + ll2.lon())/2.0);
     297    }
     298
     299    /**
     300     * Counts euclidean distance between this and other LatLon.
     301     *
     302     * @param ll2 other LatLon
     303     * @return distance between this and other LatLon
     304     */
     305   public double distance(final LatLon ll2) {
     306        final double dx = this.x-ll2.x;
     307        final double dy = this.y-ll2.y;
     308        return Math.sqrt(dx*dx + dy*dy);
    286309    }
    287310
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java

    r6122 r6162  
    13421342        boolean initial = true;
    13431343        for (Node n : w.getNodes()) {
    1344             Point2D p = n.getEastNorth();
     1344            EastNorth p = n.getEastNorth();
    13451345            if (p != null) {
    13461346                if (initial) {
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java

    r6104 r6162  
    1818import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
    1919import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
     20import org.openstreetmap.josm.data.coor.EastNorth;
    2021import org.openstreetmap.josm.data.osm.DataSet;
    2122import org.openstreetmap.josm.data.osm.Node;
     
    213214            boolean initial = true;
    214215            for (Node n : nodes) {
    215                 Point2D p = n.getEastNorth();
     216                EastNorth p = n.getEastNorth();
    216217                if (p != null) {
    217218                    if (initial) {
  • trunk/src/org/openstreetmap/josm/data/validation/tests/Coastlines.java

    r6093 r6162  
    150150                List<OsmPrimitive> highlight = new ArrayList<OsmPrimitive>();
    151151
    152                 if (headWays == 0 && (downloadedArea == null || downloadedArea.contains(head.getCoor()))) {
     152                if (headWays == 0 && head.getCoor().isIn(downloadedArea)) {
    153153                    highlight.add(head);
    154154                }
    155                 if (tailWays == 0 && (downloadedArea == null || downloadedArea.contains(tail.getCoor()))) {
     155                if (tailWays == 0 && tail.getCoor().isIn(downloadedArea)) {
    156156                    highlight.add(tail);
    157157                }
  • trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java

    r6106 r6162  
    293293
    294294            for (Node n : found_nodes) {
    295                 if (!nearby(n, dist) ||
    296                         (ds_area != null && !ds_area.contains(n.getCoor()))) {
     295                if (!nearby(n, dist) || !n.getCoor().isIn(ds_area)) {
    297296                    continue;
    298297                }
  • trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java

    r6070 r6162  
    341341
    342342    public final void setCoor(LatLon coor) {
    343         if(this.coor == null) {
    344             this.coor = new CachedLatLon(coor);
    345         } else {
    346             this.coor.setCoor(coor);
    347         }
     343        this.coor = new CachedLatLon(coor);
    348344    }
    349345
     
    353349
    354350    public final void setEastNorth(EastNorth eastNorth) {
    355         coor.setEastNorth(eastNorth);
     351        this.coor = new CachedLatLon(eastNorth);
    356352    }
    357353
Note: See TracChangeset for help on using the changeset viewer.