public class SurfacePolygon extends AbstractSurfaceShape implements Exportable
| Modifier and Type | Class and Description |
|---|---|
protected static class |
SurfacePolygon.ShapeData |
protected static class |
SurfacePolygon.Vertex |
AbstractSurfaceShape.GeometryKey, AbstractSurfaceShape.SurfaceShapeStateKeyAbstractSurfaceObject.CacheEntry, AbstractSurfaceObject.SurfaceObjectStateKey| Modifier and Type | Field and Description |
|---|---|
protected java.util.List<java.lang.Iterable<? extends LatLon>> |
boundaries |
protected WWTexture |
explicitTexture
If an image source was specified, this is the WWTexture form.
|
protected float[] |
explicitTextureCoords
This shape's texture coordinates.
|
protected java.util.Map<java.lang.Object,SurfacePolygon.ShapeData> |
shapeDataCache |
protected static com.jogamp.opengl.glu.GLUtessellator |
tess |
protected static GLUTessellatorSupport.CollectPrimitivesCallback |
tessCallback |
activeAttrs, activeGeometry, activeOutlineGeometry, areaMeasurer, areaMeasurerLastModifiedTime, DEFAULT_HIGHLIGHT_MATERIAL, DEFAULT_INTERIOR_MATERIAL, DEFAULT_MAX_EDGE_INTERVALS, DEFAULT_MIN_EDGE_INTERVALS, DEFAULT_OUTLINE_MATERIAL, DEFAULT_PATH_TYPE, DEFAULT_TEXELS_PER_EDGE_INTERVAL, defaultAttrs, dragEnabled, draggableSupport, geometryCache, highlightAttrs, highlighted, maxEdgeIntervals, minEdgeIntervals, normalAttrs, pathType, sectorCache, stackHandler, texelsPerEdgeInterval, texture, vertexBufferdelegateOwner, drawBoundingSectors, enableBatchPicking, extentCache, lastModifiedTime, nextUniqueId, pickLayer, pickSupport, pickTileBuilder, uniqueId, visibleFORMAT_NOT_SUPPORTED, FORMAT_PARTIALLY_SUPPORTED, FORMAT_SUPPORTED| Constructor and Description |
|---|
SurfacePolygon()
Constructs a new surface polygon with the default attributes and no locations.
|
SurfacePolygon(java.lang.Iterable<? extends LatLon> iterable)
Constructs a new surface polygon with the default attributes and the specified iterable of locations.
|
SurfacePolygon(ShapeAttributes normalAttrs)
Constructs a new surface polygon with the specified normal (as opposed to highlight) attributes and no locations.
|
SurfacePolygon(ShapeAttributes normalAttrs,
java.lang.Iterable<? extends LatLon> iterable)
Constructs a new surface polygon with the specified normal (as opposed to highlight) attributes and the specified
iterable of locations.
|
SurfacePolygon(SurfacePolygon source)
Creates a shallow copy of the specified source shape.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addInnerBoundary(java.lang.Iterable<? extends LatLon> iterable) |
protected void |
applyInteriorState(DrawContext dc,
SurfaceTileDrawContext sdc,
ShapeAttributes attributes,
WWTexture texture,
LatLon refLocation) |
protected java.util.List<java.util.List<SurfacePolygon.Vertex>> |
assembleContours(Angle maxEdgeLength) |
protected void |
clearCaches()
Clears this SurfaceObject's internal extent cache.
|
protected java.util.List<java.util.List<SurfacePolygon.Vertex>> |
clipWithDateline(java.util.List<SurfacePolygon.Vertex> contour) |
protected java.util.List<SurfacePolygon.Vertex> |
clipWithPole(java.util.List<SurfacePolygon.Vertex> contour,
java.lang.String pole,
Angle maxEdgeLength) |
protected void |
closeContour(java.util.List<SurfacePolygon.Vertex> contour) |
protected java.util.List<java.util.List<LatLon>> |
createGeometry(Globe globe,
double edgeIntervalsPerDegree) |
protected void |
doDrawGeographic(DrawContext dc,
SurfaceTileDrawContext sdc) |
protected void |
doGetRestorableState(RestorableSupport rs,
RestorableSupport.StateObject context) |
protected void |
doMoveTo(Globe globe,
Position oldReferencePosition,
Position newReferencePosition) |
protected void |
doMoveTo(Position oldReferencePosition,
Position newReferencePosition) |
protected void |
doRestoreState(RestorableSupport rs,
RestorableSupport.StateObject context) |
protected void |
exportAsKML(java.lang.Object output)
Export the polygon to KML as a
<Placemark> element. |
java.util.List<java.lang.Iterable<? extends LatLon>> |
getBoundaries() |
java.lang.Iterable<? extends LatLon> |
getLocations() |
java.lang.Iterable<? extends LatLon> |
getLocations(Globe globe)
Returns the shape's locations as they appear on the specified
globe, or null if the shape has no
locations. |
java.lang.Iterable<? extends LatLon> |
getOuterBoundary() |
Position |
getReferencePosition()
A position associated with the object that indicates its aggregate geographic position.
|
float[] |
getTextureCoords()
Returns the texture coordinates for this polygon.
|
java.lang.Object |
getTextureImageSource()
Returns this polygon's texture image source.
|
protected void |
handleUnsuccessfulInteriorTessellation(DrawContext dc)
Overridden to clear the polygon's locations iterable upon an unsuccessful tessellation attempt.
|
protected void |
legacyRestoreState(RestorableSupport rs,
RestorableSupport.StateObject context)
Restores state values from previous versions of the SurfaceShape state XML.
|
void |
setLocations(java.lang.Iterable<? extends LatLon> iterable) |
void |
setOuterBoundary(java.lang.Iterable<? extends LatLon> iterable) |
void |
setTextureImageSource(java.lang.Object imageSource,
float[] texCoords,
int texCoordCount)
Specifies the texture to apply to this polygon.
|
protected void |
subdivideContour(java.util.List<SurfacePolygon.Vertex> contour,
Angle maxEdgeLength) |
protected void |
subdivideEdge(SurfacePolygon.Vertex begin,
SurfacePolygon.Vertex end,
Angle maxEdgeLength,
java.util.List<SurfacePolygon.Vertex> result) |
protected SurfacePolygon.ShapeData |
tessellateContours(java.util.List<java.util.List<SurfacePolygon.Vertex>> contours) |
protected double[] |
uvWeightedAverage(java.util.List<SurfacePolygon.Vertex> contour,
SurfacePolygon.Vertex vertex) |
addIntermediateLocations, applyInteriorTextureState, applyModelviewTransform, applyOutlineState, beginDrawing, canContainPole, combine, combineBounds, combineContours, computeEdgeIntervalsPerDegree, computeEdgeIntervalsPerDegree, computeSectors, computeSectors, containsPole, createActiveAttributes, createGeometry, createGeometryKey, cutAlongDateLine, determineActiveAttributes, determineActiveGeometry, doCombineContour, doCombineContours, doDrag, doTessellateInterior, drag, drawGeographic, drawInterior, drawLineStrip, drawOutline, endDrawing, export, generateIntermediateLocations, getActiveAttributes, getActiveGeometry, getArea, getArea, getAttributes, getCachedGeometry, getExtent, getHeight, getHighlightAttributes, getInteriorTexture, getLength, getMinAndMaxEdgeIntervals, getPathType, getPerimeter, getRestorableState, getSectors, getStateKey, getTexelsPerEdgeInterval, getWidth, isDragEnabled, isExportFormatSupported, isHighlighted, isSectorEmpty, makeOrderedPreRenderable, move, moveTo, moveTo, pathTypeFromString, repeatAroundDateline, restoreState, setAttributes, setDragEnabled, setHighlightAttributes, setHighlighted, setMinAndMaxEdgeIntervals, setPathType, setTexelsPerEdgeInterval, setupAreaMeasurer, tessellateInterior, tessellateInteriorVerticesbuildPickRepresentation, computeExtent, computeExtent, createPickedObject, createPickTileBuilder, drawBoundingSectors, drawOrderedRenderable, drawPickRepresentation, getDelegateOwner, getDistanceFromEye, getExtent, getUniqueId, intersectsFrustum, intersectsPickFrustum, intersectsVisibleSector, isDrawBoundingSectors, isEnableBatchPicking, isVisible, makeOrderedRenderable, nextUniqueId, onShapeChanged, pick, pickBatched, pickOrderedRenderable, preRender, render, setDelegateOwner, setDrawBoundingSectors, setEnableBatchPicking, setVisible, updateModifiedTimeonMessage, propertyChangeaddPropertyChangeListener, 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, setValuesclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitexport, isExportFormatSupportedgetDelegateOwner, getDistanceFromEye, getExtent, isEnableBatchPicking, isVisible, pick, preRender, setDelegateOwner, setEnableBatchPicking, setVisiblerenderaddPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValuesprotected java.util.List<java.lang.Iterable<? extends LatLon>> boundaries
protected WWTexture explicitTexture
protected float[] explicitTextureCoords
protected java.util.Map<java.lang.Object,SurfacePolygon.ShapeData> shapeDataCache
protected static com.jogamp.opengl.glu.GLUtessellator tess
protected static GLUTessellatorSupport.CollectPrimitivesCallback tessCallback
public SurfacePolygon()
public SurfacePolygon(java.lang.Iterable<? extends LatLon> iterable)
Note: If fewer than three locations is specified, no polygon is drawn.
iterable - the polygon locations.java.lang.IllegalArgumentException - if the locations iterable is null.public SurfacePolygon(ShapeAttributes normalAttrs)
normalAttrs - the normal attributes. May be null, in which case default attributes are used.public SurfacePolygon(ShapeAttributes normalAttrs, java.lang.Iterable<? extends LatLon> iterable)
Note: If fewer than three locations is specified, no polygon is drawn.
normalAttrs - the normal attributes. May be null, in which case default attributes are used.iterable - the polygon locations.java.lang.IllegalArgumentException - if the locations iterable is null.public SurfacePolygon(SurfacePolygon source)
source - the shape to copy.public void addInnerBoundary(java.lang.Iterable<? extends LatLon> iterable)
protected void applyInteriorState(DrawContext dc, SurfaceTileDrawContext sdc, ShapeAttributes attributes, WWTexture texture, LatLon refLocation)
applyInteriorState in class AbstractSurfaceShapeprotected java.util.List<java.util.List<SurfacePolygon.Vertex>> assembleContours(Angle maxEdgeLength)
protected void clearCaches()
AbstractSurfaceShapeOverridden to clear this SurfaceShape's internal sector and geometry caches.
clearCaches in class AbstractSurfaceShapeprotected java.util.List<java.util.List<SurfacePolygon.Vertex>> clipWithDateline(java.util.List<SurfacePolygon.Vertex> contour)
protected java.util.List<SurfacePolygon.Vertex> clipWithPole(java.util.List<SurfacePolygon.Vertex> contour, java.lang.String pole, Angle maxEdgeLength)
protected void closeContour(java.util.List<SurfacePolygon.Vertex> contour)
protected java.util.List<java.util.List<LatLon>> createGeometry(Globe globe, double edgeIntervalsPerDegree)
createGeometry in class AbstractSurfaceShapeprotected void doDrawGeographic(DrawContext dc, SurfaceTileDrawContext sdc)
doDrawGeographic in class AbstractSurfaceShapeprotected void doGetRestorableState(RestorableSupport rs, RestorableSupport.StateObject context)
doGetRestorableState in class AbstractSurfaceShapeprotected void doMoveTo(Globe globe, Position oldReferencePosition, Position newReferencePosition)
doMoveTo in class AbstractSurfaceShapeprotected void doMoveTo(Position oldReferencePosition, Position newReferencePosition)
doMoveTo in class AbstractSurfaceShapeprotected void doRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
doRestoreState in class AbstractSurfaceShapeprotected void exportAsKML(java.lang.Object output)
throws java.io.IOException,
javax.xml.stream.XMLStreamException
<Placemark> element. The output object will receive the data. This
object must be one of: java.io.Writer java.io.OutputStream javax.xml.stream.XMLStreamWriterexportAsKML in class AbstractSurfaceShapeoutput - Object to receive the generated KML.javax.xml.stream.XMLStreamException - If an exception occurs while writing the KMLjava.io.IOException - if an exception occurs while exporting the data.AbstractSurfaceShape.export(String, Object)public java.util.List<java.lang.Iterable<? extends LatLon>> getBoundaries()
public java.lang.Iterable<? extends LatLon> getLocations()
public java.lang.Iterable<? extends LatLon> getLocations(Globe globe)
SurfaceShapeglobe, or null if the shape has no
locations.getLocations in interface SurfaceShapeglobe - the globe the shape is related to.public java.lang.Iterable<? extends LatLon> getOuterBoundary()
public Position getReferencePosition()
MovablegetReferencePosition in interface MovablegetReferencePosition in interface Movable2getReferencePosition in class AbstractSurfaceShapepublic float[] getTextureCoords()
public java.lang.Object getTextureImageSource()
protected void handleUnsuccessfulInteriorTessellation(DrawContext dc)
handleUnsuccessfulInteriorTessellation in class AbstractSurfaceShapedc - the current DrawContext.protected void legacyRestoreState(RestorableSupport rs, RestorableSupport.StateObject context)
AbstractSurfaceShapeAbstractSurfaceShape.doRestoreState(gov.nasa.worldwind.util.RestorableSupport,
gov.nasa.worldwind.util.RestorableSupport.StateObject).legacyRestoreState in class AbstractSurfaceShapers - RestorableSupport object which contains the state value properties.context - active context in the RestorableSupport to read state from.public void setLocations(java.lang.Iterable<? extends LatLon> iterable)
public void setOuterBoundary(java.lang.Iterable<? extends LatLon> iterable)
public void setTextureImageSource(java.lang.Object imageSource,
float[] texCoords,
int texCoordCount)
imageSource - the texture image source. May be a String identifying a file path or URL, a File, or a URL.texCoords - the (s, t) texture coordinates aligning the image to the polygon. There must be one texture
coordinate pair, (s, t), for each polygon location in the polygon's outer boundary.texCoordCount - the number of texture coordinates, (s, v) pairs, specified.java.lang.IllegalArgumentException - if the image source is not null and either the texture coordinates are null or
inconsistent with the specified texture-coordinate count, or there are fewer
than three texture coordinate pairs.protected void subdivideContour(java.util.List<SurfacePolygon.Vertex> contour, Angle maxEdgeLength)
protected void subdivideEdge(SurfacePolygon.Vertex begin, SurfacePolygon.Vertex end, Angle maxEdgeLength, java.util.List<SurfacePolygon.Vertex> result)
protected SurfacePolygon.ShapeData tessellateContours(java.util.List<java.util.List<SurfacePolygon.Vertex>> contours)
protected double[] uvWeightedAverage(java.util.List<SurfacePolygon.Vertex> contour, SurfacePolygon.Vertex vertex)