Class AbstractOutOfBoundsMirror<T>

java.lang.Object
net.imglib2.outofbounds.AbstractOutOfBoundsMirror<T>
Type Parameters:
T -
All Implemented Interfaces:
EuclideanSpace, Localizable, Bounded, OutOfBounds<T>, Positionable, RandomAccess<T>, RealLocalizable, Sampler<T>
Direct Known Subclasses:
OutOfBoundsMirrorDoubleBoundary, OutOfBoundsMirrorSingleBoundary

public abstract class AbstractOutOfBoundsMirror<T> extends Object implements OutOfBounds<T>
Abstract implementation of shared functions for mirroring out of bounds. Internally used coordinates use an interval [0n,max n-minn] and compensate for min-shift on localization and positioning.
Author:
Stephan Saalfeld
  • Field Details

    • outOfBoundsRandomAccess

      protected final RandomAccess<T> outOfBoundsRandomAccess
    • n

      protected final int n
    • dimension

      protected final long[] dimension
      Dimensions of the wrapped RandomAccessible.
    • zeroMinPos

      protected final long[] zeroMinPos
      Position relative to min, for internal calculations. zeroMinPos = position - min.
    • min

      protected final long[] min
      Minimum of the wrapped RandomAccessible.
    • p

      protected final long[] p
      Period of the extended interval. This depends on whether boundary pixels are mirrored. See OutOfBoundsMirrorDoubleBoundary, see OutOfBoundsMirrorSingleBoundary.
    • inc

      protected final boolean[] inc
    • dimIsOutOfBounds

      protected final boolean[] dimIsOutOfBounds
    • isOutOfBounds

      protected boolean isOutOfBounds
  • Constructor Details

    • AbstractOutOfBoundsMirror

      protected AbstractOutOfBoundsMirror(AbstractOutOfBoundsMirror<T> outOfBounds)
    • AbstractOutOfBoundsMirror

      public AbstractOutOfBoundsMirror(F f)
  • Method Details

    • checkOutOfBounds

      protected final void checkOutOfBounds()
    • numDimensions

      public int numDimensions()
      Description copied from interface: EuclideanSpace
      Gets the space's number of dimensions.
      Specified by:
      numDimensions in interface EuclideanSpace
    • isOutOfBounds

      public boolean isOutOfBounds()
      Description copied from interface: Bounded
      True if located out of image bounds.
      Specified by:
      isOutOfBounds in interface Bounded
    • 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>
    • copy

      public abstract AbstractOutOfBoundsMirror<T> copy()
      Specified by:
      copy in interface OutOfBounds<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)
    • localize

      public void localize(float[] pos)
      Description copied from interface: RealLocalizable
      Write the current position into the passed array.
      Specified by:
      localize in interface RealLocalizable
      Parameters:
      pos - receives current position
    • localize

      public void localize(double[] pos)
      Description copied from interface: RealLocalizable
      Write the current position into the passed array.
      Specified by:
      localize in interface RealLocalizable
      Parameters:
      pos - receives current position
    • localize

      public void localize(int[] pos)
      Description copied from interface: Localizable
      Write the current position into the passed array.
      Specified by:
      localize in interface Localizable
      Parameters:
      pos - receives current position
    • localize

      public void localize(long[] pos)
      Description copied from interface: Localizable
      Write the current position into the passed array.
      Specified by:
      localize in interface Localizable
      Parameters:
      pos - receives current position
    • getFloatPosition

      public float getFloatPosition(int d)
      Description copied from interface: RealLocalizable
      Return the current position in a given dimension.
      Specified by:
      getFloatPosition in interface RealLocalizable
      Parameters:
      d - dimension
      Returns:
      dimension of current position
    • getDoublePosition

      public double getDoublePosition(int d)
      Description copied from interface: RealLocalizable
      Return the current position in a given dimension.
      Specified by:
      getDoublePosition in interface RealLocalizable
      Parameters:
      d - dimension
      Returns:
      dimension of current position
    • getIntPosition

      public int getIntPosition(int d)
      Description copied from interface: Localizable
      Return the current position in a given dimension.
      Specified by:
      getIntPosition in interface Localizable
      Parameters:
      d - dimension
      Returns:
      dimension of current position
    • getLongPosition

      public long getLongPosition(int d)
      Description copied from interface: Localizable
      Return the current position in a given dimension.
      Specified by:
      getLongPosition in interface Localizable
      Parameters:
      d - dimension
      Returns:
      dimension of current position
    • move

      public void move(long distance, int d)
      Override with a more efficient version.
      Specified by:
      move in interface Positionable
      Parameters:
      distance - relative offset in dimension d
      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(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 position, int d)
      Description copied from interface: Positionable
      Set the position of the element for one dimension.
      Specified by:
      setPosition in interface Positionable
      Parameters:
      position - 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[] position)
      Description copied from interface: Positionable
      Set the position of the element.
      Specified by:
      setPosition in interface Positionable
      Parameters:
      position - absolute position, length must be ≥ EuclideanSpace.numDimensions()
    • setPosition

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

      public String toString()
      Overrides:
      toString in class Object