Class TransformBuilder<T>

java.lang.Object
net.imglib2.view.TransformBuilder<T>
Direct Known Subclasses:
IterableTransformBuilder

public class TransformBuilder<T> extends Object
The "brain" of the Views framework. Simplifies View cascades to provide the most efficient accessor for a specified Interval.
Author:
Tobias Pietzsch
See Also:
  • Field Details

    • 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 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 Details

    • 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 Details

    • 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.
    • visit

      protected void visit(RandomAccessible<T> randomAccessible)
      Visit a RandomAccessible (while traversing the view hierarchy). The randomAccessible is handled by visitTransformed(TransformedRandomAccessible) or visitExtended(ExtendedRandomAccessibleInterval) when it has the appropriate type. Otherwise, the traversal stops and randomAccessible is set as the source.
      Parameters:
      randomAccessible -
    • 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.
    • wrapGenericTransform

      protected RandomAccessible<T> wrapGenericTransform(RandomAccessible<T> s, Transform t)
    • wrapMixedTransform

      protected RandomAccessible<T> wrapMixedTransform(RandomAccessible<T> s, MixedTransform t)
    • wrapTranslationTransform

      protected RandomAccessible<T> wrapTranslationTransform(RandomAccessible<T> s, TranslationTransform t)
    • wrapSlicingTransform

      protected RandomAccessible<T> wrapSlicingTransform(RandomAccessible<T> s, SlicingTransform t)