Class TransformBuilder<T>

    • Field Detail

      • source

        protected RandomAccessible<T> source
        Provides the untransformed random access.
      • boundingBox

        protected BoundingBox boundingBox
        Interval transformed to the currently visited view. null means that the interval is infinite.
      • transforms

        protected java.util.LinkedList<Transform> transforms
        List of transforms that have to be applied when wrapping the source RandomAccess to obtain a RandomAccess in the target coordinate system.
    • Constructor Detail

      • TransformBuilder

        protected TransformBuilder​(Interval interval,
                                   RandomAccessible<T> randomAccessible)
        Create a new TransformBuilder. Starting from randomAccessible, go down the view hierarchy to the RandomAccessible that will provide the source RandomAccess into the specified interval. While traversing the view hierarchy transforms are collected into the transforms list. These transforms have to be applied when wrapping the source RandomAccess to obtain a RandomAccess in the coordinate system of randomAccessible.
        Parameters:
        interval - The interval in which access is needed. This is converted to a bounding box which is propagated through the transforms down the view hierarchy.
        randomAccessible -
    • Method Detail

      • getEfficientRandomAccessible

        public static <S> RandomAccessible<S> getEfficientRandomAccessible​(Interval interval,
                                                                           RandomAccessible<S> randomAccessible)
        Get a RandomAccessible which provides RandomAccess to the specified interval of randomAccessible.

        Create a new TransformBuilder that traverses the view hierarchy starting from randomAccessible. build() an efficient RandomAccessible by joining and simplifying the collected transformations.

        Parameters:
        interval - The interval in which access is needed.
        randomAccessible -
      • prependTransform

        protected void prependTransform​(Transform t)
        Prepend a transform to the transforms list. Also apply the transform to boundingBox, which will be used to specify the interval for the RandomAccess on the final source (at the end of the view chain). This is called while traversing the view hierarchy.
        Parameters:
        t - the transform to add.
      • visitTransformed

        protected void visitTransformed​(TransformedRandomAccessible<T> randomAccessible)
        Visit a TransformedRandomAccessible (while traversing the view hierarchy). Append the view's transform to the list and visit(RandomAccessible) the view's source.
        Parameters:
        randomAccessible -
      • visitExtended

        protected void visitExtended​(ExtendedRandomAccessibleInterval<T,​?> randomAccessible)
        Visit a ExtendedRandomAccessibleInterval (while traversing the view hierarchy). If the no out-of-bounds extension is needed for the current bounding box, visit(RandomAccessible) the view's source. Otherwise, the traversal stops and randomAccessible is set as the source.
        Parameters:
        randomAccessible -
      • isIdentity

        public static boolean isIdentity​(Mixed t)
      • isTranslation

        public static boolean isTranslation​(Mixed t)
      • isComponentMapping

        public static boolean isComponentMapping​(Mixed t)
      • isSlicing

        public static boolean isSlicing​(Mixed t)
      • simplifyTransforms

        protected void simplifyTransforms()
        Simplify the transforms list. First, concatenate neighboring transforms if possible. Then, for every Mixed transform:
      • build

        protected RandomAccessible<T> build()
        Create a sequence of wrapped RandomAccessibles from the transforms list.
        Returns:
        RandomAccessible on the interval specified in the constructor.