|
NASA World Wind | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectgov.nasa.worldwind.avlist.AVListImpl
gov.nasa.worldwind.WWObjectImpl
gov.nasa.worldwind.render.AbstractSurfaceObject
gov.nasa.worldwind.render.AbstractSurfaceShape
public abstract class AbstractSurfaceShape
Common superclass for surface conforming shapes such as SurfacePolygon, SurfacePolyline, SurfaceEllipse, SurfaceQuad, and SurfaceSector.
DEFAULT_INTERIOR_MATERIAL, DEFAULT_OUTLINE_MATERIAL, and DEFAULT_HIGHLIGHT_MATERIAL.
AbstractSurfaceShape extends from AbstractSurfaceObject, and therefore inherits
AbstractSurfaceObject's batch rendering capabilities.
| Nested Class Summary | |
|---|---|
protected static class |
AbstractSurfaceShape.GeometryKey
|
protected static class |
AbstractSurfaceShape.SurfaceShapeStateKey
Represents a surface shapes's current state. |
| Nested classes/interfaces inherited from class gov.nasa.worldwind.render.AbstractSurfaceObject |
|---|
AbstractSurfaceObject.CacheEntry, AbstractSurfaceObject.SurfaceObjectStateKey |
| Field Summary | |
|---|---|
protected ShapeAttributes |
activeAttrs
|
protected List<List<LatLon>> |
activeGeometry
|
protected List<List<LatLon>> |
activeOutlineGeometry
|
protected AreaMeasurer |
areaMeasurer
|
protected long |
areaMeasurerLastModifiedTime
|
protected static Material |
DEFAULT_HIGHLIGHT_MATERIAL
The default highlight color. |
protected static Material |
DEFAULT_INTERIOR_MATERIAL
The default interior color. |
protected static int |
DEFAULT_MAX_EDGE_INTERVALS
The default maximum number of shape edge intervals. |
protected static int |
DEFAULT_MIN_EDGE_INTERVALS
The default minimum number of shape edge intervals. |
protected static Material |
DEFAULT_OUTLINE_MATERIAL
The default outline color. |
protected static String |
DEFAULT_PATH_TYPE
The default path type. |
protected static int |
DEFAULT_TEXELS_PER_EDGE_INTERVAL
The default number of texels per shape edge interval. |
protected static ShapeAttributes |
defaultAttrs
The attributes used if attributes are not specified. |
protected Map<Object,AbstractSurfaceObject.CacheEntry> |
geometryCache
|
protected ShapeAttributes |
highlightAttrs
|
protected boolean |
highlighted
|
protected int |
maxEdgeIntervals
|
protected int |
minEdgeIntervals
|
protected ShapeAttributes |
normalAttrs
|
protected String |
pathType
|
protected Map<Object,AbstractSurfaceObject.CacheEntry> |
sectorCache
|
protected OGLStackHandler |
stackHandler
|
protected double |
texelsPerEdgeInterval
|
protected WWTexture |
texture
|
protected static FloatBuffer |
vertexBuffer
|
| Fields inherited from class gov.nasa.worldwind.render.AbstractSurfaceObject |
|---|
delegateOwner, drawBoundingSectors, enableBatchPicking, extentCache, lastModifiedTime, nextUniqueId, pickLayer, pickSupport, pickTileBuilder, pickTiles, uniqueId, visible |
| Constructor Summary | |
|---|---|
AbstractSurfaceShape()
Constructs a new surface shape with the default attributes. |
|
AbstractSurfaceShape(ShapeAttributes normalAttrs)
Constructs a new surface shape with the specified normal (as opposed to highlight) attributes. |
|
| Method Summary | |
|---|---|
protected void |
addIntermediateLocations(LatLon a,
LatLon b,
double edgeIntervalsPerDegree,
List<LatLon> locations)
|
protected void |
applyInteriorState(DrawContext dc,
SurfaceTileDrawContext sdc,
ShapeAttributes attributes,
WWTexture texture,
LatLon refLocation)
|
protected void |
applyInteriorTextureState(DrawContext dc,
SurfaceTileDrawContext sdc,
ShapeAttributes attributes,
WWTexture texture,
LatLon refLocation)
|
protected void |
applyModelviewTransform(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected void |
applyOutlineState(DrawContext dc,
ShapeAttributes attributes)
|
protected void |
beginDrawing(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected boolean |
canContainPole()
Indicates whether the shape is a closed polygon that can enclose a pole, or an open path that cannot. |
protected void |
clearCaches()
Clears this SurfaceObject's internal extent cache. |
protected double |
computeEdgeIntervalsPerDegree(SurfaceTileDrawContext sdc)
|
protected List<Sector> |
computeSectors(DrawContext dc)
Computes the bounding sectors for the shape. |
protected List<Sector> |
computeSectors(Globe globe)
Computes the bounding sectors for the shape. |
protected String |
containsPole(Iterable<? extends LatLon> locations)
Determine if a list of geographic locations encloses either the North or South pole. |
protected ShapeAttributes |
createActiveAttributes()
|
protected abstract List<List<LatLon>> |
createGeometry(Globe globe,
SurfaceTileDrawContext sdc)
|
protected Object |
createGeometryKey(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected List<LatLon> |
cutAlongDateLine(List<LatLon> locations,
String pole,
Globe globe)
Divide a list of locations that encloses a pole along the international date line. |
protected void |
determineActiveAttributes()
Determines which attributes -- normal, highlight or default -- to use each frame. |
protected void |
determineActiveGeometry(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected void |
doDrawGeographic(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected void |
doGetRestorableState(RestorableSupport rs,
RestorableSupport.StateObject context)
|
protected abstract void |
doMoveTo(Position oldReferencePosition,
Position newReferencePosition)
|
protected void |
doRestoreState(RestorableSupport rs,
RestorableSupport.StateObject context)
|
protected Integer |
doTessellateInterior(DrawContext dc)
|
protected void |
drawGeographic(DrawContext dc,
SurfaceTileDrawContext sdc)
Causes the SurfaceObject to render itself to the specified region in geographic coordinates. |
protected void |
drawInterior(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected void |
drawOutline(DrawContext dc,
SurfaceTileDrawContext sdc)
|
protected void |
endDrawing(DrawContext dc)
|
void |
export(String mimeType,
Object output)
Export the Polygon. |
protected void |
exportAsKML(Object output)
|
protected void |
generateIntermediateLocations(Iterable<? extends LatLon> iterable,
double edgeIntervalsPerDegree,
boolean makeClosedPath,
List<LatLon> locations)
|
protected ShapeAttributes |
getActiveAttributes()
|
protected List<List<LatLon>> |
getActiveGeometry()
|
double |
getArea(Globe globe)
Returns the object's area in square meters. |
double |
getArea(Globe globe,
boolean terrainConformant)
Returns the shapes's area in square meters. |
ShapeAttributes |
getAttributes()
Returns the surface shape's normal (as opposed to highlight) attributes. |
protected List<List<LatLon>> |
getCachedGeometry(DrawContext dc,
SurfaceTileDrawContext sdc)
|
Extent |
getExtent(Globe globe,
double verticalExaggeration)
Returns this SurfaceShape's enclosing volume as an Extent in model coordinates,
given a specified Globe and vertical exaggeration (see SceneController.getVerticalExaggeration(). |
double |
getHeight(Globe globe)
Returns the latitudanl length of the object in meters. |
ShapeAttributes |
getHighlightAttributes()
Returns the surface shape's highlight attributes. |
protected WWTexture |
getInteriorTexture()
|
double |
getLength(Globe globe)
Returns the object's length in meters. |
int[] |
getMinAndMaxEdgeIntervals()
Returns the minimum and maximum number of interpolated intervals that may be added to each shape edge. |
String |
getPathType()
Returns the path type used to interpolate between locations on this SurfaceShape. |
double |
getPerimeter(Globe globe)
Returns the length of the object's perimeter in meters. |
abstract Position |
getReferencePosition()
A position associated with the object that indicates its aggregate geographic position. |
String |
getRestorableState()
Returns an XML document string describing the object's state. |
List<Sector> |
getSectors(DrawContext dc)
Returns a List of Sector instances that bound the surface
object on the specified DrawContext. |
Object |
getStateKey(DrawContext dc)
Returns an object that uniquely identifies the surface object's state on the specified draw context. |
double |
getTexelsPerEdgeInterval()
Returns the number of texels per shape edge interval. |
double |
getWidth(Globe globe)
Returns the longitudinal length of the object in meters. |
protected void |
handleUnsuccessfulInteriorTessellation(DrawContext dc)
|
protected LatLon |
intersectionWithMeridian(LatLon p1,
LatLon p2,
Angle meridian,
Globe globe)
Determine where a line between two positions crosses a given meridian. |
String |
isExportFormatSupported(String format)
Does this object support a certain export format? |
boolean |
isHighlighted()
Indicates whether to highlight the surface shape. |
protected static boolean |
isSectorEmpty(Sector sector)
|
protected void |
legacyRestoreState(RestorableSupport rs,
RestorableSupport.StateObject context)
Restores state values from previous versions of the SurfaceShape state XML. |
protected void |
makeOrderedPreRenderable(DrawContext dc)
Overridden to determine the shape's active attributes during preRendering, prior to building the shape's pickable representation and the SceneController's composite representation. |
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. |
protected void |
onShapeChanged()
|
protected String |
pathTypeFromString(String s)
|
protected List<List<LatLon>> |
repeatAroundDateline(List<LatLon> locations)
Returns a list containing two copies of the specified list of locations crossing the dateline: one that extends across the -180 longitude boundary and one that extends across the +180 longitude boundary. |
void |
restoreState(String stateInXml)
Restores the object's state to what is described in the specified XML document string. |
void |
setAttributes(ShapeAttributes normalAttrs)
Specifies the surface shape's normal (as opposed to highlight) attributes. |
void |
setHighlightAttributes(ShapeAttributes highlightAttrs)
Specifies the surface shape's highlight attributes. |
void |
setHighlighted(boolean highlighted)
Specifies whether the surface shape is highlighted. |
void |
setMinAndMaxEdgeIntervals(int minEdgeIntervals,
int maxEdgeIntervals)
Sets the minimum and maximum number of interpolated intervals that may be added to each shape edge. |
void |
setPathType(String pathType)
Sets the path type used to interpolate between locations on this SurfaceShape. |
void |
setTexelsPerEdgeInterval(double texelsPerEdgeInterval)
Sets the number of texels per shape edge interval. |
protected AreaMeasurer |
setupAreaMeasurer(Globe globe)
|
protected Integer |
tessellateInterior(DrawContext dc)
|
protected Integer |
tessellateInteriorVertices(GLUtessellator tess)
|
| Methods inherited from class gov.nasa.worldwind.WWObjectImpl |
|---|
onMessage, propertyChange |
| 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 |
| Methods inherited from interface gov.nasa.worldwind.render.SurfaceShape |
|---|
getLocations |
| Methods inherited from interface gov.nasa.worldwind.render.SurfaceObject |
|---|
getDelegateOwner, getDistanceFromEye, getExtent, isVisible, pick, preRender, render, setDelegateOwner, setVisible |
| Methods inherited from interface gov.nasa.worldwind.avlist.AVList |
|---|
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues |
| Field Detail |
|---|
protected ShapeAttributes activeAttrs
protected List<List<LatLon>> activeGeometry
protected List<List<LatLon>> activeOutlineGeometry
protected AreaMeasurer areaMeasurer
protected long areaMeasurerLastModifiedTime
protected static final Material DEFAULT_HIGHLIGHT_MATERIAL
protected static final Material DEFAULT_INTERIOR_MATERIAL
protected static final int DEFAULT_MAX_EDGE_INTERVALS
protected static final int DEFAULT_MIN_EDGE_INTERVALS
protected static final Material DEFAULT_OUTLINE_MATERIAL
protected static final String DEFAULT_PATH_TYPE
protected static final int DEFAULT_TEXELS_PER_EDGE_INTERVAL
protected static final ShapeAttributes defaultAttrs
protected Map<Object,AbstractSurfaceObject.CacheEntry> geometryCache
protected ShapeAttributes highlightAttrs
protected boolean highlighted
protected int maxEdgeIntervals
protected int minEdgeIntervals
protected ShapeAttributes normalAttrs
protected String pathType
protected Map<Object,AbstractSurfaceObject.CacheEntry> sectorCache
protected OGLStackHandler stackHandler
protected double texelsPerEdgeInterval
protected WWTexture texture
protected static FloatBuffer vertexBuffer
| Constructor Detail |
|---|
public AbstractSurfaceShape()
public AbstractSurfaceShape(ShapeAttributes normalAttrs)
normalAttrs - the normal attributes. May be null, in which case default attributes are used.| Method Detail |
|---|
protected void addIntermediateLocations(LatLon a,
LatLon b,
double edgeIntervalsPerDegree,
List<LatLon> locations)
protected void applyInteriorState(DrawContext dc,
SurfaceTileDrawContext sdc,
ShapeAttributes attributes,
WWTexture texture,
LatLon refLocation)
protected void applyInteriorTextureState(DrawContext dc,
SurfaceTileDrawContext sdc,
ShapeAttributes attributes,
WWTexture texture,
LatLon refLocation)
protected void applyModelviewTransform(DrawContext dc,
SurfaceTileDrawContext sdc)
protected void applyOutlineState(DrawContext dc,
ShapeAttributes attributes)
protected void beginDrawing(DrawContext dc,
SurfaceTileDrawContext sdc)
protected boolean canContainPole()
protected void clearCaches()
clearCaches in class AbstractSurfaceObjectprotected double computeEdgeIntervalsPerDegree(SurfaceTileDrawContext sdc)
protected List<Sector> computeSectors(DrawContext dc)
dc - Current draw context.
protected List<Sector> computeSectors(Globe globe)
globe - Current globe.
protected String containsPole(Iterable<? extends LatLon> locations)
locations - Locations to test.
canContainPole() returns false.protected ShapeAttributes createActiveAttributes()
protected abstract List<List<LatLon>> createGeometry(Globe globe,
SurfaceTileDrawContext sdc)
protected Object createGeometryKey(DrawContext dc,
SurfaceTileDrawContext sdc)
protected List<LatLon> cutAlongDateLine(List<LatLon> locations,
String pole,
Globe globe)
locations - Locations to cut at date line. This list is not modified.pole - Pole contained by locations, either AVKey.NORTH or AVKey.SOUTH.globe - Current globe.
protected void determineActiveAttributes()
protected void determineActiveGeometry(DrawContext dc,
SurfaceTileDrawContext sdc)
protected void doDrawGeographic(DrawContext dc,
SurfaceTileDrawContext sdc)
protected void doGetRestorableState(RestorableSupport rs,
RestorableSupport.StateObject context)
protected abstract void doMoveTo(Position oldReferencePosition,
Position newReferencePosition)
protected void doRestoreState(RestorableSupport rs,
RestorableSupport.StateObject context)
protected Integer doTessellateInterior(DrawContext dc)
protected void drawGeographic(DrawContext dc,
SurfaceTileDrawContext sdc)
AbstractSurfaceObject
drawGeographic in class AbstractSurfaceObjectdc - the current draw context.sdc - the context containing a geographic region and screen viewport corresponding to a surface tile.
protected void drawInterior(DrawContext dc,
SurfaceTileDrawContext sdc)
protected void drawOutline(DrawContext dc,
SurfaceTileDrawContext sdc)
protected void endDrawing(DrawContext dc)
public void export(String mimeType,
Object output)
throws IOException,
UnsupportedOperationException
output object will receive the exported data. The type of this object depends on
the export format. The formats and object types supported by this class are:
Format Supported output object types
================================================================================
KML (application/vnd.google-earth.kml+xml) java.io.Writer
java.io.OutputStream
javax.xml.stream.XMLStreamWriter
mimeType - MIME type of desired export format.output - An object that will receive the exported data. The type of this object depends on the export
format (see above).
IOException - If an exception occurs writing to the output object.
UnsupportedOperationException - if the format is not supported by this object, or if the output
argument is not of a supported type.
protected void exportAsKML(Object output)
throws IOException,
XMLStreamException
IOException
XMLStreamException
protected void generateIntermediateLocations(Iterable<? extends LatLon> iterable,
double edgeIntervalsPerDegree,
boolean makeClosedPath,
List<LatLon> locations)
protected ShapeAttributes getActiveAttributes()
protected List<List<LatLon>> getActiveGeometry()
public double getArea(Globe globe)
MeasurableArea
getArea in interface MeasurableAreaglobe - The globe the object is related to.
public double getArea(Globe globe,
boolean terrainConformant)
SurfaceShapeterrainConformant is true, the area returned is the
surface area of the terrain, including its hillsides and other undulations.
getArea in interface SurfaceShapeglobe - the globe the shape is related to.terrainConformant - whether or not the returned area should treat the shape as conforming to the terrain.
public ShapeAttributes getAttributes()
getAttributes in interface SurfaceShape
protected List<List<LatLon>> getCachedGeometry(DrawContext dc,
SurfaceTileDrawContext sdc)
public Extent getExtent(Globe globe,
double verticalExaggeration)
Extent in model coordinates,
given a specified Globe and vertical exaggeration (see SceneController.getVerticalExaggeration().
getExtent in interface ExtentHolderglobe - the Globe this SurfaceShape is related to.verticalExaggeration - the vertical exaggeration of the scene containing this SurfaceShape.
IllegalArgumentException - if the Globe is null.public double getHeight(Globe globe)
MeasurableArea
getHeight in interface MeasurableAreaglobe - The globe the object is related to.
public ShapeAttributes getHighlightAttributes()
getHighlightAttributes in interface SurfaceShapeprotected WWTexture getInteriorTexture()
public double getLength(Globe globe)
MeasurableLength
getLength in interface MeasurableLengthglobe - The globe the object is related to.
public int[] getMinAndMaxEdgeIntervals()
SurfaceShape
getMinAndMaxEdgeIntervals in interface SurfaceShapeSurfaceShape.setMinAndMaxEdgeIntervals(int, int)public String getPathType()
SurfaceShape
getPathType in interface SurfaceShapepublic double getPerimeter(Globe globe)
MeasurableArea
getPerimeter in interface MeasurableAreaglobe - The globe the object is related to.
public abstract Position getReferencePosition()
Movable
getReferencePosition in interface Movablepublic String getRestorableState()
RestorablerestoreState and passing the XML document.
getRestorableState in interface Restorablepublic List<Sector> getSectors(DrawContext dc)
SurfaceObjectList of Sector instances that bound the surface
object on the specified DrawContext.
getSectors in interface SurfaceObjectdc - the DrawContext the surface object is related to.
public Object getStateKey(DrawContext dc)
Globe. Subclasses
that depend on the Globe should return a state key that include the globe's state key.
getStateKey in interface SurfaceObjectgetStateKey in class AbstractSurfaceObjectdc - the draw context the state key relates to.
public double getTexelsPerEdgeInterval()
SurfaceShape
getTexelsPerEdgeInterval in interface SurfaceShapeSurfaceShape.setTexelsPerEdgeInterval(double)public double getWidth(Globe globe)
MeasurableArea
getWidth in interface MeasurableAreaglobe - The globe the object is related to.
protected void handleUnsuccessfulInteriorTessellation(DrawContext dc)
protected LatLon intersectionWithMeridian(LatLon p1,
LatLon p2,
Angle meridian,
Globe globe)
p1 - First position.p2 - Second position.meridian - Longitude line to intersect with.globe - Globe used to compute intersection.
public String isExportFormatSupported(String format)
format - Mime type for the export format.
Exportable.FORMAT_SUPPORTED, Exportable.FORMAT_NOT_SUPPORTED, or Exportable.FORMAT_PARTIALLY_SUPPORTED.export(String, Object)public boolean isHighlighted()
isHighlighted in interface HighlightableisHighlighted in interface SurfaceShapeSurfaceShape.setHighlighted(boolean),
SurfaceShape.setHighlightAttributes(ShapeAttributes)protected static boolean isSectorEmpty(Sector sector)
protected void legacyRestoreState(RestorableSupport rs,
RestorableSupport.StateObject context)
doRestoreState(gov.nasa.worldwind.util.RestorableSupport,
gov.nasa.worldwind.util.RestorableSupport.StateObject).
rs - RestorableSupport object which contains the state value properties.context - active context in the RestorableSupport to read state from.protected void makeOrderedPreRenderable(DrawContext dc)
makeOrderedPreRenderable in class AbstractSurfaceObjectdc - the current draw context.public void move(Position position)
Movable
move in interface Movableposition - the latitude and longitude to add to the shape's reference position.public void moveTo(Position position)
Movable
moveTo in interface Movableposition - the new position of the shape's reference position.protected void onShapeChanged()
protected String pathTypeFromString(String s)
protected List<List<LatLon>> repeatAroundDateline(List<LatLon> locations)
locations - Locations to repeat. This is list not modified.
public void restoreState(String stateInXml)
Restorable
restoreState in interface RestorablestateInXml - an XML document string describing an object's state.public void setAttributes(ShapeAttributes normalAttrs)
setAttributes in interface SurfaceShapenormalAttrs - the normal attributes. May be null, in which case default attributes are used.public void setHighlightAttributes(ShapeAttributes highlightAttrs)
setHighlightAttributes in interface SurfaceShapehighlightAttrs - the highlight attributes. May be null, in which case default attributes are used.public void setHighlighted(boolean highlighted)
setHighlighted in interface HighlightablesetHighlighted in interface SurfaceShapehighlighted - true to highlight the surface shape, otherwise false. The default value is false.SurfaceShape.setHighlightAttributes(ShapeAttributes)
public void setMinAndMaxEdgeIntervals(int minEdgeIntervals,
int maxEdgeIntervals)
SurfaceShapeminEdgeIntervals
or maxEdgeIntervals too large may adversely impact surface shape rendering performance.
setMinAndMaxEdgeIntervals in interface SurfaceShapeminEdgeIntervals - the minimum number of interpolated edge intervals.maxEdgeIntervals - the maximum number of interpolated edge intervals.SurfaceShape.setTexelsPerEdgeInterval(double)public void setPathType(String pathType)
SurfaceShape
setPathType in interface SurfaceShapepathType - path interpolation type.public void setTexelsPerEdgeInterval(double texelsPerEdgeInterval)
SurfaceShapeSurfaceShape.setMinAndMaxEdgeIntervals(int, int).
setTexelsPerEdgeInterval in interface SurfaceShapetexelsPerEdgeInterval - the size, in texels, of each interpolated edge interval.SurfaceShape.setMinAndMaxEdgeIntervals(int, int)protected AreaMeasurer setupAreaMeasurer(Globe globe)
protected Integer tessellateInterior(DrawContext dc)
protected Integer tessellateInteriorVertices(GLUtessellator tess)
|
NASA World Wind | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||