Package org.geotools.coverage
Class AbstractCoverage.Renderable
- Object
-
- PropertySourceImpl
-
- Renderable
-
- All Implemented Interfaces:
RenderableImage,Serializable,ImageFunction,PropertySource
- Direct Known Subclasses:
GridCoverage2D.Renderable
- Enclosing class:
- AbstractCoverage
protected class AbstractCoverage.Renderable extends PropertySourceImpl implements RenderableImage, ImageFunction
A view of a coverage as a renderable image. Renderable images allow interoperability with Java2D for a two-dimensional slice of a coverage (which may or may not be a grid coverage).- Author:
- Martin Desruisseaux (IRD)
- See Also:
AbstractCoverage.getRenderableImage(int, int), Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected GeneralPositioncoordinateA coordinate point where to evaluate the function.protected intxAxisDimension to use for x axis.protected intyAxisDimension to use for y axis.-
Fields inherited from interface RenderableImage
HINTS_OBSERVED
-
-
Constructor Summary
Constructors Constructor Description Renderable(int xAxis, int yAxis)Constructs a renderable image.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RenderedImagecreateDefaultRendering()Returns a rendered image with a default width and height in pixels.protected RenderContextcreateRenderContext(Rectangle2D gridBounds, RenderingHints hints)Initializes a render context with an affine transform that maps the coverage envelope to the specified destination rectangle.RenderedImagecreateRendering(RenderContext context)Creates a rendered image using a given render context.RenderedImagecreateScaledRendering(int width, int height, RenderingHints hints)Creates a rendered image with widthwidthand heightheightin pixels.voidgetElements(double startX, double startY, double deltaX, double deltaY, int countX, int countY, int element, double[] real, double[] imag)Returns all values of a given element for a specified set of coordinates.voidgetElements(float startX, float startY, float deltaX, float deltaY, int countX, int countY, int element, float[] real, float[] imag)Returns all values of a given element for a specified set of coordinates.floatgetHeight()Gets the height in coverage coordinate space.floatgetMinX()Gets the minimum X coordinate of the rendering-independent image data.floatgetMinY()Gets the minimum Y coordinate of the rendering-independent image data.intgetNumElements()Returns the number of elements per value at each position.Vector<RenderableImage>getSources()Returnsnullto indicate that no source information is available.floatgetWidth()Gets the width in coverage coordinate space.booleanisComplex()Returnsfalsesince values are not complex.booleanisDynamic()Returnstrueif successive renderings with the same arguments may produce different results.-
Methods inherited from class PropertySourceImpl
getProperties, getProperty, getPropertyClass, getPropertyNames, getPropertyNames
-
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface RenderableImage
getProperty, getPropertyNames
-
-
-
-
Field Detail
-
xAxis
protected final int xAxis
Dimension to use for x axis.
-
yAxis
protected final int yAxis
Dimension to use for y axis.
-
coordinate
protected final GeneralPosition coordinate
A coordinate point where to evaluate the function. The point dimension is equals to the coverage's dimension. The x andyordinates will be ignored, since they will vary for each pixel to be evaluated. Other ordinates, if any, should be set to a fixed value. For example a coverage may be three-dimensional, where the third dimension is the time axis. In such case,coordinate.ord[2]should be set to the point in time where to evaluate the coverage. By default, all ordinates are initialized to 0. Subclasses should set the desired values in their constructor if needed.
-
-
Method Detail
-
getSources
public Vector<RenderableImage> getSources()
Returnsnullto indicate that no source information is available.- Specified by:
getSourcesin interfaceRenderableImage
-
isDynamic
public boolean isDynamic()
Returnstrueif successive renderings with the same arguments may produce different results. The default implementation returnsfalse.- Specified by:
isDynamicin interfaceRenderableImage- See Also:
GridCoverage2D.isDataEditable()
-
isComplex
public boolean isComplex()
Returnsfalsesince values are not complex.- Specified by:
isComplexin interfaceImageFunction- Returns:
- Always
falsein default implementation.
-
getWidth
public float getWidth()
Gets the width in coverage coordinate space.- Specified by:
getWidthin interfaceRenderableImage- See Also:
AbstractCoverage.getEnvelope(),AbstractCoverage.getCoordinateReferenceSystem()
-
getHeight
public float getHeight()
Gets the height in coverage coordinate space.- Specified by:
getHeightin interfaceRenderableImage- See Also:
AbstractCoverage.getEnvelope(),AbstractCoverage.getCoordinateReferenceSystem()
-
getMinX
public float getMinX()
Gets the minimum X coordinate of the rendering-independent image data. This is the coverage's envelope minimal value for the x axis.- Specified by:
getMinXin interfaceRenderableImage- See Also:
AbstractCoverage.getEnvelope(),AbstractCoverage.getCoordinateReferenceSystem()
-
getMinY
public float getMinY()
Gets the minimum Y coordinate of the rendering-independent image data. This is the coverage's envelope minimal value for the y axis.- Specified by:
getMinYin interfaceRenderableImage- See Also:
AbstractCoverage.getEnvelope(),AbstractCoverage.getCoordinateReferenceSystem()
-
createDefaultRendering
public RenderedImage createDefaultRendering()
Returns a rendered image with a default width and height in pixels.- Specified by:
createDefaultRenderingin interfaceRenderableImage- Returns:
- A rendered image containing the rendered data
-
createScaledRendering
public RenderedImage createScaledRendering(int width, int height, RenderingHints hints)
Creates a rendered image with widthwidthand heightheightin pixels. Ifwidthis 0, it will be computed automatically fromheight. Conversely, ifheightis 0, il will be computed automatically fromwidth.The default implementation creates a render context with
createRenderContext(java.awt.geom.Rectangle2D, java.awt.RenderingHints)and invokescreateRendering(RenderContext).- Specified by:
createScaledRenderingin interfaceRenderableImage- Parameters:
width- The width of rendered image in pixels, or 0.height- The height of rendered image in pixels, or 0.hints- Rendering hints, ornull.- Returns:
- A rendered image containing the rendered data
-
createRendering
public RenderedImage createRendering(RenderContext context)
Creates a rendered image using a given render context. This method will uses an "ImageFunction" operation if possible (i.e. if the area of interect is rectangular and the affine transform contains only translation and scale coefficients).- Specified by:
createRenderingin interfaceRenderableImage- Parameters:
context- The render context to use to produce the rendering.- Returns:
- A rendered image containing the rendered data
-
createRenderContext
protected RenderContext createRenderContext(Rectangle2D gridBounds, RenderingHints hints)
Initializes a render context with an affine transform that maps the coverage envelope to the specified destination rectangle. The affine transform mays swap axis in order to normalize their order (i.e. make them appear in the (x,y) order), so that the image appears properly oriented when rendered.- Parameters:
gridBounds- The two-dimensional destination rectangle.hints- The rendering hints, ornullif none.- Returns:
- A render context initialized with an affine transform from the coverage to the grid coordinate
system. This transform is the inverse of
GridGeometry2D.getGridToCRS2D(). - See Also:
GridGeometry2D.getGridToCRS2D()
-
getNumElements
public int getNumElements()
Returns the number of elements per value at each position. This is the maximum value plus 1 allowed ingetElements(...)methods invocation. The default implementation returns the number of sample dimensions in the coverage.- Specified by:
getNumElementsin interfaceImageFunction- Returns:
- The number of sample dimensions.
-
getElements
public void getElements(float startX, float startY, float deltaX, float deltaY, int countX, int countY, int element, float[] real, float[] imag)Returns all values of a given element for a specified set of coordinates. This method is automatically invoked at rendering time for populating an image tile, providing that the rendered image is created using the "ImageFunction" operator and the image type is notdouble.- Specified by:
getElementsin interfaceImageFunction
-
getElements
public void getElements(double startX, double startY, double deltaX, double deltaY, int countX, int countY, int element, double[] real, double[] imag)Returns all values of a given element for a specified set of coordinates. This method is automatically invoked at rendering time for populating an image tile, providing that the rendered image is created using the "ImageFunction" operator and the image type isdouble. The default implementation invokesAbstractCoverage.evaluate(Position,double[])recursively.- Specified by:
getElementsin interfaceImageFunction
-
-