Interface Cursor<T>

All Superinterfaces:
EuclideanSpace, Iterator<T>, Iterator, Localizable, RealCursor<T>, RealLocalizable, Sampler<T>, Typed<T>
All Known Implementing Classes:
AbstractArrayCursor, AbstractArrayLocalizingCursor, AbstractConvertedCursor, AbstractCursor, AbstractCursorInt, AbstractLocalizingCursor, AbstractLocalizingCursorInt, AbstractLongListImg.LongListCursor, AbstractLongListImg.LongListLocalizingCursor, ArrayCursor, ArrayLocalizingCursor, ArrayLocalizingSubIntervalCursor, ArraySubIntervalCursor, BiConvertedCursor, CellCursor, CellLocalizingCursor, ConvertedCursor, ListCursor, ListLocalizingCursor, NtreeCursor, PlanarCursor, PlanarCursor1D, PlanarCursor2D, PlanarLocalizingCursor, PlanarLocalizingCursor1D, PlanarLocalizingCursor2D, PlanarPlaneSubsetCursor, PlanarPlaneSubsetLocalizingCursor, PointSampleList.PointSampleListCursor, RandomAccessibleIntervalCursor, SlicingCursor, WriteConvertedCursor

public interface Cursor<T> extends RealCursor<T>, Localizable
A Cursor iterates over a set of Localizable elements, for example the image values at the (integer) pixel positions of an image.

Cursor is a combination of several interfaces to achieve this. The Iterator interface is used to iterate the set. Use Iterator.fwd() to advance the cursor and Iterator.hasNext() to check whether there are more elements. Note, that the Cursor starts before the first element, i.e., you have to call fwd() once to move to the first element.

The Localizable interface provides access to the position of the current element. The Sampler.get() method of the Sampler interface provides access to the value of the current element.

For convenience, Cursor also extends the Iterator interface so that you are able to use Cursors in for-each loops. Calling the Iterator.next() method is equivalent to calling fwd() and get(). That is, after next() the Cursor is on the element returned by next(). get() can be used to obtain that element (again), and getPosition() to obtain its position. The Iterator.remove() method is not supported by imglib Cursors, in general.

It is not guaranteed that a Cursor will perform bounds checking. Asking the position or value of a Cursor that was not advanced to its first element, or was moved beyond its last element, has undefined results.

  • Method Details

    • copyCursor

      @Deprecated default Cursor<T> copyCursor()
      Deprecated.
      Use copy() instead
      Specified by:
      copyCursor in interface RealCursor<T>
    • copy

      Cursor<T> copy()
      Specified by:
      copy in interface RealCursor<T>
      Specified by:
      copy in interface Sampler<T>
      Returns:
      - A new Sampler in the same state accessing the same values. It does NOT copy T, just the state of the Sampler. Otherwise use T.copy() if available. Sampler.copy().get() == Sampler.get(), i.e. both hold the same value, not necessarily the same instance (this is the case for an ArrayCursor for example)