All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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