gov.nasa.worldwind.layers.Layer Maven / Gradle / Ivy
The newest version!
/*
* Copyright (C) 2012 United States Government as represented by the Administrator of the
* National Aeronautics and Space Administration.
* All Rights Reserved.
*/
package gov.nasa.worldwind.layers;
import gov.nasa.worldwind.*;
import gov.nasa.worldwind.event.SelectEvent;
import gov.nasa.worldwind.render.DrawContext;
/**
* @author Tom Gaskins
* @version $Id: Layer.java 1824 2014-01-22 22:41:10Z dcollins $
*/
public interface Layer extends WWObject, Disposable, Restorable
{
/**
* Indicates whether the layer is enabled for rendering and selection.
*
* @return true if the layer is enabled, else false.
*/
boolean isEnabled();
/**
* Controls whether the layer is enabled for rendering and selection.
*
* @param enabled true
if the layer is enabled, else false
.
*/
void setEnabled(boolean enabled);
/**
* Returns the layer's name, as specified in the most recent call to {@link #setName}.
*
* @return the layer's name.
*/
String getName();
/**
* Set the layer's name. The name is a convenience attribute typically used to identify the layer in user
* interfaces. By default, a layer has no name.
*
* @param name the name to assign to the layer.
*/
void setName(String name);
/**
* Returns the layer's opacity, the degree to which it is blended with underlying layers.
*
* Many layers apply special usage of opacity, and some ignore it in favor of the opacity settings of their internal
* renderables. See the description of this method in specific layers to determine usage there.
*
* @return The layer's opacity, a value between 0 and 1.
*/
double getOpacity();
/**
* Sets the layer's opacity, the degree to which it is blended with underlying layers.
*
* Many layers apply special usage of opacity, and some ignore it in favor of the opacity settings of their internal
* renderables. See the description of this method in specific layers to determine usage there.
*
* @param opacity The layer opacity, a value between 0 and 1. 0 indicates non-opaque (fully transparent), 1
* indicates fully opaque. Values between 0 and 1 indicate partial opacity.
*/
void setOpacity(double opacity);
/**
* Indicates whether the layer performs selection during picking.
*
* Most layers enable picking by default. However, this becomes inconvenient for {@link
* gov.nasa.worldwind.render.SurfaceImage} and {@link gov.nasa.worldwind.layers.SurfaceImageLayer}} when the image
* covers a large area because the view input handlers detect the surface image rather than the terrain as the top
* picked object, and will not respond to the user's attempts at navigation. The solution is to disable picking for
* the layer.
*
* @return true
if picking is enabled, else false
.
*/
boolean isPickEnabled();
/**
* Controls whether the layer should perform picking.
*
* @param isPickable true
if the layer should perform picking, else false
.
*/
void setPickEnabled(boolean isPickable);
/**
* Causes the layer to perform any actions necessary to subsequently render the layer. The layer has exclusive
* access to the frame buffer during the call, and may use it to generate images or other information that is
* subsequently used to render the layer's contents. Upon return, the OpenGL state must be restored to its
* original.
*
* @param dc the current draw context.
*/
void preRender(DrawContext dc);
/**
* Cause the layer to draw its representation.
*
* @param dc the current draw context for rendering.
*/
void render(DrawContext dc);
/**
* Cause the layer to perform picking, which determines whether the object or its components intersect a given point
* on the screen. Objects that intersect that point are added to the draw context's pick list and are conveyed to
* the application via selection events or by a direct query of {@link WorldWindow#getObjectsAtCurrentPosition()}.
*
* @param dc the current draw context for rendering.
* @param pickPoint the screen coordinate point
*
* @see SelectEvent
*/
void pick(DrawContext dc, java.awt.Point pickPoint);
/**
* Indicates whether the most recent rendering of the layer rendered the highest resolution imagery or other data
* available. Some layers do not track resolution. For those layers this value will always be true
.
* Typically such layers also return false
from {@link #isMultiResolution}.
*
* @return true
if the layer is at maximum resolution, otherwise false
.
*/
boolean isAtMaxResolution();
/**
* Indicates whether the layer provides multiple resolutions of imagery or other data.
*
* @return true
if the layer provides multiple resolutions, else false
.
*/
boolean isMultiResolution();
/**
* Returns the map scale, in terms of the ratio of 1 to the value returned, e.g., 1:24000.
*
* @return the map scale.
*/
double getScale();
/**
* Indicates whether the layer is allowed to retrieve data from the network. Many layers have no need to retrieve
* data from the network. This state is meaningless for such layers.
*
* @return true
if the layer is enabled to retrieve network data, else false
.
*/
boolean isNetworkRetrievalEnabled();
/**
* Controls whether the layer is allowed to retrieve data from the network. Many layers have no need for data from
* the network. This state may be set but is meaningless for such layers.
*
* @param networkRetrievalEnabled true
if network retrieval is allowed, else false
.
*/
void setNetworkRetrievalEnabled(boolean networkRetrievalEnabled);
/**
* Specifies the time of the layer's most recent dataset update. If greater than zero, the layer ignores and
* eliminates any previously cached data older than the time specified, and requests new information from the data
* source. If zero, the layer uses any expiry times intrinsic to the layer, typically initialized at layer
* construction. The default expiry time is 0, thereby enabling a layer's intrinsic expiration criteria.
*
* @param expiryTime the expiry time of any cached data, expressed as a number of milliseconds beyond the epoch.
*
* @see System#currentTimeMillis() for a description of milliseconds beyond the epoch.
*/
void setExpiryTime(long expiryTime);
/**
* Returns the current expiry time.
*
* @return the current expiry time.
*/
long getExpiryTime();
/**
* Returns the minimum altitude at which the layer is displayed.
*
* @return the minimum altitude at which the layer is displayed.
*/
double getMinActiveAltitude();
/**
* Specifies the minimum altitude at which to display the layer.
*
* @param minActiveAltitude the minimum altitude at which to display the layer.
*/
void setMinActiveAltitude(double minActiveAltitude);
/**
* Returns the maximum altitude at which to display the layer.
*
* @return the maximum altitude at which to display the layer.
*/
double getMaxActiveAltitude();
/**
* Specifies the maximum altitude at which to display the layer.
*
* @param maxActiveAltitude the maximum altitude at which to display the layer.
*/
void setMaxActiveAltitude(double maxActiveAltitude);
/**
* Indicates whether the layer is in the view. The method implemented here is a default indicating the layer is in
* view. Subclasses able to determine their presence in the view should override this implementation.
*
* @param dc the current draw context
*
* @return true
if the layer is in the view, false
otherwise.
*/
boolean isLayerInView(DrawContext dc);
/**
* Indicates whether the layer is active based on arbitrary criteria. The method implemented here is a default
* indicating the layer is active if the current altitude is within the layer's min and max active altitudes.
* Subclasses able to consider more criteria should override this implementation.
*
* @param dc the current draw context
*
* @return true
if the layer is active, false
otherwise.
*/
boolean isLayerActive(DrawContext dc);
/**
* Indicates the altitude above which this layer likely has low value or is not expected to be active. This value is
* independent of the maximum active altitude, {@link #setMaxActiveAltitude(double)} and does not reflect it.
*
* The returned altitude is valid when the field of view indicated by {@link gov.nasa.worldwind.View#getFieldOfView()}
* is set to its default value. Changing the field of view to any value other than the default may change this
* layer's maximum effective altitude, but the returned altitude will not reflect that change.
*
* @param radius the radius of the {@link gov.nasa.worldwind.globes.Globe} the layer is associated with. May be
* null, in which case the Earth's equatorial radius is used, {@link gov.nasa.worldwind.globes.Earth#WGS84_EQUATORIAL_RADIUS}.
*
* @return the layer's maximum effective altitude.
*/
Double getMaxEffectiveAltitude(Double radius);
/**
* Indicates the altitude below which this layer likely has low value or is not expected to be active. This value is
* independent of the minimum active altitude, {@link #setMinActiveAltitude(double)} and does not reflect it.
*
* The returned altitude is valid when the field of view indicated by {@link gov.nasa.worldwind.View#getFieldOfView()}
* is set to its default value. Changing the field of view to any value other than the default may change this
* layer's minimum effective altitude, but the returned altitude will not reflect that change.
*
* @param radius the radius of the {@link gov.nasa.worldwind.globes.Globe} the layer is associated with. May be
* null, in which case the Earth's equatorial radius is used, {@link gov.nasa.worldwind.globes.Earth#WGS84_EQUATORIAL_RADIUS}.
*
* @return the layer's minimum effective altitude.
*/
Double getMinEffectiveAltitude(Double radius);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy