Ticket #9024: bbox2.diff

File bbox2.diff, 39.8 KB (added by shinigami, 11 years ago)

javadoc added

  • src/org/openstreetmap/josm/actions/JumpToAction.java

     
    126126        if(!url.hasFocus()) return;
    127127        Bounds b = OsmUrlToBounds.parse(url.getText());
    128128        if (b != null) {
    129             lat.setText(Double.toString((b.getMin().lat() + b.getMax().lat())/2));
    130             lon.setText(Double.toString((b.getMin().lon() + b.getMax().lon())/2));
     129            lat.setText(Double.toString((b.getMinLat() + b.getMaxLat())/2));
     130            lon.setText(Double.toString((b.getMinLon() + b.getMaxLon())/2));
    131131
    132132            int zoomLvl = 16;
    133133            String[] args = url.getText().substring(url.getText().indexOf('?')+1).split("&");
  • src/org/openstreetmap/josm/command/Command.java

     
    241241    }
    242242
    243243    private static boolean isOutlying(OsmPrimitive osm, Area area) {
    244         if (osm instanceof Node && !osm.isNewOrUndeleted()) {
     244        if (osm instanceof Node && !osm.isNewOrUndeleted())
    245245            return !((Node) osm).getCoor().isIn(area);
    246         } else if (osm instanceof Way) {
     246        else if (osm instanceof Way) {
    247247            for (Node n : ((Way) osm).getNodes()) {
    248                 if (isOutlying(n, area)) {
     248                if (isOutlying(n, area))
    249249                    return true;
    250                 }
    251250            }
    252251            return false;
    253252        }
  • src/org/openstreetmap/josm/data/Bounds.java

     
    88import java.text.MessageFormat;
    99
    1010import org.openstreetmap.josm.data.coor.LatLon;
     11import org.openstreetmap.josm.data.osm.BBox;
    1112import org.openstreetmap.josm.tools.CheckParameterUtil;
    1213
    1314/**
     
    2627        return new LatLon(minLat, minLon);
    2728    }
    2829
     30    /**
     31     * Returns min latitude of bounds. Efficient shortcut
     32     * for getMin().lat().
     33     *
     34     * @return min latitude of bounds.
     35     */
     36    public double getMinLat() {
     37        return minLat;
     38    }
     39
     40    /**
     41     * Returns min longitude of bounds. Efficient shortcut
     42     * for getMin().lon().
     43     *
     44     * @return min longitude of bounds.
     45     */
     46    public double getMinLon() {
     47        return minLon;
     48    }
     49
    2950    public LatLon getMax() {
    3051        return new LatLon(maxLat, maxLon);
    3152    }
    3253
     54    /**
     55     * Returns max latitude of bounds. Efficient shortcut
     56     * for getMax().lat().
     57     *
     58     * @return max latitude of bounds.
     59     */
     60    public double getMaxLat() {
     61        return maxLat;
     62    }
     63
     64    /**
     65     * Returns max longitude of bounds. Efficient shortcut
     66     * for getMax().lon().
     67     *
     68     * @return max longitude of bounds.
     69     */
     70    public double getMaxLon() {
     71        return maxLon;
     72    }
     73
    3374    public enum ParseMethod {
    3475        MINLAT_MINLON_MAXLAT_MAXLON,
    3576        LEFT_BOTTOM_RIGHT_TOP
    3677    }
    3778
    3879    /**
    39      * Construct bounds out of two points
     80     * Construct bounds out of two points. Coords will be rounded.
    4081     */
    4182    public Bounds(LatLon min, LatLon max) {
    4283        this(min.lat(), min.lon(), max.lat(), max.lon());
     
    5192    }
    5293
    5394    public Bounds(LatLon b, boolean roundToOsmPrecision) {
     95        this(b.lat(), b.lon(), roundToOsmPrecision);
     96    }
     97   
     98    /**
     99     * Single point Bounds defined by point [lat,lon].
     100     * Coordinates will be rounded to osm precision if <code>roundToOsmPrecision</code> is true.
     101     *
     102     * @param lat latitude of given point.
     103     * @param lon longitude of given point.
     104     * @param roundToOsmPrecision defines if lat/lon will be rounded.
     105     */
     106    public Bounds(double lat, double lon, boolean roundToOsmPrecision) {
    54107        // Do not call this(b, b) to avoid GPX performance issue (see #7028) until roundToOsmPrecision() is improved
    55108        if (roundToOsmPrecision) {
    56             this.minLat = LatLon.roundToOsmPrecision(b.lat());
    57             this.minLon = LatLon.roundToOsmPrecision(b.lon());
     109            this.minLat = LatLon.roundToOsmPrecision(lat);
     110            this.minLon = LatLon.roundToOsmPrecision(lon);
    58111        } else {
    59             this.minLat = b.lat();
    60             this.minLon = b.lon();
     112            this.minLat = lat;
     113            this.minLon = lon;
    61114        }
    62115        this.maxLat = this.minLat;
    63116        this.maxLon = this.minLon;
     
    152205        return roundToOsmPrecision ? LatLon.roundToOsmPrecision(value) : value;
    153206    }
    154207
    155     public Bounds(Bounds other) {
    156         this(other.getMin(), other.getMax());
     208    public Bounds(final Bounds other) {
     209        this(other.minLat, other.minLon, other.maxLat, other.maxLon);
    157210    }
    158211
    159212    public Bounds(Rectangle2D rect) {
     
    185238        this.maxLon = LatLon.roundToOsmPrecision(LatLon.toIntervalLon(center.lon() + lonExtent / 2));
    186239    }
    187240
     241    /**
     242     * Created BBox with same coordinates.
     243     *
     244     * @return BBox with same coordinates.
     245     */
     246    public BBox toBBox(){
     247        return new BBox(minLon, minLat, maxLon, maxLat);
     248    }
     249   
    188250    @Override public String toString() {
    189251        return "Bounds["+minLat+","+minLon+","+maxLat+","+maxLon+"]";
    190252    }
     
    202264     */
    203265    public LatLon getCenter()
    204266    {
    205         if (crosses180thMeridian()) {
    206             LatLon result = new LatLon(minLat, minLon-360.0).getCenter(getMax());
    207             if (result.lon() < -180.0) {
    208                 result = new LatLon(result.lat(), result.lon() + 360.0);
     267        if (crosses180thMeridian()) {           
     268            double lat = (minLat + maxLat) / 2;
     269            double lon = (minLon + maxLon - 360.0) / 2;
     270            if (lon < -180.0){
     271                lon += 360.0;
    209272            }
    210             return result;
     273            return new LatLon(lat, lon);
    211274        } else {
    212             return getMin().getCenter(getMax());
     275            return new LatLon((minLat + maxLat) / 2, (minLon + maxLon) / 2);
    213276        }
    214277    }
    215278
     
    217280     * Extend the bounds if necessary to include the given point.
    218281     */
    219282    public void extend(LatLon ll) {
    220         if (ll.lat() < minLat) {
    221             minLat = LatLon.roundToOsmPrecision(ll.lat());
     283        extend(ll.lat(), ll.lon());
     284    }
     285   
     286    /**
     287     * Extend the bounds if necessary to include the given point [lat,lon].
     288     * Good to use if you know coordinates to avoid creation of LatLon object.
     289     */
     290    public void extend(final double lat, final double lon) {
     291        if (lat < minLat) {
     292            minLat = LatLon.roundToOsmPrecision(lat);
    222293        }
    223         if (ll.lat() > maxLat) {
    224             maxLat = LatLon.roundToOsmPrecision(ll.lat());
     294        if (lat > maxLat) {
     295            maxLat = LatLon.roundToOsmPrecision(lat);
    225296        }
    226297        if (crosses180thMeridian()) {
    227             if (ll.lon() > maxLon && ll.lon() < minLon) {
    228                 if (Math.abs(ll.lon() - minLon) <= Math.abs(ll.lon() - maxLon)) {
    229                     minLon = LatLon.roundToOsmPrecision(ll.lon());
     298            if (lon > maxLon && lon < minLon) {
     299                if (Math.abs(lon - minLon) <= Math.abs(lon - maxLon)) {
     300                    minLon = LatLon.roundToOsmPrecision(lon);
    230301                } else {
    231                     maxLon = LatLon.roundToOsmPrecision(ll.lon());
     302                    maxLon = LatLon.roundToOsmPrecision(lon);
    232303                }
    233304            }
    234305        } else {
    235             if (ll.lon() < minLon) {
    236                 minLon = LatLon.roundToOsmPrecision(ll.lon());
     306            if (lon < minLon) {
     307                minLon = LatLon.roundToOsmPrecision(lon);
    237308            }
    238             if (ll.lon() > maxLon) {
    239                 maxLon = LatLon.roundToOsmPrecision(ll.lon());
     309            if (lon > maxLon) {
     310                maxLon = LatLon.roundToOsmPrecision(lon);
    240311            }
    241312        }
    242313    }
    243314
    244315    public void extend(Bounds b) {
    245         extend(b.getMin());
    246         extend(b.getMax());
     316        extend(b.minLat, b.minLon);
     317        extend(b.maxLat, b.maxLon);
    247318    }
    248319
    249320    /**
     
    323394     * @return true, if this bounds are <em>collapsed</em>
    324395     */
    325396    public boolean isCollapsed() {
    326         return getMin().equals(getMax());
     397        return (minLat == maxLat) && (minLon == maxLon);
     398        //return getMin().equals(getMax());
    327399    }
    328400
    329401    public boolean isOutOfTheWorld() {
  • src/org/openstreetmap/josm/data/coor/Coordinate.java

     
    33
    44import java.io.Serializable;
    55
     6import org.openstreetmap.josm.data.osm.BBox;
     7
    68/**
    79 * Base class of points of both coordinate systems.
    810 *
     
    8890        return dx*dx + dy*dy;
    8991    }
    9092
     93    /**
     94     * Converts to single point BBox.
     95     *
     96     * @return single point BBox defined by this coordinate.
     97     */
     98    public BBox toBBox(){
     99        return new BBox(x, y);
     100    }
     101   
     102    /**
     103     * Creates bbox around this coordinate. Coordinate defines
     104     * center of bbox, its edge will be 2*r.
     105     *
     106     * @param r size
     107     * @return BBox around this coordinate
     108     */
     109    public BBox toBBox(final double r){
     110        return new BBox(x - r, y - r, x + r, y + r);
     111    }
     112   
     113
    91114    @Override
    92115    public int hashCode() {
    93116        final int prime = 31;
  • src/org/openstreetmap/josm/data/coor/LatLon.java

     
    215215     */
    216216    public boolean isOutSideWorld() {
    217217        Bounds b = Main.getProjection().getWorldBoundsLatLon();
    218         return lat() < b.getMin().lat() || lat() > b.getMax().lat() ||
    219                 lon() < b.getMin().lon() || lon() > b.getMax().lon();
     218        return lat() < b.getMinLat() || lat() > b.getMaxLat() ||
     219                lon() < b.getMinLon() || lon() > b.getMaxLon();
    220220    }
    221221
    222222    /**
  • src/org/openstreetmap/josm/data/gpx/WayPoint.java

     
    5050     * We "inline" lat/lon, rather than usinga LatLon internally => reduces memory overhead. Relevant
    5151     * because a lot of GPX waypoints are created when GPS tracks are downloaded from the OSM server.
    5252     */
    53     private double lat = 0;
    54     private double lon = 0;
     53    private final double lat;
     54    private final double lon;
    5555
    5656    /*
    5757     * internal cache of projected coordinates
  • src/org/openstreetmap/josm/data/osm/BBox.java

     
    33
    44import java.util.Arrays;
    55
    6 import org.openstreetmap.josm.data.Bounds;
    76import org.openstreetmap.josm.data.coor.LatLon;
    87import org.openstreetmap.josm.data.coor.QuadTiling;
    98import org.openstreetmap.josm.tools.Utils;
     
    1514    private double ymin = Double.POSITIVE_INFINITY;
    1615    private double ymax = Double.NEGATIVE_INFINITY;
    1716
    18     public BBox(Bounds bounds) {
    19         add(bounds.getMin());
    20         add(bounds.getMax());
     17    /**
     18     * Single point bbox.
     19     *
     20     * @param x
     21     * @param y
     22     */
     23    public BBox(final double x, final double y) {
     24        xmax = xmin = x;
     25        ymax = ymin = y;
     26        sanity();
    2127    }
    2228
     29    /**
     30     * Creates BBox defined by points <code>[lat1,lon1]</code> and <code>[la2,lon2]</code>.
     31     * Result is minimal BBox containing both points.
     32     *
     33     * @param lat1 lat of first point.
     34     * @param lon1 lon of first point.
     35     * @param lat2 lat of second point.
     36     * @param lon2 lon of second point.
     37     *
     38     * @return BBox defined by given points.
     39     */
     40    public static BBox fromLatLonPair(final double lat1, final double lon1, final double lat2, final double lon2){
     41        return new BBox(lon1, lat1, lon2, lat2);
     42    }
     43
     44    /**
     45     * BBox defined by points <code>a</code> and <code>b</code>.
     46     * Result is minimal BBox containing both points.
     47     *
     48     * @param a
     49     * @param b
     50     */
    2351    public BBox(LatLon a, LatLon b) {
    24         add(a);
    25         add(b);
     52        this(a.lon(), a.lat(), b.lon(), b.lat());
    2653    }
    2754
    2855    public BBox(BBox copy) {
     
    3360    }
    3461
    3562    public BBox(double a_x, double a_y, double b_x, double b_y)  {
    36         xmin = Math.min(a_x, b_x);
    37         xmax = Math.max(a_x, b_x);
    38         ymin = Math.min(a_y, b_y);
    39         ymax = Math.max(a_y, b_y);
     63       
     64        if (a_x > b_x){
     65            xmax = a_x;
     66            xmin = b_x;
     67        }
     68        else {
     69            xmax = b_x;
     70            xmin = a_x;           
     71        }
     72       
     73        if (a_y > b_y){
     74            ymax = a_y;
     75            ymin = b_y;
     76        }
     77        else {
     78            ymax = b_y;
     79            ymin = a_y;           
     80        }
     81       
     82       
    4083        sanity();
    4184    }
    4285
     
    83126     * Extends this bbox to include the point (x, y)
    84127     */
    85128    public void add(double x, double y) {
    86         xmin = Math.min(xmin, x);
    87         xmax = Math.max(xmax, x);
    88         ymin = Math.min(ymin, y);
    89         ymax = Math.max(ymax, y);
     129       
     130        if (x < xmin){
     131            xmin = x;
     132        }
     133        else if (x > xmax){
     134            xmax = x;
     135        }
     136       
     137        if (y < ymin){
     138            ymin = y;
     139        }
     140        else if (y > ymax){
     141            ymax = y;
     142        }
     143
    90144        sanity();
    91145    }
    92146
    93147    public void add(BBox box) {
    94         add(box.getTopLeft());
    95         add(box.getBottomRight());
     148        xmin = Math.min(xmin, box.xmin);
     149        xmax = Math.max(xmax, box.xmax);
     150        ymin = Math.min(ymin, box.ymin);
     151        ymax = Math.max(ymax, box.ymax);
     152        sanity();
    96153    }
    97154
    98155    public void addPrimitive(OsmPrimitive primitive, double extraSpace) {
     
    154211        return new LatLon(ymax, xmin);
    155212    }
    156213
     214    public double getTopLeftLat() {
     215        return ymax;
     216    }
     217
     218    public double getTopLeftLon() {
     219        return xmin;
     220    }
     221
    157222    public LatLon getBottomRight() {
    158223        return new LatLon(ymin, xmax);
    159224    }
    160225
     226    public double getBottomRightLat() {
     227        return ymin;
     228    }
     229
     230    public double getBottomRightLon() {
     231        return xmax;
     232    }
     233
    161234    public LatLon getCenter() {
    162235        return new LatLon(ymin + (ymax-ymin)/2.0, xmin + (xmax-xmin)/2.0);
    163236    }
  • src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java

     
    8080            if (!n.isIncomplete() && !n.isDeleted()) {
    8181                LatLon c = n.getCoor();
    8282                if (c != null) {
    83                     BBox box = new BBox(new LatLon(c.lat() - 0.0001, c.lon() - 0.0001), new LatLon(c.lat() + 0.0001, c.lon() + 0.0001));
     83                    BBox box = c.toBBox(0.0001);
    8484                    if (!dataSet.searchNodes(box).contains(n)) {
    8585                        printError("SEARCH NODES", "%s not found using Dataset.searchNodes()", n);
    8686                    }
  • src/org/openstreetmap/josm/data/osm/QuadBuckets.java

     
    116116            LatLon bottom_left = this.coor();
    117117            double lat = bottom_left.lat() + parent.height() / 2;
    118118            double lon = bottom_left.lon() + parent.width() / 2;
    119             LatLon top_right = new LatLon(lat, lon);
    120             return new BBox(bottom_left, top_right);
     119            return BBox.fromLatLonPair(bottom_left.lat(),bottom_left.lon(), lat, lon);
    121120        }
    122121
    123122        QBLevel<T> findBucket(BBox bbox) {
  • src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java

     
    14031403    @Override
    14041404    public void render(final DataSet data, boolean renderVirtualNodes, Bounds bounds) {
    14051405        //long start = System.currentTimeMillis();
    1406         BBox bbox = new BBox(bounds);
     1406        BBox bbox = bounds.toBBox();
    14071407        getSettings(renderVirtualNodes);
    14081408
    14091409        boolean drawArea = circum <= Main.pref.getInteger("mappaint.fillareas", 10000000);
  • src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java

     
    156156    @SuppressWarnings("unchecked")
    157157    @Override
    158158    public void render(DataSet data, boolean virtual, Bounds bounds) {
    159         BBox bbox = new BBox(bounds);
     159        BBox bbox = bounds.toBBox();
    160160        this.ds = data;
    161161        getSettings(virtual);
    162162
  • src/org/openstreetmap/josm/data/projection/CustomProjection.java

     
    123123            datum = WGS84Datum.INSTANCE;
    124124            proj = new Mercator();
    125125            bounds = new Bounds(
    126                     new LatLon(-85.05112877980659, -180.0),
    127                     new LatLon(85.05112877980659, 180.0), true);
     126                    -85.05112877980659, -180.0,
     127                    85.05112877980659, 180.0, true);
    128128        } else {
    129129            Map<String, String> parameters = parseParameterList(pref);
    130130            ellps = parseEllipsoid(parameters);
  • src/org/openstreetmap/josm/gui/BookmarkList.java

     
    183183            Bookmark b = (Bookmark)o;
    184184            array[0] = b.getName();
    185185            Bounds area = b.getArea();
    186             array[1] = String.valueOf(area.getMin().lat());
    187             array[2] = String.valueOf(area.getMin().lon());
    188             array[3] = String.valueOf(area.getMax().lat());
    189             array[4] = String.valueOf(area.getMax().lon());
     186            array[1] = String.valueOf(area.getMinLat());
     187            array[2] = String.valueOf(area.getMinLon());
     188            array[3] = String.valueOf(area.getMaxLat());
     189            array[4] = String.valueOf(area.getMaxLon());
    190190            coll.add(Arrays.asList(array));
    191191        }
    192192        Main.pref.putArray("bookmarks", coll);
     
    216216            Bounds area = b.getArea();
    217217            StringBuffer sb = new StringBuffer();
    218218            sb.append("<html>min[latitude,longitude]=<strong>[")
    219             .append(area.getMin().lat()).append(",").append(area.getMin().lon()).append("]</strong>")
     219            .append(area.getMinLat()).append(",").append(area.getMinLon()).append("]</strong>")
    220220            .append("<br>")
    221221            .append("max[latitude,longitude]=<strong>[")
    222             .append(area.getMax().lat()).append(",").append(area.getMax().lon()).append("]</strong>")
     222            .append(area.getMaxLat()).append(",").append(area.getMaxLon()).append("]</strong>")
    223223            .append("</html>");
    224224            return sb.toString();
    225225
  • src/org/openstreetmap/josm/gui/MapView.java

     
    635635        // draw world borders
    636636        tempG.setColor(Color.WHITE);
    637637        Bounds b = getProjection().getWorldBoundsLatLon();
    638         double lat = b.getMin().lat();
    639         double lon = b.getMin().lon();
     638        double lat = b.getMinLat();
     639        double lon = b.getMinLon();
    640640
    641641        Point p = getPoint(b.getMin());
    642642
     
    655655            p = getPoint(new LatLon(lat, lon >= max ? max : lon));
    656656            path.lineTo(p.x, p.y);
    657657        }
    658         lon = max; max = b.getMin().lat();
     658        lon = max; max = b.getMinLat();
    659659        for(; lat >= max; lat -= 1.0)
    660660        {
    661661            p = getPoint(new LatLon(lat <= max ? max : lat, lon));
    662662            path.lineTo(p.x, p.y);
    663663        }
    664         lat = max; max = b.getMin().lon();
     664        lat = max; max = b.getMinLon();
    665665        for(; lon >= max; lon -= 1.0)
    666666        {
    667667            p = getPoint(new LatLon(lat, lon <= max ? max : lon));
  • src/org/openstreetmap/josm/gui/NavigatableComponent.java

     
    200200
    201201    private EastNorth calculateDefaultCenter() {
    202202        Bounds b = Main.getProjection().getWorldBoundsLatLon();
    203         double lat = (b.getMax().lat() + b.getMin().lat())/2;
    204         double lon = (b.getMax().lon() + b.getMin().lon())/2;
    205 
     203        double lat = (b.getMaxLat() + b.getMinLat())/2;
     204        double lon = (b.getMaxLon() + b.getMinLon())/2;
     205        // is it correct? b.getCenter() makes some adjustments...
    206206        return Main.getProjection().latlon2eastNorth(new LatLon(lat, lon));
    207207    }
    208208
     
    400400        boolean changed = false;
    401401        double lat = cl.lat();
    402402        double lon = cl.lon();
    403         if(lat < b.getMin().lat()) {changed = true; lat = b.getMin().lat(); }
    404         else if(lat > b.getMax().lat()) {changed = true; lat = b.getMax().lat(); }
    405         if(lon < b.getMin().lon()) {changed = true; lon = b.getMin().lon(); }
    406         else if(lon > b.getMax().lon()) {changed = true; lon = b.getMax().lon(); }
     403        if(lat < b.getMinLat()) {changed = true; lat = b.getMinLat(); }
     404        else if(lat > b.getMaxLat()) {changed = true; lat = b.getMaxLat(); }
     405        if(lon < b.getMinLon()) {changed = true; lon = b.getMinLon(); }
     406        else if(lon > b.getMaxLon()) {changed = true; lon = b.getMaxLon(); }
    407407        if(changed) {
    408408            newCenter = Projections.project(new LatLon(lat,lon));
    409409        }
    410410        int width = getWidth()/2;
    411411        int height = getHeight()/2;
    412         LatLon l1 = new LatLon(b.getMin().lat(), lon);
    413         LatLon l2 = new LatLon(b.getMax().lat(), lon);
     412        LatLon l1 = new LatLon(b.getMinLat(), lon);
     413        LatLon l2 = new LatLon(b.getMaxLat(), lon);
    414414        EastNorth e1 = getProjection().latlon2eastNorth(l1);
    415415        EastNorth e2 = getProjection().latlon2eastNorth(l2);
    416416        double d = e2.north() - e1.north();
    417417        if(d < height*newScale)
    418418        {
    419419            double newScaleH = d/height;
    420             e1 = getProjection().latlon2eastNorth(new LatLon(lat, b.getMin().lon()));
    421             e2 = getProjection().latlon2eastNorth(new LatLon(lat, b.getMax().lon()));
     420            e1 = getProjection().latlon2eastNorth(new LatLon(lat, b.getMinLon()));
     421            e2 = getProjection().latlon2eastNorth(new LatLon(lat, b.getMaxLon()));
    422422            d = e2.east() - e1.east();
    423423            if(d < width*newScale) {
    424424                newScale = Math.max(newScaleH, d/width);
  • src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java

     
    352352     */
    353353    @Override
    354354    public void setBoundingBox(Bounds bbox) {
    355         if (bbox == null || (bbox.getMin().lat() == 0.0 && bbox.getMin().lon() == 0.0
    356                 && bbox.getMax().lat() == 0.0 && bbox.getMax().lon() == 0.0)) {
     355        if (bbox == null || (bbox.getMinLat() == 0.0 && bbox.getMinLon() == 0.0
     356                && bbox.getMaxLat() == 0.0 && bbox.getMaxLon() == 0.0)) {
    357357            this.bbox = null;
    358358            iSelectionRectStart = null;
    359359            iSelectionRectEnd = null;
     
    362362        }
    363363
    364364        this.bbox = bbox;
    365         double minLon = bbox.getMin().lon();
    366         double maxLon = bbox.getMax().lon();
     365        double minLon = bbox.getMinLon();
     366        double maxLon = bbox.getMaxLon();
    367367
    368368        if (bbox.crosses180thMeridian()) {
    369369            minLon -= 360.0;
    370370        }
    371371
    372         int y1 = OsmMercator.LatToY(bbox.getMin().lat(), MAX_ZOOM);
    373         int y2 = OsmMercator.LatToY(bbox.getMax().lat(), MAX_ZOOM);
     372        int y1 = OsmMercator.LatToY(bbox.getMinLat(), MAX_ZOOM);
     373        int y2 = OsmMercator.LatToY(bbox.getMaxLat(), MAX_ZOOM);
    374374        int x1 = OsmMercator.LonToX(minLon, MAX_ZOOM);
    375375        int x2 = OsmMercator.LonToX(maxLon, MAX_ZOOM);
    376376
     
    378378        iSelectionRectEnd = new Point(Math.max(x1, x2), Math.max(y1, y2));
    379379
    380380        // calc the screen coordinates for the new selection rectangle
    381         MapMarkerDot xmin_ymin = new MapMarkerDot(bbox.getMin().lat(), bbox.getMin().lon());
    382         MapMarkerDot xmax_ymax = new MapMarkerDot(bbox.getMax().lat(), bbox.getMax().lon());
     381        MapMarkerDot xmin_ymin = new MapMarkerDot(bbox.getMinLat(), bbox.getMinLon());
     382        MapMarkerDot xmax_ymax = new MapMarkerDot(bbox.getMaxLat(), bbox.getMaxLon());
    383383
    384384        Vector<MapMarker> marker = new Vector<MapMarker>(2);
    385385        marker.add(xmin_ymin);
  • src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java

     
    152152        if (bbox == null) return;
    153153
    154154        // calc the screen coordinates for the new selection rectangle
    155         MapMarkerDot xmin_ymin = new MapMarkerDot(bbox.getMin().lat(), bbox.getMin().lon());
    156         MapMarkerDot xmax_ymax = new MapMarkerDot(bbox.getMax().lat(), bbox.getMax().lon());
     155        MapMarkerDot xmin_ymin = new MapMarkerDot(bbox.getMinLat(), bbox.getMinLon());
     156        MapMarkerDot xmax_ymax = new MapMarkerDot(bbox.getMaxLat(), bbox.getMaxLon());
    157157
    158158        Vector<MapMarker> marker = new Vector<MapMarker>(2);
    159159        marker.add(xmin_ymin);
     
    341341            TileBounds tb = new TileBounds();
    342342            tb.zoomLevel = (Integer) spZoomLevel.getValue();
    343343            tb.min = new Point(
    344                     Math.max(0,lonToTileX(tb.zoomLevel, bbox.getMin().lon())),
    345                     Math.max(0,latToTileY(tb.zoomLevel, bbox.getMax().lat()-.00001))
     344                    Math.max(0,lonToTileX(tb.zoomLevel, bbox.getMinLon())),
     345                    Math.max(0,latToTileY(tb.zoomLevel, bbox.getMaxLat() - 0.00001))
    346346            );
    347347            tb.max = new Point(
    348                     Math.max(0,lonToTileX(tb.zoomLevel, bbox.getMax().lon())),
    349                     Math.max(0,latToTileY(tb.zoomLevel, bbox.getMin().lat()-.00001))
     348                    Math.max(0,lonToTileX(tb.zoomLevel, bbox.getMaxLon())),
     349                    Math.max(0,latToTileY(tb.zoomLevel, bbox.getMinLat() - 0.00001))
    350350            );
    351351            doFireTileBoundChanged = false;
    352352            setTileBounds(tb);
     
    681681                min = null;
    682682                max = null;
    683683            } else {
    684                 int y1 = OsmMercator.LatToY(bbox.getMin().lat(), MAX_ZOOM);
    685                 int y2 = OsmMercator.LatToY(bbox.getMax().lat(), MAX_ZOOM);
    686                 int x1 = OsmMercator.LonToX(bbox.getMin().lon(), MAX_ZOOM);
    687                 int x2 = OsmMercator.LonToX(bbox.getMax().lon(), MAX_ZOOM);
     684                int y1 = OsmMercator.LatToY(bbox.getMinLat(), MAX_ZOOM);
     685                int y2 = OsmMercator.LatToY(bbox.getMaxLat(), MAX_ZOOM);
     686                int x1 = OsmMercator.LonToX(bbox.getMinLon(), MAX_ZOOM);
     687                int x2 = OsmMercator.LonToX(bbox.getMaxLon(), MAX_ZOOM);
    688688
    689689                min = new Point(Math.min(x1, x2), Math.min(y1, y2));
    690690                max = new Point(Math.max(x1, x2), Math.max(y1, y2));
  • src/org/openstreetmap/josm/gui/download/BookmarkSelection.java

     
    2222
    2323import org.openstreetmap.josm.Main;
    2424import org.openstreetmap.josm.data.Bounds;
    25 import org.openstreetmap.josm.data.osm.BBox;
    2625import org.openstreetmap.josm.gui.BookmarkList;
    2726import org.openstreetmap.josm.gui.BookmarkList.Bookmark;
    2827import org.openstreetmap.josm.gui.JMultilineLabel;
     
    153152            lblCurrentDownloadArea.setText(tr("<html>There is currently no download area selected.</html>"));
    154153        } else {
    155154            lblCurrentDownloadArea.setText(tr("<html><strong>Current download area</strong> (minlon, minlat, maxlon, maxlat): </html>"));
    156             bboxDisplay.setText(new BBox(currentArea).toStringCSV(","));
     155            bboxDisplay.setText(currentArea.toBBox().toStringCSV(","));
    157156        }
    158157    }
    159158
  • src/org/openstreetmap/josm/gui/download/PlaceSelection.java

     
    241241                    currentResult.lon = Double.parseDouble(atts.getValue("lon"));
    242242                    String[] bbox = atts.getValue("boundingbox").split(",");
    243243                    currentResult.bounds = new Bounds(
    244                             new LatLon(Double.parseDouble(bbox[0]), Double.parseDouble(bbox[2])),
    245                             new LatLon(Double.parseDouble(bbox[1]), Double.parseDouble(bbox[3])));
     244                            Double.parseDouble(bbox[0]), Double.parseDouble(bbox[2]),
     245                            Double.parseDouble(bbox[1]), Double.parseDouble(bbox[3]));
    246246                    data.add(currentResult);
    247247                }
    248248            } catch (NumberFormatException x) {
  • src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java

     
    398398                        if (defaultTable.getSelectionModel().isSelectedIndex(i)) {
    399399                            if (!mapRectangles.containsKey(i)) {
    400400                                // Add new map rectangle
    401                                 Coordinate topLeft = new Coordinate(bounds.getMax().lat(), bounds.getMin().lon());
    402                                 Coordinate bottomRight = new Coordinate(bounds.getMin().lat(), bounds.getMax().lon());
     401                                Coordinate topLeft = new Coordinate(bounds.getMaxLat(), bounds.getMinLon());
     402                                Coordinate bottomRight = new Coordinate(bounds.getMinLat(), bounds.getMaxLon());
    403403                                MapRectangle rectangle = new MapRectangleImpl(topLeft, bottomRight);
    404404                                mapRectangles.put(i, rectangle);
    405405                                defaultMap.addMapRectangle(rectangle);
  • src/org/openstreetmap/josm/io/BoundingBoxDownloader.java

     
    2525    protected final boolean crosses180th;
    2626
    2727    public BoundingBoxDownloader(Bounds downloadArea) {
    28         this.lat1 = downloadArea.getMin().lat();
    29         this.lon1 = downloadArea.getMin().lon();
    30         this.lat2 = downloadArea.getMax().lat();
    31         this.lon2 = downloadArea.getMax().lon();
     28        this.lat1 = downloadArea.getMinLat();
     29        this.lon1 = downloadArea.getMinLon();
     30        this.lat2 = downloadArea.getMaxLat();
     31        this.lon2 = downloadArea.getMaxLon();
    3232        this.crosses180th = downloadArea.crosses180thMeridian();
    3333    }
    3434
  • src/org/openstreetmap/josm/io/GpxWriter.java

     
    156156
    157157        Bounds bounds = data.recalculateBounds();
    158158        if (bounds != null) {
    159             String b = "minlat=\"" + bounds.getMin().lat() + "\" minlon=\"" + bounds.getMin().lon() +
    160             "\" maxlat=\"" + bounds.getMax().lat() + "\" maxlon=\"" + bounds.getMax().lon() + "\"" ;
     159            String b = "minlat=\"" + bounds.getMinLat() + "\" minlon=\"" + bounds.getMinLon() +
     160            "\" maxlat=\"" + bounds.getMaxLat() + "\" maxlon=\"" + bounds.getMaxLon() + "\"" ;
    161161            inline("bounds", b);
    162162        }
    163163
  • src/org/openstreetmap/josm/io/OsmWriter.java

     
    162162    public void writeDataSources(DataSet ds) {
    163163        for (DataSource s : ds.dataSources) {
    164164            out.println("  <bounds minlat='"
    165                     + s.bounds.getMin().lat()+"' minlon='"
    166                     + s.bounds.getMin().lon()+"' maxlat='"
    167                     + s.bounds.getMax().lat()+"' maxlon='"
    168                     + s.bounds.getMax().lon()
     165                    + s.bounds.getMinLat()+"' minlon='"
     166                    + s.bounds.getMinLon()+"' maxlat='"
     167                    + s.bounds.getMaxLat()+"' maxlon='"
     168                    + s.bounds.getMaxLon()
    169169                    +"' origin='"+XmlWriter.encode(s.origin)+"' />");
    170170        }
    171171    }
  • src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

     
    158158            });
    159159        }
    160160
    161         final Bounds bbox = new Bounds(new LatLon(minlat, minlon), new LatLon(maxlat, maxlon));
     161        final Bounds bbox = new Bounds(minlat, minlon, maxlat, maxlon);
    162162        if (args.containsKey("select") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
    163163            // select objects after downloading, zoom to selection.
    164164            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
  • src/org/openstreetmap/josm/tools/OsmUrlToBounds.java

     
    4949            if (map.containsKey("bbox")) {
    5050                String[] bbox = map.get("bbox").split(",");
    5151                b = new Bounds(
    52                         new LatLon(Double.parseDouble(bbox[1]), Double.parseDouble(bbox[0])),
    53                         new LatLon(Double.parseDouble(bbox[3]), Double.parseDouble(bbox[2])));
     52                        Double.parseDouble(bbox[1]), Double.parseDouble(bbox[0]),
     53                        Double.parseDouble(bbox[3]), Double.parseDouble(bbox[2]));
    5454            } else if (map.containsKey("minlat")) {
    55                 String s = map.get("minlat");
    56                 Double minlat = Double.parseDouble(s);
    57                 s = map.get("minlon");
    58                 Double minlon = Double.parseDouble(s);
    59                 s = map.get("maxlat");
    60                 Double maxlat = Double.parseDouble(s);
    61                 s = map.get("maxlon");
    62                 Double maxlon = Double.parseDouble(s);
    63                 b = new Bounds(new LatLon(minlat, minlon), new LatLon(maxlat, maxlon));
     55                double minlat = Double.parseDouble(map.get("minlat"));
     56                double minlon = Double.parseDouble(map.get("minlon"));
     57                double maxlat = Double.parseDouble(map.get("maxlat"));
     58                double maxlon = Double.parseDouble(map.get("maxlon"));
     59                b = new Bounds(minlat, minlon, maxlat, maxlon);
    6460            } else {
    6561                String z = map.get("zoom");
    6662                b = positionToBounds(parseDouble(map, "lat"),
     
    233229     */
    234230    static public int getZoom(Bounds b) {
    235231        // convert to mercator (for calculation of zoom only)
    236         double latMin = Math.log(Math.tan(Math.PI/4.0+b.getMin().lat()/180.0*Math.PI/2.0))*180.0/Math.PI;
    237         double latMax = Math.log(Math.tan(Math.PI/4.0+b.getMax().lat()/180.0*Math.PI/2.0))*180.0/Math.PI;
    238         double size = Math.max(Math.abs(latMax-latMin), Math.abs(b.getMax().lon()-b.getMin().lon()));
     232        double latMin = Math.log(Math.tan(Math.PI/4.0+b.getMinLat()/180.0*Math.PI/2.0))*180.0/Math.PI;
     233        double latMax = Math.log(Math.tan(Math.PI/4.0+b.getMaxLat()/180.0*Math.PI/2.0))*180.0/Math.PI;
     234        double size = Math.max(Math.abs(latMax-latMin), Math.abs(b.getMaxLon()-b.getMinLon()));
    239235        int zoom = 0;
    240236        while (zoom <= 20) {
    241237            if (size >= 180) {
  • test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java

     
    102102                lat = prev.ll.lat();
    103103                lon = prev.ll.lon();
    104104            } else {
    105                 lat = b.getMin().lat() + rand.nextDouble() * (b.getMax().lat() - b.getMin().lat());
    106                 lon = b.getMin().lon() + rand.nextDouble() * (b.getMax().lon() - b.getMin().lon());
     105                lat = b.getMinLat() + rand.nextDouble() * (b.getMaxLat() - b.getMinLat());
     106                lon = b.getMinLon() + rand.nextDouble() * (b.getMaxLon() - b.getMinLon());
    107107            }
    108108            EastNorth en = proj.latlon2eastNorth(new LatLon(lat, lon));
    109109            LatLon ll2 = proj.eastNorth2latlon(en);
  • test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java

     
    6767            text += String.format("*** %s %s\n", p.toString(), p.toCode());
    6868            for (int num=0; num < 1000; ++num) {
    6969   
    70                 double lat = rand.nextDouble() * (b.getMax().lat() - b.getMin().lat()) + b.getMin().lat();
    71                 double lon = rand.nextDouble() * (b.getMax().lon() - b.getMin().lon()) + b.getMin().lon();
     70                double lat = rand.nextDouble() * (b.getMaxLat() - b.getMinLat()) + b.getMinLat();
     71                double lon = rand.nextDouble() * (b.getMaxLon() - b.getMinLon()) + b.getMinLon();
    7272   
    7373                LatLon ll = new LatLon(lat, lon);
    7474