Changeset 17703 in josm


Ignore:
Timestamp:
2021-04-07T20:40:02+02:00 (3 years ago)
Author:
simon04
Message:

see #19399 - Extract interface IBounds

Location:
trunk/src/org/openstreetmap/josm/data
Files:
1 added
2 edited

Legend:

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

    r16664 r17703  
    2222 * @see BBox to represent invalid areas.
    2323 */
    24 public class Bounds {
     24public class Bounds implements IBounds {
    2525    /**
    2626     * The minimum and maximum coordinates.
     
    3232     * @return The point
    3333     */
     34    @Override
    3435    public LatLon getMin() {
    3536        return new LatLon(minLat, minLon);
     
    4243     * @since 6203
    4344     */
     45    @Override
    4446    public double getMinLat() {
    4547        return minLat;
     
    5254     * @since 6203
    5355     */
     56    @Override
    5457    public double getMinLon() {
    5558        return minLon;
     
    6063     * @return The point
    6164     */
     65    @Override
    6266    public LatLon getMax() {
    6367        return new LatLon(maxLat, maxLon);
     
    7074     * @since 6203
    7175     */
     76    @Override
    7277    public double getMaxLat() {
    7378        return maxLat;
     
    8085     * @since 6203
    8186     */
     87    @Override
    8288    public double getMaxLon() {
    8389        return maxLon;
     
    364370     * @return Center of the bounding box.
    365371     */
     372    @Override
    366373    public LatLon getCenter() {
    367374        if (crosses180thMeridian()) {
     
    446453     * @since 12161
    447454     */
     455    @Override
    448456    public boolean contains(ILatLon ll) {
    449457        if (!ll.isLatLonKnown()) {
     
    462470    }
    463471
    464     private static boolean intersectsLonCrossing(Bounds crossing, Bounds notCrossing) {
    465         return notCrossing.minLon <= crossing.maxLon || notCrossing.maxLon >= crossing.minLon;
     472    private static boolean intersectsLonCrossing(IBounds crossing, IBounds notCrossing) {
     473        return notCrossing.getMinLon() <= crossing.getMaxLon() || notCrossing.getMaxLon() >= crossing.getMinLon();
    466474    }
    467475
     
    473481     */
    474482    public boolean intersects(Bounds b) {
    475         if (b.maxLat < minLat || b.minLat > maxLat)
     483        return intersects((IBounds) b);
     484    }
     485
     486    @Override
     487    public boolean intersects(IBounds b) {
     488        if (b.getMaxLat() < minLat || b.getMinLat() > maxLat)
    476489            return false;
    477490
     
    483496            return true;
    484497        } else {
    485             return b.maxLon >= minLon && b.minLon <= maxLon;
     498            return b.getMaxLon() >= minLon && b.getMinLon() <= maxLon;
    486499        }
    487500    }
     
    492505     * @return true if this Bounds object crosses the 180th Meridian.
    493506     */
     507    @Override
    494508    public boolean crosses180thMeridian() {
    495509        return this.minLon > this.maxLon;
     
    509523     * @since 14521
    510524     */
     525    @Override
    511526    public double getHeight() {
    512527        return maxLat-minLat;
     
    518533     * @since 14521
    519534     */
     535    @Override
    520536    public double getWidth() {
    521537        return maxLon-minLon + (crosses180thMeridian() ? 360.0 : 0.0);
     
    526542     * @return The area
    527543     */
     544    @Override
    528545    public double getArea() {
    529546        return getWidth() * getHeight();
  • trunk/src/org/openstreetmap/josm/data/osm/BBox.java

    r16673 r17703  
    66
    77import org.openstreetmap.josm.data.Bounds;
     8import org.openstreetmap.josm.data.IBounds;
    89import org.openstreetmap.josm.data.coor.ILatLon;
    910import org.openstreetmap.josm.data.coor.LatLon;
     
    1516 * In contrast to a {@link Bounds} object, a BBox can represent an invalid (empty) area.
    1617 */
    17 public class BBox {
     18public class BBox implements IBounds {
    1819
    1920    protected double xmin = Double.POSITIVE_INFINITY;
     
    173174     */
    174175    public void addPrimitive(OsmPrimitive primitive, double extraSpace) {
    175         BBox primBbox = primitive.getBBox();
    176         add(primBbox.xmin - extraSpace, primBbox.ymin - extraSpace);
    177         add(primBbox.xmax + extraSpace, primBbox.ymax + extraSpace);
     176        IBounds primBbox = primitive.getBBox();
     177        add(primBbox.getMinLon() - extraSpace, primBbox.getMinLat() - extraSpace);
     178        add(primBbox.getMaxLon() + extraSpace, primBbox.getMaxLat() + extraSpace);
    178179    }
    179180
     
    196197     */
    197198    public double height() {
     199        return getHeight();
     200    }
     201
     202    @Override
     203    public double getHeight() {
    198204        if (isValid()) {
    199205            return ymax - ymin;
     
    208214     */
    209215    public double width() {
     216        return getWidth();
     217    }
     218
     219    @Override
     220    public double getWidth() {
    210221        if (isValid()) {
    211222            return xmax - xmin;
     
    229240     */
    230241    public boolean bounds(BBox b) {
    231         return xmin <= b.xmin && xmax >= b.xmax
    232             && ymin <= b.ymin && ymax >= b.ymax;
     242        return contains(b);
    233243    }
    234244
     
    239249     */
    240250    public boolean bounds(LatLon c) {
    241         return xmin <= c.lon() && xmax >= c.lon()
    242             && ymin <= c.lat() && ymax >= c.lat();
     251        return contains(c);
    243252    }
    244253
     
    250259     */
    251260    public boolean intersects(BBox b) {
    252         return xmin <= b.xmax && xmax >= b.xmin
    253             && ymin <= b.ymax && ymax >= b.ymin;
     261        return intersects((IBounds) b);
    254262    }
    255263
     
    268276     */
    269277    public double getTopLeftLat() {
     278        return getMaxLat();
     279    }
     280
     281    @Override
     282    public double getMaxLat() {
    270283        return ymax;
    271284    }
     
    277290     */
    278291    public double getTopLeftLon() {
     292        return getMinLon();
     293    }
     294
     295    @Override
     296    public double getMinLon() {
    279297        return xmin;
    280298    }
     
    294312     */
    295313    public double getBottomRightLat() {
     314        return getMinLat();
     315    }
     316
     317    @Override
     318    public double getMinLat() {
    296319        return ymin;
    297320    }
     
    303326     */
    304327    public double getBottomRightLon() {
     328        return getMaxLon();
     329    }
     330
     331    @Override
     332    public double getMaxLon() {
    305333        return xmax;
    306334    }
     
    310338     * @return The center.
    311339     */
     340    @Override
    312341    public LatLon getCenter() {
    313342        return new LatLon(ymin + (ymax-ymin)/2.0, xmin + (xmax-xmin)/2.0);
     
    391420     * @since 11269
    392421     */
     422    @Override
    393423    public boolean isValid() {
    394424        return xmin <= xmax && ymin <= ymax;
Note: See TracChangeset for help on using the changeset viewer.