Class CellRandomAccess<T extends NativeType<T>, C extends Cell<?>>

All Implemented Interfaces:
EuclideanSpace, AbstractCellImg.CellImgSampler<C>, Localizable, Positionable, RandomAccess<T>, RealLocalizable, Sampler<T>, Typed<T>

public class CellRandomAccess<T extends NativeType<T>, C extends Cell<?>> extends AbstractLocalizable implements RandomAccess<T>, AbstractCellImg.CellImgSampler<C>
RandomAccess on a AbstractCellImg. The boundaries of the current cell are cached, so that position changes within the same cell have minimal overhead.
  • Field Details

    • type

      protected final T extends NativeType<T> type
    • typeIndex

      protected final Index typeIndex
    • grid

      protected final CellGrid grid
    • randomAccessOnCells

      protected final RandomAccess<C extends Cell<?>> randomAccessOnCells
    • cellDims

      protected final int[] cellDims
    • dimensions

      protected final long[] dimensions
    • currentCellSteps

      protected final int[] currentCellSteps
    • currentCellMin

      protected final long[] currentCellMin
    • currentCellMax

      protected final long[] currentCellMax
    • isOutOfBounds

      protected boolean isOutOfBounds
    • typeNeedsUpdate

      private boolean typeNeedsUpdate
  • Constructor Details

  • Method Details

    • getCell

      public C getCell()
      Specified by:
      getCell in interface AbstractCellImg.CellImgSampler<T extends NativeType<T>>
      Returns:
      the cell the sampler is currently in.
    • get

      public T get()
      Description copied from interface: Sampler
      Access the actual T instance providing access to a pixel, sub-pixel or integral region value the Sampler points at.
      Specified by:
      get in interface Sampler<T extends NativeType<T>>
    • getType

      public T getType()
      Description copied from interface: Typed
      Get an instance of T.

      It should not be assumed that the returned T instance is an independent copy. In particular, repeated calls to getType() may return the same instance.

      Specified by:
      getType in interface Sampler<T extends NativeType<T>>
      Specified by:
      getType in interface Typed<T extends NativeType<T>>
      Returns:
      an instance of T
    • copy

      public CellRandomAccess<T,C> copy()
      Specified by:
      copy in interface RandomAccess<T extends NativeType<T>>
      Specified by:
      copy in interface Sampler<T extends NativeType<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)
    • fwd

      public void fwd(int d)
      Description copied from interface: Positionable
      Move by 1 in one dimension.
      Specified by:
      fwd in interface Positionable
      Parameters:
      d - dimension
    • bck

      public void bck(int d)
      Description copied from interface: Positionable
      Move by -1 in one dimension.
      Specified by:
      bck in interface Positionable
      Parameters:
      d - dimension
    • move

      public void move(int distance, int d)
      Description copied from interface: Positionable
      Move the element in one dimension for some distance.
      Specified by:
      move in interface Positionable
      Parameters:
      distance - relative offset in dimension d
      d - dimension
    • move

      public void move(long distance, int d)
      Description copied from interface: Positionable
      Move the element in one dimension for some distance.
      Specified by:
      move in interface Positionable
      Parameters:
      distance - relative offset in dimension d
      d - dimension
    • move

      public void move(Localizable localizable)
      Description copied from interface: Positionable
      Move the element relative to its current location using an Localizable as distance vector.
      Specified by:
      move in interface Positionable
      Parameters:
      localizable - relative offset, EuclideanSpace.numDimensions() must be ≥ EuclideanSpace.numDimensions()
    • move

      public void move(int[] distance)
      Description copied from interface: Positionable
      Move the element relative to its current location using an int[] as distance vector.
      Specified by:
      move in interface Positionable
      Parameters:
      distance - relative offset, length must be ≥ EuclideanSpace.numDimensions()
    • move

      public void move(long[] distance)
      Description copied from interface: Positionable
      Move the element relative to its current location using a long[] as distance vector.
      Specified by:
      move in interface Positionable
      Parameters:
      distance - relative offset, length must be ≥ EuclideanSpace.numDimensions()
    • setPosition

      public void setPosition(int pos, int d)
      Description copied from interface: Positionable
      Set the position of the element for one dimension.
      Specified by:
      setPosition in interface Positionable
      Parameters:
      pos - absolute position in dimension d
      d - dimension
    • setPosition

      public void setPosition(long pos, int d)
      Description copied from interface: Positionable
      Set the position of the element for one dimension.
      Specified by:
      setPosition in interface Positionable
      Parameters:
      pos - absolute position in dimension d
      d - dimension
    • setPosition

      public void setPosition(Localizable localizable)
      Description copied from interface: Positionable
      Place the element at the same location as a given Localizable
      Specified by:
      setPosition in interface Positionable
      Parameters:
      localizable - absolute position, EuclideanSpace.numDimensions() must be ≥ EuclideanSpace.numDimensions()
    • setPosition

      public void setPosition(int[] pos)
      Description copied from interface: Positionable
      Set the position of the element.
      Specified by:
      setPosition in interface Positionable
      Parameters:
      pos - absolute position, length must be ≥ EuclideanSpace.numDimensions()
    • setPos2

      private void setPos2(int[] pos, int d0)
    • setPosition

      public void setPosition(long[] pos)
      Description copied from interface: Positionable
      Set the position of the element.
      Specified by:
      setPosition in interface Positionable
      Parameters:
      pos - absolute position, length must be ≥ EuclideanSpace.numDimensions()
    • updatePosition

      private void updatePosition(boolean movedOutOfBounds)
      Update type to currentCellSteps, currentCellMin, and type after switching cells. This is called after randomAccessOnCells and position fields have been set.