NASA World Wind

gov.nasa.worldwind.render
Class ScreenImage

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.WWObjectImpl
          extended by gov.nasa.worldwind.render.ScreenImage
All Implemented Interfaces:
AVList, MessageListener, Exportable, Renderable, WWObject, PropertyChangeListener, EventListener
Direct Known Subclasses:
KMLScreenImageImpl, ScreenCreditImage

public class ScreenImage
extends WWObjectImpl
implements Renderable, Exportable

Draws an image parallel to the screen at a specified screen location relative to the World Window. If no image is specified, a filled rectangle is drawn in its place.


Nested Class Summary
protected  class ScreenImage.OrderedImage
           
 
Field Summary
protected  Point awtScreenLocation
          Indicates the location of this screen image in the viewport (on the screen) in AWT coordinates.
protected  Color color
           
protected  Object delegateOwner
           
protected  double dx
           
protected  double dy
           
protected  long frameNumber
           
protected  int height
           
protected  Offset imageOffset
           
protected  Object imageSource
           
protected  double opacity
           
protected  ScreenImage.OrderedImage orderedImage
           
protected  int originalImageHeight
           
protected  int originalImageWidth
           
protected  Layer pickLayer
           
protected  PickSupport pickSupport
           
protected  Double rotation
           
protected  Offset rotationOffset
           
protected  Point rotationPoint
           
protected  Point screenLocation
          Indicates the location of this screen image in the viewport (on the screen) in OpenGL coordinates.
protected  Offset screenOffset
           
protected  Size size
           
protected  BasicWWTexture texture
           
protected  int width
           
 
Fields inherited from interface gov.nasa.worldwind.Exportable
FORMAT_NOT_SUPPORTED, FORMAT_PARTIALLY_SUPPORTED, FORMAT_SUPPORTED
 
Constructor Summary
ScreenImage()
           
 
Method Summary
protected  void computeOffsets(DrawContext dc)
          Compute the image size, rotation, and position based on the current viewport size.
protected  void doRender(DrawContext dc)
           
protected  void draw(DrawContext dc)
           
 void export(String mimeType, Object output)
          Export the screen image.
protected  void exportAsKML(Object output)
          Export the screen image to KML as a <ScreenOverlay> element.
 Color getColor()
          If no image is set, or if the image is not yet available, a rectangle will be drawn in this color.
 Object getDelegateOwner()
          Indicates the object included in SelectEvents when this object is picked.
 int getImageHeight(DrawContext dc)
          Returns the height of the image after dynamic scaling has been applied.
 Offset getImageOffset()
          Get the offset of the point on the image to align with the screen offset point.
 Object getImageSource()
          Returns the current image source.
 int getImageWidth(DrawContext dc)
          Returns the width of the source image after dynamic scaling has been applied.
 double getOpacity()
          Returns the opacity of the surface.
 Double getRotation()
          Get the rotation applied to the image.
 Offset getRotationOffset()
          Get the point about which the image is rotated.
 Point getScreenLocation()
          Returns the location of the image on the screen.
 Point getScreenLocation(DrawContext dc)
          Returns the location of the image on the screen.
 Offset getScreenOffset()
          Get the offset of the point on the screen to align with the image offset point.
 Size getSize()
          Get the dimension to apply to the image.
protected  BasicWWTexture getTexture()
          Get the texture for this image.
protected  BasicWWTexture initializeTexture()
          Create and initialize the texture from the image source.
 String isExportFormatSupported(String format)
          Does this object support a certain export format?
 void pick(DrawContext dc, Point pickPoint)
           
 void render(DrawContext dc)
          Causes this Renderable to render itself using the provided draw context.
 void setColor(Color defaultColor)
          Set the color of the rectangle drawn when the image cannot be drawn.
 void setDelegateOwner(Object delegateOwner)
          Specify the object to identify as the picked object when this shape is picked.
 void setImageOffset(Offset imageOffset)
          Set the image offset point.
 void setImageSource(Object imageSource)
          Specifies the image source, which may be either a file path String or a BufferedImage.
 void setOpacity(double opacity)
          Sets the opacity of the surface.
 void setRotation(Double rotation)
          Specifies a rotation to be applied to the image.
 void setRotationOffset(Offset rotationOffset)
          Set the point on the image about which rotation is performed.
 void setScreenLocation(Point screenLocation)
          Convenience method to specify the location of the image on the screen.
 void setScreenOffset(Offset screenOffset)
          Set the offset of the image relative to the viewport.
 void setSize(Size size)
          Set a dynamic dimension to apply to the image.
 
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.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 

Field Detail

awtScreenLocation

protected Point awtScreenLocation
Indicates the location of this screen image in the viewport (on the screen) in AWT coordinates. This property is assigned in setScreenLocation and computeOffsets. In computeOffsets, this is computed by converting the screenLocation from OpenGL coordinates to AWT coordinates. Initially null.


color

protected Color color

delegateOwner

protected Object delegateOwner

dx

protected double dx

dy

protected double dy

frameNumber

protected long frameNumber

height

protected int height

imageOffset

protected Offset imageOffset

imageSource

protected Object imageSource

opacity

protected double opacity

orderedImage

protected ScreenImage.OrderedImage orderedImage

originalImageHeight

protected int originalImageHeight

originalImageWidth

protected int originalImageWidth

pickLayer

protected Layer pickLayer

pickSupport

protected PickSupport pickSupport

rotation

protected Double rotation

rotationOffset

protected Offset rotationOffset

rotationPoint

protected Point rotationPoint

screenLocation

protected Point screenLocation
Indicates the location of this screen image in the viewport (on the screen) in OpenGL coordinates. This property is computed in computeOffsets and used in draw Initially null.


screenOffset

protected Offset screenOffset

size

protected Size size

texture

protected BasicWWTexture texture

width

protected int width
Constructor Detail

ScreenImage

public ScreenImage()
Method Detail

computeOffsets

protected void computeOffsets(DrawContext dc)
Compute the image size, rotation, and position based on the current viewport size. This method updates the calculated values for screen point, rotation point, width, and height. The calculation is not performed if the values have already been calculated for this frame.

Parameters:
dc - DrawContext into which the image will be rendered.

doRender

protected void doRender(DrawContext dc)

draw

protected void draw(DrawContext dc)

export

public void export(String mimeType,
                   Object output)
            throws IOException
Export the screen image. The 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
 

Specified by:
export in interface Exportable
Parameters:
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).
Throws:
IOException - If an exception occurs writing to the output object.
See Also:
Exportable.isExportFormatSupported(String)

exportAsKML

protected void exportAsKML(Object output)
                    throws IOException,
                           XMLStreamException
Export the screen image to KML as a <ScreenOverlay> element. The output object will receive the data. This object must be one of: java.io.Writer java.io.OutputStream javax.xml.stream.XMLStreamWriter.

The image path can only be exported if the image source is a path or URL. If the image source is a BufferedImage, for example, the image will not be exported and no icon reference will be written into the ScreenOverlay tag.

Parameters:
output - Object to receive the generated KML.
Throws:
XMLStreamException - If an exception occurs while writing the KML
IOException - if an exception occurs while exporting the data.
See Also:
export(String, Object)

getColor

public Color getColor()
If no image is set, or if the image is not yet available, a rectangle will be drawn in this color.

Returns:
The color for the default rectangle.

getDelegateOwner

public Object getDelegateOwner()
Indicates the object included in SelectEvents when this object is picked.

Returns:
the object identified as the picked object.

getImageHeight

public int getImageHeight(DrawContext dc)
Returns the height of the image after dynamic scaling has been applied. If no image has been specified, but a dimension has been specified, the height of the dimension is returned.

Parameters:
dc - the current draw context.
Returns:
the source image height after scaling.
See Also:
getSize()

getImageOffset

public Offset getImageOffset()
Get the offset of the point on the image to align with the screen offset point.

Returns:
Offset of the image point that will be aligned to the screen offset point.
See Also:
getScreenOffset()

getImageSource

public Object getImageSource()
Returns the current image source.

Returns:
the current image source.
See Also:
getImageSource()

getImageWidth

public int getImageWidth(DrawContext dc)
Returns the width of the source image after dynamic scaling has been applied. If no image has been specified, but a dimension has been specified, the width of the dimension is returned.

Parameters:
dc - the current draw context.
Returns:
the source image width after scaling.
See Also:
getSize()

getOpacity

public double getOpacity()
Returns the opacity of the surface. A value of 1 or greater means the surface is fully opaque, a value of 0 means that the surface is fully transparent.

Returns:
the surface opacity.

getRotation

public Double getRotation()
Get the rotation applied to the image.

Returns:
Rotation in decimal degrees, or null if there is no rotation.
See Also:
getRotationOffset()

getRotationOffset

public Offset getRotationOffset()
Get the point about which the image is rotated.

Returns:
Rotation point in image coordinates, or null if there is no rotation point set. The origin of the coordinate system is at the lower left corner of the image.
See Also:
getRotation()

getScreenLocation

public Point getScreenLocation()
Returns the location of the image on the screen. The position is relative to the upper-left corner of the World Window. The point specified by the image offset will be aligned to this point. If the position was specified as an offset, it may change if the viewport size changes. The value returned by this method is the most recently computed screen location. Call getScreenLocation(DrawContext) to ensure an accurate result based on the current viewport.

Returns:
the current screen position.
See Also:
getScreenLocation(DrawContext), getImageOffset(), getScreenOffset()

getScreenLocation

public Point getScreenLocation(DrawContext dc)
Returns the location of the image on the screen. The position is relative to the upper-left corner of the World Window. The image is centered on this position.

Parameters:
dc - The DrawContext in which the image will be drawn.
Returns:
the current screen position.

getScreenOffset

public Offset getScreenOffset()
Get the offset of the point on the screen to align with the image offset point.

Returns:
Offset of the image point that will be aligned to the image offset point.
See Also:
getImageOffset()

getSize

public Size getSize()
Get the dimension to apply to the image.

Returns:
Image dimension.

getTexture

protected BasicWWTexture getTexture()
Get the texture for this image. The texture is loaded on a background thread. This method will return null until the texture has been loaded.

Returns:
The texture or null if the texture is not yet available.

initializeTexture

protected BasicWWTexture initializeTexture()
Create and initialize the texture from the image source. If the image is not in memory this method will request that it be loaded and return null.

Returns:
The texture, or null if the texture is not yet available.

isExportFormatSupported

public String isExportFormatSupported(String format)
Does this object support a certain export format?

Specified by:
isExportFormatSupported in interface Exportable
Parameters:
format - Desired export format.
Returns:
One of Exportable.FORMAT_SUPPORTED, Exportable.FORMAT_NOT_SUPPORTED, or Exportable.FORMAT_PARTIALLY_SUPPORTED.
See Also:
Exportable.export(String, Object)

pick

public void pick(DrawContext dc,
                 Point pickPoint)

render

public void render(DrawContext dc)
Description copied from interface: Renderable
Causes this Renderable to render itself using the provided draw context.

Specified by:
render in interface Renderable
Parameters:
dc - the DrawContext to be used
See Also:
DrawContext

setColor

public void setColor(Color defaultColor)
Set the color of the rectangle drawn when the image cannot be drawn. The image may not be drawn because it has not been loaded, or because no image has been set.

Parameters:
defaultColor - New color for the default rectangle.

setDelegateOwner

public void setDelegateOwner(Object delegateOwner)
Specify the object to identify as the picked object when this shape is picked.

Parameters:
delegateOwner - the object included in SelectEvents as the picked object.

setImageOffset

public void setImageOffset(Offset imageOffset)
Set the image offset point. This point will be aligned to the screen point identified by the screen offset.

Parameters:
imageOffset - Offset that identifies a point on the image to align with the screen offset point.
See Also:
setScreenOffset(Offset)

setImageSource

public void setImageSource(Object imageSource)
Specifies the image source, which may be either a file path String or a BufferedImage. If the image is not already in memory, it will be loaded in the background.

Parameters:
imageSource - the image source, either a file path String or a BufferedImage.
Throws:
IllegalArgumentException - if the imageSource is null.

setOpacity

public void setOpacity(double opacity)
Sets the opacity of the surface. A value of 1 or greater means the surface is fully opaque, a value of 0 means that the surface is fully transparent.

Parameters:
opacity - a positive value indicating the opacity of the surface.
Throws:
IllegalArgumentException - if the specified opacity is less than zero.

setRotation

public void setRotation(Double rotation)
Specifies a rotation to be applied to the image.

Parameters:
rotation - Rotation in decimal degrees.
See Also:
setRotationOffset(Offset)

setRotationOffset

public void setRotationOffset(Offset rotationOffset)
Set the point on the image about which rotation is performed.

Parameters:
rotationOffset - Rotation offset.
See Also:
setRotation(Double)

setScreenLocation

public void setScreenLocation(Point screenLocation)
Convenience method to specify the location of the image on the screen. The specified screenLocation is relative to the upper-left corner of the World Window, and the image is centered on this location.

Parameters:
screenLocation - the screen location on which to center the image. May be null, in which case the image is not displayed.
See Also:
setScreenOffset(Offset), setImageOffset(Offset)

setScreenOffset

public void setScreenOffset(Offset screenOffset)
Set the offset of the image relative to the viewport. The screen point identified by this offset will be aligned to the image point identified by the image offset.

Parameters:
screenOffset - The screen offset.
See Also:
setImageOffset(Offset)

setSize

public void setSize(Size size)
Set a dynamic dimension to apply to the image. The dimension allows the image to be scaled relative to the viewport size.

Parameters:
size - Image dimension. May not be null.

NASA World Wind