// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data;
import org.openstreetmap.josm.data.coor.EastNorth;
import org.openstreetmap.josm.tools.CheckParameterUtil;
/**
* Data class to keep viewport information.
*
* This can be either a combination of map center and map scale or
* a rectangle in east-north coordinate space.
*
* Either of those will be null, so the consumer of the ViewportData
* object has to check, which one is set.
*
* @since 5670 (creation)
* @since 6992 (extraction in this package)
*/
public class ViewportData {
private final EastNorth center;
private final Double scale;
private final ProjectionBounds bounds;
/**
* Constructs a new {@code ViewportData}.
* @param center Projected coordinates of the map center
* @param scale Scale factor in east-/north-units per pixel
*/
public ViewportData(EastNorth center, Double scale) {
CheckParameterUtil.ensureParameterNotNull(center);
CheckParameterUtil.ensureParameterNotNull(scale);
this.center = center;
this.scale = scale;
this.bounds = null;
}
public ViewportData(ProjectionBounds bounds) {
CheckParameterUtil.ensureParameterNotNull(bounds);
this.center = null;
this.scale = null;
this.bounds = bounds;
}
/**
* Return the projected coordinates of the map center
* @return the center
*/
public EastNorth getCenter() {
return center;
}
/**
* Return the scale factor in east-/north-units per pixel.
* @return the scale
*/
public Double getScale() {
return scale;
}
/**
* Return the bounds in east-north coordinate space.
* @return the bounds
*/
public ProjectionBounds getBounds() {
return bounds;
}
}