# Class PixelIterator.Builder

Object
Builder

Enclosing class:
  `PixelIterator`

public static class PixelIterator.Builder extends Object
Builds pixel iterators for specified region of interest, window size or iteration order. By default, the builder creates iterators for all pixels in the given raster or image, with unspecified iteration order. Users can invoke setter methods for specifying desired behavior for the iterators to create.

## Example

    PixelIterator iterator = new PixelIterator.Builder()
            .setRegionOfInterest(new Rectangle(10, 10, 5, 5)
            .create(image);

Since:
  1.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Builder()`
  Creates a new iterator builder with no region of interest, no window size and default iterator order.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PixelIterator`
  `create(Raster data)`
  Creates a read-only iterator for the given raster.
  `PixelIterator`
  `create(RenderedImage data)`
  Creates a read-only iterator for the given image.
  `WritablePixelIterator`
  `createWritable(Raster input, WritableRaster output)`
  Creates an iterator which will read and write in two different rasters.
  `WritablePixelIterator`
  `createWritable(RenderedImage input, WritableRenderedImage output)`
  Creates an iterator which will read and write in two different images.
  `WritablePixelIterator`
  `createWritable(WritableRaster data)`
  Creates a read/write iterator for the given raster.
  `WritablePixelIterator`
  `createWritable(WritableRenderedImage data)`
  Creates a read/write iterator for the given image.
  `PixelIterator​.Builder`
  `setIteratorOrder(SequenceType order)`
  Sets the desired iteration order.
  `PixelIterator​.Builder`
  `setRegionOfInterest(Rectangle subArea)`
  Sets the region (in pixel coordinates) where to perform the iteration.
  `PixelIterator​.Builder`
  `setWindowSize(Dimension window)`
  Sets the size of the window to use in `PixelIterator​.createWindow(TransferType)` method.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Builder

    public Builder()
    Creates a new iterator builder with no region of interest, no window size and default iterator order.

- ## Method Details

  - ### setRegionOfInterest

    public PixelIterator.Builder setRegionOfInterest(Rectangle subArea)
    Sets the region (in pixel coordinates) where to perform the iteration. If this method is not invoked, then by default iterators will traverse all pixels in the image or raster. If a sub-area is specified, then the traversed area is the intersection of `subArea` with the image or raster bounds.
    Parameters:
      `subArea` - region to intersect, or `null` for iterating over all image domain.
    Returns:
      `this` for method call chaining.
    Throws:
      `IllegalArgumentException` - if the given rectangle is empty.

  - ### setWindowSize

    public PixelIterator.Builder setWindowSize(Dimension window)
    Sets the size of the window to use in `PixelIterator​.createWindow(TransferType)` method. By default, iterators do not create windows.
    Parameters:
      `window` - the window size, or `null` if no window will be created.
    Returns:
      `this` for method call chaining.

  - ### setIteratorOrder

    public PixelIterator.Builder setIteratorOrder(SequenceType order)
    Sets the desired iteration order. The `order` argument can have the following values:

    Supported iteration order
    Value | Iteration order
    --- | ---
    `null` | Most efficient iteration order.
    `SequenceType.LINEAR` | From left to right, then from top to bottom.

    Any other `order` value will cause an `IllegalArgumentException` to be thrown. More iteration orders may be supported in future Apache SIS versions.
    Parameters:
      `order` - the desired iteration order, or `null` for a default order.
    Returns:
      `this` for method call chaining.

  - ### create

    public PixelIterator create(Raster data)
    Creates a read-only iterator for the given raster.
    Parameters:
      `data` - the raster which contains the sample values on which to iterate.
    Returns:
      a new iterator traversing pixels in the given raster.

  - ### create

    public PixelIterator create(RenderedImage data)
    Creates a read-only iterator for the given image.
    Parameters:
      `data` - the image which contains the sample values on which to iterate.
    Returns:
      a new iterator traversing pixels in the given image.

  - ### createWritable

    public WritablePixelIterator createWritable(WritableRaster data)
    Creates a read/write iterator for the given raster.
    Parameters:
      `data` - the raster which contains the sample values on which to iterate.
    Returns:
      a new iterator traversing pixels in the given raster.

  - ### createWritable

    public WritablePixelIterator createWritable(WritableRenderedImage data)
    Creates a read/write iterator for the given image.
    Parameters:
      `data` - the image which contains the sample values on which to iterate.
    Returns:
      a new iterator traversing pixels in the given image.

  - ### createWritable

    public WritablePixelIterator createWritable(Raster input, WritableRaster output)
    Creates an iterator which will read and write in two different rasters. The two rasters must use the same sample model and have the same bounds.
    Parameters:
      `input` - the raster which contains the sample values to read.
      `output` - the raster where to write the sample values. Can be the same as `input`.
    Returns:
      a new writable iterator.

  - ### createWritable

    public WritablePixelIterator createWritable(RenderedImage input, WritableRenderedImage output)
    Creates an iterator which will read and write in two different images. The two images must use the same sample model and have the same bounds.
    Parameters:
      `input` - the image which contains the sample values to read.
      `output` - the image where to write the sample values. Can be the same as `input`.
    Returns:
      a new writable iterator.