/** * {@inheritDoc} */ @Override public PlanarPlaneSubsetLocalizingCursor< T > copy() { return new PlanarPlaneSubsetLocalizingCursor< T >( this ); }
/** * {@inheritDoc} */ @Override public PlanarPlaneSubsetLocalizingCursor< T > copyCursor() { return copy(); }
/** * Constructor * * @param container * PlanarImg this cursor shall work on. * @param interval * Interval over which shall be iterated. */ public PlanarPlaneSubsetLocalizingCursor( final PlanarImg< T, ? > container, final Interval interval ) { super( container.numDimensions() ); this.type = container.createLinkedType(); this.container = container; final int planeSize = ( ( n > 1 ) ? ( int ) interval.dimension( 1 ) : 1 ) * ( int ) interval.dimension( 0 ); this.lastIndexPlane = planeSize - 1; // Set current slice index sliceIndex = ( int ) ( offset( interval ) / planeSize ); maxX = ( int ) interval.max( 0 ); dimX = ( int ) container.dimension( 0 ); type.updateContainer( this ); // we're working on one container only. for ( int d = 2; d < n; ++d ) position[ d ] = ( int ) interval.min( d ); reset(); }
private long offset( final Interval interval ) { final int maxDim = numDimensions() - 1; long i = interval.min( maxDim ); for ( int d = maxDim - 1; d >= 0; --d ) i = i * container.dimension( d ) + interval.min( d ); return i; }
/** * {@inheritDoc} */ @Override public final void reset() { type.updateIndex( -1 ); updatePositionFromIndex( type.getIndex() ); }
/** * Constructor * * @param container * PlanarImg this cursor shall work on. * @param interval * Interval over which shall be iterated. */ public PlanarPlaneSubsetLocalizingCursor( final PlanarImg< T, ? > container, final Interval interval ) { super( container.numDimensions() ); this.type = container.createLinkedType(); this.container = container; final int planeSize = ( ( n > 1 ) ? ( int ) interval.dimension( 1 ) : 1 ) * ( int ) interval.dimension( 0 ); this.lastIndexPlane = planeSize - 1; // Set current slice index sliceIndex = ( int ) ( offset( interval ) / planeSize ); maxX = ( int ) interval.max( 0 ); dimX = ( int ) container.dimension( 0 ); type.updateContainer( this ); // we're working on one container only. for ( int d = 2; d < n; ++d ) position[ d ] = ( int ) interval.min( d ); reset(); }
private long offset( final Interval interval ) { final int maxDim = numDimensions() - 1; long i = interval.min( maxDim ); for ( int d = maxDim - 1; d >= 0; --d ) i = i * container.dimension( d ) + interval.min( d ); return i; }
/** * {@inheritDoc} */ @Override public final void jumpFwd( final long steps ) { type.incIndex( ( int ) steps ); updatePositionFromIndex( type.getIndex() ); }
/** * {@inheritDoc} */ @Override public PlanarPlaneSubsetLocalizingCursor< T > copy() { return new PlanarPlaneSubsetLocalizingCursor< T >( this ); }
/** * Copy Constructor * * @param cursor * PlanarPlaneSubsetLocalizingCursor to copy from */ protected PlanarPlaneSubsetLocalizingCursor( final PlanarPlaneSubsetLocalizingCursor< T > cursor ) { super( cursor.numDimensions() ); container = cursor.container; this.type = container.createLinkedType(); sliceIndex = cursor.sliceIndex; lastIndexPlane = cursor.lastIndexPlane; maxX = cursor.maxX; dimX = cursor.dimX; for ( int d = 0; d < n; ++d ) position[ d ] = cursor.position[ d ]; type.updateContainer( this ); type.updateIndex( cursor.type.getIndex() ); }
/** * {@inheritDoc} */ @Override public final void jumpFwd( final long steps ) { type.incIndex( ( int ) steps ); updatePositionFromIndex( type.getIndex() ); }
/** * {@inheritDoc} */ @Override public PlanarPlaneSubsetLocalizingCursor< T > copyCursor() { return copy(); }
/** * {@inheritDoc} */ @Override public Cursor< T > localizingCursor( final Interval interval ) { assert ( supportsOptimizedCursor( interval ) ); return new PlanarPlaneSubsetLocalizingCursor< T >( this, interval ); }
/** * Copy Constructor * * @param cursor * PlanarPlaneSubsetLocalizingCursor to copy from */ protected PlanarPlaneSubsetLocalizingCursor( final PlanarPlaneSubsetLocalizingCursor< T > cursor ) { super( cursor.numDimensions() ); container = cursor.container; this.type = container.createLinkedType(); sliceIndex = cursor.sliceIndex; lastIndexPlane = cursor.lastIndexPlane; maxX = cursor.maxX; dimX = cursor.dimX; for ( int d = 0; d < n; ++d ) position[ d ] = cursor.position[ d ]; type.updateContainer( this ); type.updateIndex( cursor.type.getIndex() ); }
/** * {@inheritDoc} */ @Override public final void reset() { type.updateIndex( -1 ); updatePositionFromIndex( type.getIndex() ); }
/** * {@inheritDoc} */ @Override public Cursor< T > localizingCursor( final Interval interval ) { assert ( supportsOptimizedCursor( interval ) ); return new PlanarPlaneSubsetLocalizingCursor< T >( this, interval ); }