NASA World Wind

gov.nasa.worldwind.render
Class GlobeAnnotation

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.render.AbstractAnnotation
          extended by gov.nasa.worldwind.render.GlobeAnnotation
All Implemented Interfaces:
AVList, Disposable, Locatable, Movable, Annotation, Renderable, Restorable
Direct Known Subclasses:
DialogAnnotation, MeasureTool.ControlPoint, RecordAnnotation, SARAnnotation

public class GlobeAnnotation
extends AbstractAnnotation
implements Locatable, Movable

Represent a text label attached to a Position on the globe and its rendering attributes.

See Also:
AbstractAnnotation, AnnotationAttributes

Nested Class Summary
 
Nested classes/interfaces inherited from class gov.nasa.worldwind.render.AbstractAnnotation
AbstractAnnotation.TextCacheKey
 
Field Summary
protected  Integer altitudeMode
           
protected  double heightInMeter
           
protected  Position position
           
 
Fields inherited from class gov.nasa.worldwind.render.AbstractAnnotation
alwaysOnTop, attributes, childList, delegateOwner, layoutManager, maxActiveAltitude, minActiveAltitude, pickEnabled, pickSupport, text, textBoundsMap, vertexBuffer, wrappedTextMap
 
Fields inherited from interface gov.nasa.worldwind.render.Annotation
ANTIALIAS_DONT_CARE, ANTIALIAS_FASTEST, ANTIALIAS_NICEST
 
Constructor Summary
GlobeAnnotation(String text, Position position)
          Creates a GlobeAnnotation with the given text, at the given globe Position.
GlobeAnnotation(String text, Position position, AnnotationAttributes defaults)
          Creates a GlobeAnnotation with the given text, at the given globe Position.
GlobeAnnotation(String text, Position position, Font font)
          Creates a GlobeAnnotation with the given text, at the given globe Position.
GlobeAnnotation(String text, Position position, Font font, Color textColor)
          Creates a GlobeAnnotation with the given text, at the given globe Position.
 
Method Summary
protected  Rectangle computeBounds(DrawContext dc)
           
protected  double[] computeDistanceScaleAndOpacity(DrawContext dc, Vec4 point, Dimension size)
           
protected  Double computeLookAtDistance(DrawContext dc)
           
protected  void doRenderNow(DrawContext dc)
           
 Integer getAltitudeMode()
          Get the annotation's altitude mode.
 Vec4 getAnnotationDrawPoint(DrawContext dc)
          Get the final Vec4 point at which an annotation will be drawn.
protected  Vec4 getAnnotationDrawPointLegacy(DrawContext dc)
          Compute the draw point using the legacy altitude mode.
 double getHeightInMeter()
          Returns the real world height of the annotation frame in meter.
 Position getPosition()
           
 Position getReferencePosition()
          A position associated with the object that indicates its aggregate geographic position.
 String getRestorableState()
          Returns an XML state document String describing the public attributes of this GlobeAnnotation.
 void move(Position position)
          Shift the shape over the globe's surface while maintaining its original azimuth, its orientation relative to North.
 void moveTo(Position position)
          Move the shape over the globe's surface while maintaining its original azimuth, its orientation relative to North.
 void restoreState(String stateInXml)
          Restores publicly settable attribute values found in the specified XML state document String.
 void setAltitudeMode(Integer altitudeMode)
          Set the annotation's altitude mode.
protected  void setDepthFunc(DrawContext dc, Vec4 screenPoint)
           
 void setHeightInMeter(double meters)
          Set the real world height of the annotation frame in meter.
 void setPosition(Position position)
           
 
Methods inherited from class gov.nasa.worldwind.render.AbstractAnnotation
addChild, adjustSizeToChildren, adjustSizeToText, applyBackgroundTextureState, applyColor, applyScreenTransform, beginDraw, beginDrawChildren, bindPickableObject, computeBoundingRectangle, computeFreeBounds, computeInsetBounds, computeOpacity, computeScale, computeTextBounds, dispose, doDraw, doDrawBackgroundTexture, doDrawChildren, draw, drawBackground, drawBackgroundImage, drawBorder, drawCallout, drawChildren, drawContent, drawHTML, drawPlainText, drawText, drawText, drawTopLevelAnnotation, endDraw, endDrawChildren, getAttributes, getBounds, getChildren, getDelegateOwner, getLayout, getMaxActiveAltitude, getMinActiveAltitude, getMultiLineTextRenderer, getPickSupport, getPreferredSize, getText, getTextBounds, getTextRenderer, getWrappedText, glPointFromAWTPoint, isAlwaysOnTop, isPickEnabled, modulateColorOpacity, pick, removeAllChildren, removeChild, render, renderNow, setAlwaysOnTop, setAttributes, setDelegateOwner, setLayout, setMaxActiveAltitude, setMinActiveAltitude, setPickEnabled, setPickSupport, setText, transformBackgroundImageCoordsToAnnotationCoords, transformByModelview, transformImageCoordsToBackgroundImageCoords, wrapText
 
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

altitudeMode

protected Integer altitudeMode

heightInMeter

protected double heightInMeter

position

protected Position position
Constructor Detail

GlobeAnnotation

public GlobeAnnotation(String text,
                       Position position)
Creates a GlobeAnnotation with the given text, at the given globe Position.

Parameters:
text - the annotation text.
position - the annotation Position.

GlobeAnnotation

public GlobeAnnotation(String text,
                       Position position,
                       AnnotationAttributes defaults)
Creates a GlobeAnnotation with the given text, at the given globe Position. Specify the default AnnotationAttributes set.

Parameters:
text - the annotation text.
position - the annotation Position.
defaults - the default AnnotationAttributes set.

GlobeAnnotation

public GlobeAnnotation(String text,
                       Position position,
                       Font font)
Creates a GlobeAnnotation with the given text, at the given globe Position. Specify the Font to be used.

Parameters:
text - the annotation text.
position - the annotation Position.
font - the Font to use.

GlobeAnnotation

public GlobeAnnotation(String text,
                       Position position,
                       Font font,
                       Color textColor)
Creates a GlobeAnnotation with the given text, at the given globe Position. Specify the Font and text Color to be used.

Parameters:
text - the annotation text.
position - the annotation Position.
font - the Font to use.
textColor - the text Color.
Method Detail

computeBounds

protected Rectangle computeBounds(DrawContext dc)
Specified by:
computeBounds in class AbstractAnnotation

computeDistanceScaleAndOpacity

protected double[] computeDistanceScaleAndOpacity(DrawContext dc,
                                                  Vec4 point,
                                                  Dimension size)

computeLookAtDistance

protected Double computeLookAtDistance(DrawContext dc)

doRenderNow

protected void doRenderNow(DrawContext dc)
Specified by:
doRenderNow in class AbstractAnnotation

getAltitudeMode

public Integer getAltitudeMode()
Get the annotation's altitude mode. The altitude mode may be null, indicating that the legacy altitude mode described below will be used.

Legacy altitude mode
If the annotation Position elevation is lower then the highest elevation on the globe, the annotation will be drawn above the ground using its elevation as an offset, scaled by the current vertical exaggeration. Otherwise, the original elevation will be used. This functionality is supported for backward compatibility. New code that uses Globe Annotation should specify an altitude mode.

Returns:
The altitude mode, one of WorldWind.CLAMP_TO_GROUND, WorldWind.RELATIVE_TO_GROUND, WorldWind.ABSOLUTE, or null.
See Also:
setAltitudeMode(Integer)

getAnnotationDrawPoint

public Vec4 getAnnotationDrawPoint(DrawContext dc)
Get the final Vec4 point at which an annotation will be drawn. The altitude mode will be used to determine the annotation point, if an altitude mode has been set. If the altitude mode is null, then the legacy altitude mode described in getAltitudeMode() will be used to determine the point.

Parameters:
dc - the current DrawContext.
Returns:
the annotation draw Cartesian point
See Also:
getAltitudeMode()

getAnnotationDrawPointLegacy

protected Vec4 getAnnotationDrawPointLegacy(DrawContext dc)
Compute the draw point using the legacy altitude mode. See getAltitudeMode() for details on the legacy mode.

Parameters:
dc - the current DrawContext.
Returns:
the annotation draw Cartesian point
See Also:
getAltitudeMode()

getHeightInMeter

public double getHeightInMeter()
Returns the real world height of the annotation frame in meter. If this dimension is greater then zero, the annotation will be scaled so as to maintain this fixed dimension, which makes it appear as part of the surrounding terrain. This overrides min and max distance scaling - however min distance opacity is still accounted for.

If this dimension is zero, the annotation always maintains the same apparent size with possible scaling relative to the viewport center point if min and max distance scale factors are not one.

Returns:
the real world height of the annotation frame in meter.

getPosition

public Position getPosition()
Specified by:
getPosition in interface Locatable

getReferencePosition

public Position getReferencePosition()
Description copied from interface: Movable
A position associated with the object that indicates its aggregate geographic position. The chosen position varies among implementers of this interface. For objects defined by a list of positions, the reference position is typically the first position in the list. For symmetric objects the reference position is often the center of the object. In many cases the object's reference position may be explicitly specified by the application.

Specified by:
getReferencePosition in interface Movable
Returns:
the object's reference position, or null if no reference position is available.

getRestorableState

public String getRestorableState()
Returns an XML state document String describing the public attributes of this GlobeAnnotation.

Specified by:
getRestorableState in interface Restorable
Overrides:
getRestorableState in class AbstractAnnotation
Returns:
XML state document string describing this GlobeAnnotation.

move

public void move(Position position)
Description copied from interface: Movable
Shift the shape over the globe's surface while maintaining its original azimuth, its orientation relative to North.

Specified by:
move in interface Movable
Parameters:
position - the latitude and longitude to add to the shape's reference position.

moveTo

public void moveTo(Position position)
Description copied from interface: Movable
Move the shape over the globe's surface while maintaining its original azimuth, its orientation relative to North.

Specified by:
moveTo in interface Movable
Parameters:
position - the new position of the shape's reference position.

restoreState

public void restoreState(String stateInXml)
Restores publicly settable attribute values found in the specified XML state document String. The document specified by stateInXml must be a well formed XML document String, or this will throw an IllegalArgumentException. Unknown structures in stateInXml are benign, because they will simply be ignored.

Specified by:
restoreState in interface Restorable
Overrides:
restoreState in class AbstractAnnotation
Parameters:
stateInXml - an XML document String describing a GlobeAnnotation.
Throws:
IllegalArgumentException - If stateInXml is null, or if stateInXml is not a well formed XML document String.

setAltitudeMode

public void setAltitudeMode(Integer altitudeMode)
Set the annotation's altitude mode.

Parameters:
altitudeMode - The altitude mode, one of WorldWind.CLAMP_TO_GROUND, WorldWind.RELATIVE_TO_GROUND, or WorldWind.ABSOLUTE. null indicates that the legacy altitude mode should be used. See getAltitudeMode() for details on this mode.
See Also:
getAltitudeMode()

setDepthFunc

protected void setDepthFunc(DrawContext dc,
                            Vec4 screenPoint)

setHeightInMeter

public void setHeightInMeter(double meters)
Set the real world height of the annotation frame in meter. If this dimension is greater then zero, the annotation will be scaled so as to maintain this fixed dimension, which makes it appear as part of the surrounding terrain. This overrides min and max distance scaling - however min distance opacity is still accounted for.

If this dimension is zero, the annotation always maintains the same apparent size with possible scaling relative to the viewport center point if min and max distance scale factors are not one.

Parameters:
meters - the real world height of the annotation frame in meter.

setPosition

public void setPosition(Position position)

NASA World Wind