Class StackView.MoveAllSlicesRA<T>

  • Type Parameters:
    T - the pixel type
    All Implemented Interfaces:
    EuclideanSpace, Localizable, Positionable, RandomAccess<T>, RealLocalizable, Sampler<T>, Typed<T>
    Enclosing class:
    StackView<T>

    public static class StackView.MoveAllSlicesRA<T>
    extends java.lang.Object
    implements RandomAccess<T>
    A RandomAccess on a StackView. It keeps a list of RandomAccesses on all constituent hyper-slices of the StackView.

    When changing any dimension of the position, except the (n+1)th, this position change is applied to the all slice RandomAccesses. The current (n+1)th dimension of the position is maintained as an index. When get() is called it is forwarded to the slice RandomAccess at that index.

    The potential advantage of this approach is that it does not need to do a full setPosition() when changing slices.This is faster assuming that we access in a loop over dimensions with the last dimension (the hyper-slice dimension) in the inner loop.

    Only use this if you know what you are doing.

    • Field Detail

      • n

        private final int n
      • sd

        private final int sd
      • slice

        private int slice
      • tmpLong

        private final long[] tmpLong
      • tmpInt

        private final int[] tmpInt
    • Method Detail

      • localize

        public void localize​(int[] position)
        Description copied from interface: Localizable
        Write the current position into the passed array.
        Specified by:
        localize in interface Localizable
        Parameters:
        position - receives current position, length must be ≥ EuclideanSpace.numDimensions()
      • localize

        public void localize​(long[] position)
        Description copied from interface: Localizable
        Write the current position into the passed array.
        Specified by:
        localize in interface Localizable
        Parameters:
        position - receives current position, length must be ≥ EuclideanSpace.numDimensions()
      • 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
      • 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​(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​(long 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
      • 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>
      • 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>
        Specified by:
        getType in interface Typed<T>
        Returns:
        an instance of T
      • copy

        public StackView.MoveAllSlicesRA<T> copy()
        Specified by:
        copy in interface RandomAccess<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)