Class PixelIterator.Window<T extends Buffer>

java.lang.Object
org.apache.sis.image.PixelIterator.Window<T>
Type Parameters:
T - the type of buffer which can be used for transferring data.
Direct Known Subclasses:
BandedIterator.DoubleWindow, BandedIterator.FloatWindow, PixelIterator.DoubleWindow, PixelIterator.FloatWindow, PixelIterator.IntWindow
Enclosing class:
PixelIterator

public abstract static class PixelIterator.Window<T extends Buffer> extends Object
Contains the sample values in a moving window over the image. Windows are created by calls to PixelIterator.createWindow(TransferType) and sample values are stored in Buffers. The buffer content is replaced ever time update() is invoked.
Since:
0.8
Version:
1.1
  • Field Details

    • DIRECT

      static final int DIRECT
      Enumeration values for the last argument in getPixels(Raster, int, int, int, int, int).
      • DIRECT: store sample values directly in the final destination array.
      • TRANSFER: store sample values in a temporary buffer (copied to destination by caller).
      • TRANSFER_FROM_OTHER: same as TRANSFER, but also notify that the given raster is not PixelIterator.currentRaster.
      See Also:
    • TRANSFER

      static final int TRANSFER
      Enumeration values for the last argument in getPixels(Raster, int, int, int, int, int).
      • DIRECT: store sample values directly in the final destination array.
      • TRANSFER: store sample values in a temporary buffer (copied to destination by caller).
      • TRANSFER_FROM_OTHER: same as TRANSFER, but also notify that the given raster is not PixelIterator.currentRaster.
      See Also:
    • TRANSFER_FROM_OTHER

      static final int TRANSFER_FROM_OTHER
      Enumeration values for the last argument in getPixels(Raster, int, int, int, int, int).
      • DIRECT: store sample values directly in the final destination array.
      • TRANSFER: store sample values in a temporary buffer (copied to destination by caller).
      • TRANSFER_FROM_OTHER: same as TRANSFER, but also notify that the given raster is not PixelIterator.currentRaster.
      See Also:
    • values

      public final T extends Buffer values
      A buffer containing all sample values fetched by the last call to update(). The buffer capacity is (number of bands) × (window width) × (window height). Values are always stored with band index varying fastest, then column index, then row index. Columns are traversed from left to right and rows are traversed from top to bottom (linear iteration order). That order is the same regardless the iteration order of enclosing iterator.

      Every time that update() is invoked, the buffer content is replaced by sample values starting at the current iterator position. Before the first update() invocation, the buffer is filled with zero values.

  • Constructor Details

    • Window

      Window(T buffer)
      Creates a new window which will store the sample values in the given buffer.
  • Method Details

    • owner

      abstract PixelIterator owner()
      Returns the iterator that created this window.
    • getSize

      public final Dimension getSize()
      Returns the width and height of this window in pixels.
      Returns:
      the window size in pixels.
      Since:
      1.1
    • update

      public abstract void update()
      Updates this window with the sample values in the region starting at current iterator position. The buffer position, limit and mark are cleared.

      The PixelIterator.next() method must have returned true, or the PixelIterator.moveTo(int,int) method must have been invoked successfully, before this update() method is invoked. If above condition is not met, then this method behavior is undefined: it may throw any runtime exception or return meaningless values (there is no explicit bounds check for performance reasons).

    • getPixels

      abstract Object getPixels(Raster raster, int subX, int subY, int subWidth, int subHeight, int mode)
      Returns an array containing all samples for a rectangle of pixels in the given raster, one sample per array element. Subclasses should delegate to one of the Raster#getPixels(…) methods depending on the buffer data type.

      Constraints

      subWidth and subHeight shall always be greater than zero.
      Parameters:
      raster - the raster from which to get the pixel values.
      subX - the X coordinate of the upper-left pixel location.
      subY - the Y coordinate of the upper-left pixel location.
      subWidth - width of the pixel rectangle.
      subHeight - height of the pixel rectangle.
      mode - one of DIRECT, TRANSFER or TRANSFER_FROM_OTHER.
      Returns:
      the array in which sample values have been stored.