public static < T > IterableRandomAccessibleInterval< T > create( final RandomAccessibleInterval< T > interval ) { return new IterableRandomAccessibleInterval< T >( interval ); }
@Override public Iterator< T > iterator() { return cursor(); }
@Override public T firstElement() { return irai.firstElement(); }
@Override public Cursor< T > cursor() { if ( isOptimizable ) return new IterableSubsetViewCursor< T >( Views.iterable( src ).cursor(), ( int ) super.size(), planeOffset, numPlaneDims ); return Views.iterable( super.sourceInterval ).cursor(); }
public IterableRandomAccessibleInterval( final RandomAccessibleInterval< T > interval ) { super( interval ); final int n = numDimensions(); long s = interval.dimension( 0 ); for ( int d = 1; d < n; ++d ) s *= interval.dimension( d ); size = s; }
@Override public Cursor< T > cursor() { if ( isOptimizable ) return new IterableSubsetViewCursor< T >( Views.iterable( src ).cursor(), ( int ) super.size(), planeOffset, numPlaneDims ); return Views.iterable( super.sourceInterval ).cursor(); }
public IterableRandomAccessibleInterval( final RandomAccessibleInterval< T > interval ) { super( interval ); final int n = numDimensions(); long s = interval.dimension( 0 ); for ( int d = 1; d < n; ++d ) s *= interval.dimension( d ); size = s; }
public static < T > IterableRandomAccessibleInterval< T > create( final RandomAccessibleInterval< T > interval ) { return new IterableRandomAccessibleInterval< T >( interval ); }
@Override public Cursor< T > localizingCursor() { return cursor(); }
@Override public Cursor< T > localizingCursor() { if ( isOptimizable ) return new IterableSubsetViewCursor< T >( Views.iterable( src ).localizingCursor(), ( int ) super.size(), planeOffset, numPlaneDims ); return Views.iterable( super.sourceInterval ).cursor(); }
@SuppressWarnings("unchecked") public static final <T extends RealType<T>> IterableRealInterval<T> flatIterable(final RealInterval ri) { // If it's any of the known classes that iterates flat, accept as is: if ( ArrayImg.class.isInstance( ri ) || ListImg.class.isInstance( ri ) || IterableRandomAccessibleInterval.class.isInstance(ri)) { return (IterableRealInterval<T>) ri; } // If it's a random accessible, then wrap: if ( ri instanceof RandomAccessibleInterval ) { return new IterableRandomAccessibleInterval<T>((RandomAccessibleInterval<T>)ri); } throw new IllegalArgumentException("Don't know how to flat-iterate image " + ri); } }
@Override public Iterator< T > iterator() { return cursor(); }
@Override public Cursor< T > localizingCursor() { if ( isOptimizable ) return new IterableSubsetViewCursor< T >( Views.iterable( src ).localizingCursor(), ( int ) super.size(), planeOffset, numPlaneDims ); return Views.iterable( super.sourceInterval ).cursor(); }
public RandomAccessibleIntervalImgProxy(final RandomAccessibleInterval<T> rai) { super(rai, dims(rai)); this.irai = new IterableRandomAccessibleInterval<T>(rai); // iterate in flat order like ArrayImg }
@Override public Cursor< T > localizingCursor() { return cursor(); }
planeOffset = ( int ) ( IntervalIndexer.positionToIndex( cubePos, iterDims ) * super.size() );
/** * Return an {@link IterableInterval}. If the passed * {@link RandomAccessibleInterval} is already an {@link IterableInterval} * then it is returned directly (this is the case for {@link Img}). If not, * then an {@link IterableRandomAccessibleInterval} is created. * * @param randomAccessibleInterval * the source * @return an {@link IterableInterval} */ @SuppressWarnings( "unchecked" ) public static < T > IterableInterval< T > iterable( final RandomAccessibleInterval< T > randomAccessibleInterval ) { if ( IterableInterval.class.isInstance( randomAccessibleInterval ) ) { final Class< ? > raiType = Util.getTypeFromInterval( randomAccessibleInterval ).getClass(); final Iterator< ? > iter = ( ( IterableInterval< ? > ) randomAccessibleInterval ).iterator(); final Object o = iter.hasNext() ? iter.next() : null; if ( raiType.isInstance( o ) ) return ( IterableInterval< T > ) randomAccessibleInterval; } return new IterableRandomAccessibleInterval<>( randomAccessibleInterval ); }
@Override public Cursor<T> cursor() { return irai.cursor(); }
planeOffset = ( int ) ( IntervalIndexer.positionToIndex( cubePos, iterDims ) * super.size() );
/** * Return an {@link IterableInterval}. If the passed * {@link RandomAccessibleInterval} is already an {@link IterableInterval} * then it is returned directly (this is the case for {@link Img}). If not, * then an {@link IterableRandomAccessibleInterval} is created. * * @param randomAccessibleInterval * the source * @return an {@link IterableInterval} */ @SuppressWarnings( "unchecked" ) public static < T > IterableInterval< T > iterable( final RandomAccessibleInterval< T > randomAccessibleInterval ) { if ( IterableInterval.class.isInstance( randomAccessibleInterval ) ) { final Class< ? > raiType = Util.getTypeFromInterval( randomAccessibleInterval ).getClass(); final Iterator< ? > iter = ( ( IterableInterval< ? > ) randomAccessibleInterval ).iterator(); final Object o = iter.hasNext() ? iter.next() : null; if ( raiType.isInstance( o ) ) return ( IterableInterval< T > ) randomAccessibleInterval; } return new IterableRandomAccessibleInterval<>( randomAccessibleInterval ); }