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:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final GeneralPosition
    A coordinate point where to evaluate the function.
    protected final int
    Dimension to use for x axis.
    protected final int
    Dimension to use for y axis.

    Fields inherited from class PropertySourceImpl

    cachedPropertyNames, properties, propertySources

    Fields inherited from interface RenderableImage

    HINTS_OBSERVED
  • Constructor Summary

    Constructors
    Constructor
    Description
    Renderable(int xAxis, int yAxis)
    Constructs a renderable image.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns a rendered image with a default width and height in pixels.
    protected RenderContext
    Initializes a render context with an affine transform that maps the coverage envelope to the specified destination rectangle.
    Creates a rendered image using a given render context.
    createScaledRendering(int width, int height, RenderingHints hints)
    Creates a rendered image with width width and height height in pixels.
    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.
    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.
    float
    Gets the height in coverage coordinate space.
    float
    Gets the minimum X coordinate of the rendering-independent image data.
    float
    Gets the minimum Y coordinate of the rendering-independent image data.
    int
    Returns the number of elements per value at each position.
    Returns null to indicate that no source information is available.
    float
    Gets the width in coverage coordinate space.
    boolean
    Returns false since values are not complex.
    boolean
    Returns true if 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 Details

    • 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 and y ordinates 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.
  • Constructor Details

    • Renderable

      public Renderable(int xAxis, int yAxis)
      Constructs a renderable image.
      Parameters:
      xAxis - Dimension to use for x axis.
      yAxis - Dimension to use for y axis.
  • Method Details

    • getSources

      public Vector<RenderableImage> getSources()
      Returns null to indicate that no source information is available.
      Specified by:
      getSources in interface RenderableImage
    • isDynamic

      public boolean isDynamic()
      Returns true if successive renderings with the same arguments may produce different results. The default implementation returns false.
      Specified by:
      isDynamic in interface RenderableImage
      See Also:
    • isComplex

      public boolean isComplex()
      Returns false since values are not complex.
      Specified by:
      isComplex in interface ImageFunction
      Returns:
      Always false in default implementation.
    • getWidth

      public float getWidth()
      Gets the width in coverage coordinate space.
      Specified by:
      getWidth in interface RenderableImage
      See Also:
    • getHeight

      public float getHeight()
      Gets the height in coverage coordinate space.
      Specified by:
      getHeight in interface RenderableImage
      See Also:
    • 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:
      getMinX in interface RenderableImage
      See Also:
    • 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:
      getMinY in interface RenderableImage
      See Also:
    • createDefaultRendering

      public RenderedImage createDefaultRendering()
      Returns a rendered image with a default width and height in pixels.
      Specified by:
      createDefaultRendering in interface RenderableImage
      Returns:
      A rendered image containing the rendered data
    • createScaledRendering

      public RenderedImage createScaledRendering(int width, int height, RenderingHints hints)
      Creates a rendered image with width width and height height in pixels. If width is 0, it will be computed automatically from height. Conversely, if height is 0, il will be computed automatically from width.

      The default implementation creates a render context with createRenderContext(java.awt.geom.Rectangle2D, java.awt.RenderingHints) and invokes createRendering(RenderContext).

      Specified by:
      createScaledRendering in interface RenderableImage
      Parameters:
      width - The width of rendered image in pixels, or 0.
      height - The height of rendered image in pixels, or 0.
      hints - Rendering hints, or null.
      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:
      createRendering in interface RenderableImage
      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, or null if 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:
    • getNumElements

      public int getNumElements()
      Returns the number of elements per value at each position. This is the maximum value plus 1 allowed in getElements(...) methods invocation. The default implementation returns the number of sample dimensions in the coverage.
      Specified by:
      getNumElements in interface ImageFunction
      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 not double.
      Specified by:
      getElements in interface ImageFunction
    • 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 is double. The default implementation invokes AbstractCoverage.evaluate(Position,double[]) recursively.
      Specified by:
      getElements in interface ImageFunction