Class TerrainProfileLayer

    • Field Detail

      • size

        protected java.awt.Dimension size
      • color

        protected java.awt.Color color
      • borderWidth

        protected int borderWidth
      • position

        protected java.lang.String position
      • resizeBehavior

        protected java.lang.String resizeBehavior
      • unit

        protected java.lang.String unit
      • defaultFont

        protected java.awt.Font defaultFont
      • toViewportScale

        protected double toViewportScale
      • locationCenter

        protected java.awt.Point locationCenter
      • locationOffset

        protected Vec4 locationOffset
      • initialized

        protected boolean initialized
      • isMinimized

        protected boolean isMinimized
      • isMaximized

        protected boolean isMaximized
      • showProfileLine

        protected boolean showProfileLine
      • showPickedLine

        protected boolean showPickedLine
      • pickedSample

        protected int pickedSample
      • keepProportions

        protected boolean keepProportions
      • zeroBased

        protected boolean zeroBased
      • follow

        protected java.lang.String follow
      • showEyePosition

        protected boolean showEyePosition
      • profileLengthFactor

        protected double profileLengthFactor
      • startLatLon

        protected LatLon startLatLon
      • endLatLon

        protected LatLon endLatLon
      • objectPosition

        protected Position objectPosition
      • objectHeading

        protected Angle objectHeading
      • pathPositions

        protected java.util.ArrayList<? extends LatLon> pathPositions
      • pathType

        protected java.lang.String pathType
      • samples

        protected int samples
      • minElevation

        protected double minElevation
      • maxElevation

        protected double maxElevation
      • length

        protected double length
      • positions

        protected Position[] positions
    • Constructor Detail

      • TerrainProfileLayer

        public TerrainProfileLayer()
        Renders a terrain profile graphic in a screen corner.
    • Method Detail

      • getIsMinimized

        public boolean getIsMinimized()
        Get whether the profile graph is minimized.
        Returns:
        true if the profile graph is minimized.
      • setIsMinimized

        public void setIsMinimized​(boolean state)
        Set whether the profile graph should be minimized.

        Note that the graph can be both minimized and maximized at the same time. The minimized state will take precedence and the graph will display as an icon. When 'un-minimized' it will display as maximized.

        Parameters:
        state - true if the profile should be minimized.
      • getIsMaximized

        public boolean getIsMaximized()
        Get whether the profile graph is maximized - displays over the whole viewport.
        Returns:
        true if the profile graph is maximized.
      • setIsMaximized

        public void setIsMaximized​(boolean state)
        Set whether the profile graph should be maximized - displays over the whole viewport.
        Parameters:
        state - true if the profile should be maximized.
      • getSize

        public java.awt.Dimension getSize()
        Get the graphic Dimension (in pixels).
        Returns:
        the scalebar graphic Dimension.
      • setSize

        public void setSize​(java.awt.Dimension size)
        Set the graphic Dimension (in pixels).
        Parameters:
        size - the graphic Dimension.
      • getColor

        public java.awt.Color getColor()
        Get the graphic color.
        Returns:
        the graphic Color.
      • setColor

        public void setColor​(java.awt.Color color)
        Set the graphic Color.
        Parameters:
        color - the graphic Color.
      • setOpacity

        public void setOpacity​(double opacity)
        Sets the layer opacity, which is applied to the layer's chart. The opacity is modified slightly for various elements of the chart to distinguish among them.
        Specified by:
        setOpacity in interface Layer
        Overrides:
        setOpacity in class AbstractLayer
        Parameters:
        opacity - the current opacity value, which is ignored by this layer.
        See Also:
        setColor(java.awt.Color)
      • getOpacity

        public double getOpacity()
        Returns the layer's opacity value. The opacity is modified slightly for various elements of the chart to distinguish among them.
        Specified by:
        getOpacity in interface Layer
        Overrides:
        getOpacity in class AbstractLayer
        Returns:
        The layer opacity, a value between 0 and 1.
        See Also:
        getColor()
      • getToViewportScale

        public double getToViewportScale()
        Returns the graphic-to-viewport scale factor.
        Returns:
        the graphic-to-viewport scale factor.
      • setToViewportScale

        public void setToViewportScale​(double toViewportScale)
        Sets the scale factor applied to the viewport size to determine the displayed size of the graphic. This scale factor is used only when the layer's resize behavior is AVKey.RESIZE_STRETCH or AVKey.RESIZE_SHRINK_ONLY. The graphic's width is adjusted to occupy the proportion of the viewport's width indicated by this factor. The graphic's height is adjusted to maintain the graphic's Dimension aspect ratio.
        Parameters:
        toViewportScale - the graphic to viewport scale factor.
      • getPosition

        public java.lang.String getPosition()
      • setPosition

        public void setPosition​(java.lang.String position)
        Sets the relative viewport location to display the graphic. Can be one of AVKey.NORTHEAST, AVKey.NORTHWEST, AVKey.SOUTHEAST, or AVKey.SOUTHWEST (the default). These indicate the corner of the viewport.
        Parameters:
        position - the desired graphic position.
      • getLocationCenter

        public java.awt.Point getLocationCenter()
        Get the screen location of the graph center if set (can be null).
        Returns:
        the screen location of the graph center if set (can be null).
      • setLocationCenter

        public void setLocationCenter​(java.awt.Point point)
        Set the screen location of the graph center - overrides setPosition(java.lang.String) if not null.
        Parameters:
        point - the screen location of the graph center (can be null).
      • getLocationOffset

        public Vec4 getLocationOffset()
        Returns the current location offset. See setLocationOffset(gov.nasa.worldwind.geom.Vec4) for a description of the offset and its values.
        Returns:
        the location offset. Will be null if no offset has been specified.
      • setLocationOffset

        public void setLocationOffset​(Vec4 locationOffset)
        Specifies a placement offset from the layer position on the screen.
        Parameters:
        locationOffset - the number of pixels to shift the layer image from its specified screen position. A positive X value shifts the image to the right. A positive Y value shifts the image up. If null, no offset is applied. The default offset is null.
        See Also:
        setLocationCenter(java.awt.Point), setPosition(java.lang.String)
      • getResizeBehavior

        public java.lang.String getResizeBehavior()
        Returns the layer's resize behavior.
        Returns:
        the layer's resize behavior.
      • setResizeBehavior

        public void setResizeBehavior​(java.lang.String resizeBehavior)
        Sets the behavior the layer uses to size the graphic when the viewport size changes, typically when the World Wind window is resized. If the value is AVKey.RESIZE_KEEP_FIXED_SIZE, the graphic size is kept to the size specified in its Dimension scaled by the layer's current icon scale. If the value is AVKey.RESIZE_STRETCH, the graphic is resized to have a constant size relative to the current viewport size. If the viewport shrinks the graphic size decreases; if it expands then the graphic enlarges. If the value is AVKey.RESIZE_SHRINK_ONLY (the default), graphic sizing behaves as for AVKey.RESIZE_STRETCH but it will not grow larger than the size specified in its Dimension.
        Parameters:
        resizeBehavior - the desired resize behavior
      • getBorderWidth

        public int getBorderWidth()
      • setBorderWidth

        public void setBorderWidth​(int borderWidth)
        Sets the graphic offset from the viewport border.
        Parameters:
        borderWidth - the number of pixels to offset the graphic from the borders indicated by setPosition(String).
      • getUnit

        public java.lang.String getUnit()
      • setUnit

        public void setUnit​(java.lang.String unit)
        Sets the unit the graphic uses to display distances and elevations. Can be one of UNIT_METRIC (the default), or UNIT_IMPERIAL.
        Parameters:
        unit - the desired unit.
      • getFont

        public java.awt.Font getFont()
        Get the graphic legend Font.
        Returns:
        the graphic legend Font.
      • setFont

        public void setFont​(java.awt.Font font)
        Set the graphic legend Font.
        Parameters:
        font - the graphic legend Font.
      • getKeepProportions

        public boolean getKeepProportions()
        Get whether distance/elevation proportions are maintained.
        Returns:
        true if the graph maintains distance/elevation proportions.
      • setKeepProportions

        public void setKeepProportions​(boolean state)
        Set whether distance/elevation proportions are maintained.
        Parameters:
        state - true if the graph should maintains distance/elevation proportions.
      • getFollow

        public java.lang.String getFollow()
        Get the graph center point placement behavior.
        Returns:
        the graph center point placement behavior.
      • getShowEyePosition

        public boolean getShowEyePosition()
        Get whether the eye or object position is shown on the graph when FOLLOW_EYE or FOLLOW_OBJECT.
        Returns:
        true if the eye or object position is shown on the graph.
      • setShowEyePosition

        public void setShowEyePosition​(java.lang.Boolean state)
        Set whether the eye or object position should be shown on the graph when FOLLOW_EYE or FOLLOW_OBJECT.
        Parameters:
        state - if true the eye or object position should be shown on the graph.
      • setProfileLengthFactor

        public void setProfileLengthFactor​(double factor)
        Set the profile length factor - has no effect if FOLLOW_NONE or FOLLOW_PATH
        Parameters:
        factor - the new profile length factor.
      • getProfileLenghtFactor

        public double getProfileLenghtFactor()
        Get the profile length factor.
        Returns:
        the profile length factor.
      • getStartLatLon

        public LatLon getStartLatLon()
        Get the profile start position lat/lon when FOLLOW_NONE.
        Returns:
        the profile start position lat/lon.
      • setStartLatLon

        public void setStartLatLon​(LatLon latLon)
        Set the profile start position lat/lon when FOLLOW_NONE.
        Parameters:
        latLon - the profile start position lat/lon.
      • getEndLatLon

        public LatLon getEndLatLon()
        Get the profile end position lat/lon when FOLLOW_NONE.
        Returns:
        the profile end position lat/lon.
      • setEndLatLon

        public void setEndLatLon​(LatLon latLon)
        Set the profile end position lat/lon when FOLLOW_NONE.
        Parameters:
        latLon - the profile end position lat/lon.
      • getSamples

        public int getSamples()
        Get the number of elevation samples in the profile.
        Returns:
        the number of elevation samples in the profile.
      • setSamples

        public void setSamples​(int number)
        Set the number of elevation samples in the profile.
        Parameters:
        number - the number of elevation samples in the profile.
      • getZeroBased

        public boolean getZeroBased()
        Get whether the profile graph should include sea level.
        Returns:
        whether the profile graph should include sea level.
      • setZeroBased

        public void setZeroBased​(boolean state)
        Set whether the profile graph should include sea level. True is the default.
        Parameters:
        state - true if the profile graph should include sea level.
      • getObjectPosition

        public Position getObjectPosition()
        Get the object position the graph follows when it is set to FOLLOW_OBJECT.
        Returns:
        the object position the graph follows.
      • setObjectPosition

        public void setObjectPosition​(Position pos)
        Set the object position the graph follows when it is set to FOLLOW_OBJECT.
        Parameters:
        pos - the object position the graph follows.
      • getObjectHeading

        public Angle getObjectHeading()
        Get the object heading the graph follows when it is set to FOLLOW_OBJECT. The profile graph will be computed perpendicular to the object heading direction.
        Returns:
        the object heading the graph follows.
      • setObjectHeading

        public void setObjectHeading​(Angle heading)
        Set the object heading the graph follows when it is set to FOLLOW_OBJECT. The profile graph will be computed perpendicular to the object heading direction.
        Parameters:
        heading - the object heading the graph follows.
      • getPathPositions

        public java.util.List<? extends LatLon> getPathPositions()
        Get the path positions that the profile follows if set to FOLLOW_PATH.
        Returns:
        the path positions that the profile follows.
      • setPathPositions

        public void setPathPositions​(java.util.ArrayList<? extends LatLon> positions)
        Set the path positions that the profile should follow if FOLLOW_PATH.
        Parameters:
        positions - the path positions that the profile should follow.
      • getAVKeyPathType

        public java.lang.String getAVKeyPathType()
      • setPathType

        public void setPathType​(java.lang.String pathType)
        Sets the type of path to follow, one of AVKey.GREAT_CIRCLE, which computes each segment of the path as a great circle, or AVKey.RHUMB_LINE, which computes each segment of the path as a line of constant heading.
        Parameters:
        pathType - the type of path to follow.
      • getProfileLine

        public Path getProfileLine()
        Get the Path used to render the profile line on the ground.
        Returns:
        the Path used to render the profile line on the ground.
      • getPickedLine

        public Path getPickedLine()
        Get the Path used to render the picked position on the terrain.
        Returns:
        the Path used to render the picked position on the terrain.
      • isShowProfileLine

        public boolean isShowProfileLine()
        Get whether the profile line is displayed over the ground.
        Returns:
        true is the profile line is displayed over the ground.
      • setShowProfileLine

        public void setShowProfileLine​(boolean state)
        Set whether the profile line should be displayed over the terrain.
        Parameters:
        state - true if the profile line should be displayed over the terrain.
      • isShowPickedLine

        public boolean isShowPickedLine()
        Get whether the picked line is displayed over the ground.
        Returns:
        true if the picked line is displayed over the ground.
      • setShowPickedLine

        public void setShowPickedLine​(boolean state)
        Set whether the picked line should be displayed over the ground.
        Parameters:
        state - if the picked line should be displayed over the ground.
      • initialize

        protected void initialize​(DrawContext dc)
      • drawProfile

        public void drawProfile​(DrawContext dc)
      • drawGrid

        protected void drawGrid​(DrawContext dc,
                                java.awt.Dimension dimension)
      • drawGraph

        protected void drawGraph​(DrawContext dc,
                                 java.awt.Dimension dimension)
      • drawGUI

        protected void drawGUI​(DrawContext dc,
                               java.awt.Dimension dimension)
      • drawHorizontalLine

        protected void drawHorizontalLine​(DrawContext dc,
                                          java.awt.Dimension dimension,
                                          double y)
      • drawVerticalLine

        protected void drawVerticalLine​(DrawContext dc,
                                        java.awt.Dimension dimension,
                                        double x)
      • drawFilledRectangle

        protected void drawFilledRectangle​(DrawContext dc,
                                           Vec4 origin,
                                           java.awt.Dimension dimension,
                                           java.awt.Color color)
      • drawLine

        protected void drawLine​(DrawContext dc,
                                double x1,
                                double y1,
                                double x2,
                                double y2)
      • drawLabel

        protected void drawLabel​(DrawContext dc,
                                 java.lang.String text,
                                 Vec4 screenPoint,
                                 int align)
      • getBackgroundColor

        protected java.awt.Color getBackgroundColor​(java.awt.Color color)
      • computeScale

        protected double computeScale​(java.awt.Rectangle viewport)
      • computeLocation

        protected Vec4 computeLocation​(java.awt.Rectangle viewport,
                                       double scale)
      • computePickPosition

        protected Position computePickPosition​(DrawContext dc,
                                               Vec4 locationSW,
                                               java.awt.Dimension mapSize)
        Computes the Position of the pickPoint over the graph and updates pickedSample indice
        Parameters:
        dc - the current DrawContext
        locationSW - the screen location of the bottom left corner of the graph
        mapSize - the graph screen dimension in pixels
        Returns:
        the picked Position
      • computeObjectSample

        protected int computeObjectSample​(LatLon pos)
        Compute the sample number along the path closest to the given LatLon.
        Parameters:
        pos - the object LatLon
        Returns:
        the sample number or -1 if not found.
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent propertyChangeEvent)
        Description copied from class: WWObjectImpl
        The property change listener for this instance. Receives property change notifications that this instance has registered with other property change notifiers.
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener
        Overrides:
        propertyChange in class WWObjectImpl
        Parameters:
        propertyChangeEvent - the event
      • setEventSource

        public void setEventSource​(WorldWindow wwd)
      • computeMirroredPositions

        protected void computeMirroredPositions​(LatLon centerLatLon)
      • computePathPositions

        protected void computePathPositions()
      • computePathLength

        protected double computePathLength()
      • setPosition

        protected void setPosition​(int index,
                                   LatLon latLon)