From 2629bc55c541fb0066b4d107b308675cd7e34763 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 19 May 2025 17:04:49 -0500 Subject: [PATCH 1/6] Add RAI-level type variable to RAIView --- .../net/imglib2/RandomAccessibleInterval.java | 2 +- .../fluent/RandomAccessibleIntervalView.java | 86 +++++++------------ .../view/fluent/RandomAccessibleView.java | 2 +- 3 files changed, 33 insertions(+), 57 deletions(-) diff --git a/src/main/java/net/imglib2/RandomAccessibleInterval.java b/src/main/java/net/imglib2/RandomAccessibleInterval.java index fa31c75ae..d21763831 100644 --- a/src/main/java/net/imglib2/RandomAccessibleInterval.java +++ b/src/main/java/net/imglib2/RandomAccessibleInterval.java @@ -118,7 +118,7 @@ default Object iterationOrder() * views} into this {@code RandomAccessibleInterval}. */ @Override - default RandomAccessibleIntervalView< T > view() + default RandomAccessibleIntervalView< T, ? > view() { return RandomAccessibleIntervalView.wrap( this ); } diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java index f80ca24b4..bd00385f9 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java @@ -33,21 +33,13 @@ */ package net.imglib2.view.fluent; -import java.util.function.Function; -import java.util.function.Supplier; - import net.imglib2.Cursor; import net.imglib2.FlatIterationOrder; import net.imglib2.RandomAccessible; import net.imglib2.RandomAccessibleInterval; import net.imglib2.converter.Converter; import net.imglib2.converter.Converters; -import net.imglib2.outofbounds.OutOfBoundsBorderFactory; -import net.imglib2.outofbounds.OutOfBoundsConstantValueFactory; -import net.imglib2.outofbounds.OutOfBoundsFactory; -import net.imglib2.outofbounds.OutOfBoundsMirrorFactory; -import net.imglib2.outofbounds.OutOfBoundsPeriodicFactory; -import net.imglib2.outofbounds.OutOfBoundsZeroFactory; +import net.imglib2.outofbounds.*; import net.imglib2.stream.LocalizableSpliterator; import net.imglib2.type.Type; import net.imglib2.type.operators.SetZero; @@ -55,6 +47,8 @@ import net.imglib2.view.IterableRandomAccessibleInterval; import net.imglib2.view.Views; +import java.util.function.Supplier; + /** * Gateway for creating light-weight views on a {@code RandomAccessibleInterval}. *

@@ -86,12 +80,12 @@ * @author Michael Innerberger * @see Views */ -public interface RandomAccessibleIntervalView< T > extends RandomAccessibleView< T, RandomAccessibleIntervalView< T > >, RandomAccessibleInterval< T > +public interface RandomAccessibleIntervalView< T , V extends RandomAccessibleIntervalView> extends RandomAccessibleView< T, V >, RandomAccessibleInterval< T > { @Override RandomAccessibleInterval< T > delegate(); - static < T > RandomAccessibleIntervalView< T > wrap( final RandomAccessibleInterval< T > delegate ) + static < T, V extends RandomAccessibleIntervalView > RandomAccessibleIntervalView< T, V > wrap( final RandomAccessibleInterval< T > delegate ) { return () -> delegate; } @@ -108,7 +102,7 @@ static < T > RandomAccessibleIntervalView< T > wrap( final RandomAccessibleInter * * @return a view with flat iteration order */ - default RandomAccessibleIntervalView< T > flatIterable() + default RandomAccessibleIntervalView< T, ? > flatIterable() { return wrap( Views.flatIterable( delegate() ) ); } @@ -126,7 +120,7 @@ default RandomAccessibleIntervalView< T > flatIterable() * @return a view on the given slice */ @Override - default RandomAccessibleIntervalView< T > slice( int d, long pos ) + default RandomAccessibleIntervalView< T, ? > slice( int d, long pos ) { return wrap( Views.hyperSlice( delegate(), d, pos ) ); } @@ -147,7 +141,7 @@ default RandomAccessibleIntervalView< T > slice( int d, long pos ) * * @return a view with an additional dimension */ - default RandomAccessibleIntervalView< T > addDimension( long minOfNewDim, long maxOfNewDim ) + default RandomAccessibleIntervalView< T, ? > addDimension( long minOfNewDim, long maxOfNewDim ) { return wrap( Views.addDimension( delegate(), minOfNewDim, maxOfNewDim ) ); } @@ -164,7 +158,7 @@ default RandomAccessibleIntervalView< T > addDimension( long minOfNewDim, long m * @return a translated view */ @Override - default RandomAccessibleIntervalView< T > translate( long... translation ) + default RandomAccessibleIntervalView< T, ? > translate( long... translation ) { return wrap( Views.translate( delegate(), translation ) ); } @@ -182,7 +176,7 @@ default RandomAccessibleIntervalView< T > translate( long... translation ) * @return an inverse-translated view */ @Override - default RandomAccessibleIntervalView< T > translateInverse( long... translation ) + default RandomAccessibleIntervalView< T, ? > translateInverse( long... translation ) { return wrap( Views.translateInverse( delegate(), translation ) ); } @@ -193,7 +187,7 @@ default RandomAccessibleIntervalView< T > translateInverse( long... translation * * @return a view that is translated to the origin */ - default RandomAccessibleIntervalView< T > zeroMin() + default RandomAccessibleIntervalView< T, ? > zeroMin() { return wrap( Views.zeroMin( delegate() ) ); } @@ -213,7 +207,7 @@ default RandomAccessibleIntervalView< T > zeroMin() * @return a subsampled view */ @Override - default RandomAccessibleIntervalView< T > subsample( final long... steps ) + default RandomAccessibleIntervalView< T, ? > subsample( final long... steps ) { return wrap( Views.subsample( delegate(), Util.expandArray( steps, numDimensions() ) ) ); } @@ -242,7 +236,7 @@ default RandomAccessibleIntervalView< T > subsample( final long... steps ) * @return a view rotated 90 degrees */ @Override - default RandomAccessibleIntervalView< T > rotate( int fromAxis, int toAxis ) + default RandomAccessibleIntervalView< T, ? > rotate( int fromAxis, int toAxis ) { return wrap( Views.rotate( delegate(), fromAxis, toAxis ) ); } @@ -259,7 +253,7 @@ default RandomAccessibleIntervalView< T > rotate( int fromAxis, int toAxis ) * @return a view with permuted axes */ @Override - default RandomAccessibleIntervalView< T > permute( int fromAxis, int toAxis ) + default RandomAccessibleIntervalView< T, ? > permute( int fromAxis, int toAxis ) { return wrap( Views.permute( delegate(), fromAxis, toAxis ) ); } @@ -280,7 +274,7 @@ default RandomAccessibleIntervalView< T > permute( int fromAxis, int toAxis ) * @return a view with permuted axes */ @Override - default RandomAccessibleIntervalView< T > moveAxis( int fromAxis, int toAxis ) + default RandomAccessibleIntervalView< T, ? > moveAxis( int fromAxis, int toAxis ) { return wrap( Views.moveAxis( delegate(), fromAxis, toAxis ) ); } @@ -303,7 +297,7 @@ default RandomAccessibleIntervalView< T > moveAxis( int fromAxis, int toAxis ) * @return a view with {@code axis} inverted */ @Override - default RandomAccessibleIntervalView< T > invertAxis( int axis ) + default RandomAccessibleIntervalView< T, ? > invertAxis( int axis ) { return wrap( Views.invertAxis( delegate(), axis ) ); } @@ -325,11 +319,11 @@ default RandomAccessibleIntervalView< T > invertAxis( int axis ) * @param * pixel type ot the {@code RandomAccessible} to be extended */ - class Extension< T > + class Extension< T, V extends RandomAccessibleIntervalView> { - final OutOfBoundsFactory< T, RandomAccessibleIntervalView< T > > factory; + final OutOfBoundsFactory< T, RandomAccessibleIntervalView< T, V > > factory; - private Extension( OutOfBoundsFactory< T, RandomAccessibleIntervalView< T > > factory ) + private Extension( OutOfBoundsFactory< T, RandomAccessibleIntervalView< T, V > > factory ) { this.factory = factory; } @@ -339,7 +333,7 @@ private Extension( OutOfBoundsFactory< T, RandomAccessibleIntervalView< T > > fa *

* Out-of-bounds pixels are created by repeating border pixels. */ - public static < T > Extension< T > border() + public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > border() { return new Extension<>(new OutOfBoundsBorderFactory<>() ); } @@ -349,9 +343,9 @@ public static < T > Extension< T > border() *

* All out-of-bounds pixels have value zero. */ - public static < T extends Type< T > & SetZero > Extension< T > zero() + public static < T extends Type< T > & SetZero, V extends RandomAccessibleIntervalView> Extension< T, V > zero() { - return new Extension<>( new OutOfBoundsZeroFactory< T, RandomAccessibleIntervalView< T > >() ); + return new Extension<>( new OutOfBoundsZeroFactory< T, RandomAccessibleIntervalView< T, V > >() ); } /** @@ -359,7 +353,7 @@ public static < T extends Type< T > & SetZero > Extension< T > zero() *

* All out-of-bounds pixels have the provided {@code value}. */ - public static < T > Extension< T > value( T value ) + public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > value( T value ) { return new Extension<>(new OutOfBoundsConstantValueFactory<>( value ) ); } @@ -371,7 +365,7 @@ public static < T > Extension< T > value( T value ) * are not repeated. Note that this requires that all dimensions of the * source must be > 1. */ - public static < T > Extension< T > mirrorSingle() + public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > mirrorSingle() { return new Extension<>(new OutOfBoundsMirrorFactory<>( OutOfBoundsMirrorFactory.Boundary.SINGLE ) ); } @@ -382,7 +376,7 @@ public static < T > Extension< T > mirrorSingle() * Out-of-bounds pixels are created by mirroring, where boundary pixels * are repeated. */ - public static < T > Extension< T > mirrorDouble() + public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > mirrorDouble() { return new Extension<>(new OutOfBoundsMirrorFactory<>( OutOfBoundsMirrorFactory.Boundary.DOUBLE ) ); } @@ -393,7 +387,7 @@ public static < T > Extension< T > mirrorDouble() * Out-of-bounds pixels are created by periodically repeating the source * image. */ - public static < T > Extension< T > periodic() + public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > periodic() { return new Extension<>(new OutOfBoundsPeriodicFactory<>() ); } @@ -419,7 +413,7 @@ public static < T > Extension< T > periodic() * * @return an extended (unbounded) view */ - default RandomAccessibleView< T, ? > extend( Extension< T > extension ) + default RandomAccessibleView< T, ? > extend( Extension< T, V > extension ) { return RandomAccessibleView.wrap( Views.extend( this, extension.factory ) ); } @@ -455,7 +449,7 @@ public static < T > Extension< T > periodic() * * @return an expanded view */ - default RandomAccessibleIntervalView< T > expand( Extension< T > extension, long... border ) + default RandomAccessibleIntervalView< T, ? > expand( Extension< T, V > extension, long... border ) { return RandomAccessibleIntervalView.wrap( Views.expand( this, extension.factory, Util.expandArray( border, numDimensions() ) ) ); } @@ -479,7 +473,7 @@ default RandomAccessibleIntervalView< T > expand( Extension< T > extension, long * @return a converted view */ @Override - default < U > RandomAccessibleIntervalView< U > convert( + default < U > RandomAccessibleIntervalView< U, ? > convert( final Supplier< U > targetSupplier, final Converter< ? super T, ? super U > converter ) { return wrap( Converters.convert2( delegate(), converter, targetSupplier ) ); @@ -505,34 +499,16 @@ default < U > RandomAccessibleIntervalView< U > convert( * @return a converted view */ @Override - default < U > RandomAccessibleIntervalView< U > convert( + default < U > RandomAccessibleIntervalView< U, ? > convert( final Supplier< U > targetSupplier, final Supplier< Converter< ? super T, ? super U > > converterSupplier ) { return wrap( Converters.convert2( delegate(), converterSupplier, targetSupplier ) ); } - /** - * Apply the specified {@code function} to this {@code - * RandomAccessibleInterval} and return the result. - * - * @param function - * function to evaluate on this {@code RandomAccessibleInterval} - * @param - * the type of the result of the function - * - * @return {@code function.apply(this)} - */ - @Override - default < U > U use( Function< ? super RandomAccessibleIntervalView< T >, U > function ) - { - return function.apply( this ); - } - - // -- RandomAccessibleInterval -------------------------------------------- @Override - default RandomAccessibleIntervalView< T > view() + default RandomAccessibleIntervalView< T, V > view() { return this; } diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java index 6e0534edb..1d3fa9263 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java @@ -109,7 +109,7 @@ static < T, V extends RandomAccessibleView< T, V > > RandomAccessibleView< T, V * * @return a view on the given interval */ - default RandomAccessibleIntervalView< T > interval( Interval interval ) + default RandomAccessibleIntervalView< T, ? > interval( Interval interval ) { return RandomAccessibleIntervalView.wrap( Views.interval( delegate(), interval ) ); } From 198fa733d18cf3cca9d957b205e582f31b7fd94e Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Tue, 3 Jun 2025 09:28:19 -0500 Subject: [PATCH 2/6] Add second type parameters to RAIView, RRAView --- .../java/net/imglib2/RealRandomAccessible.java | 2 +- .../view/fluent/RandomAccessibleIntervalView.java | 4 ++-- .../imglib2/view/fluent/RandomAccessibleView.java | 6 +++--- .../view/fluent/RealRandomAccessibleView.java | 14 +++++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/imglib2/RealRandomAccessible.java b/src/main/java/net/imglib2/RealRandomAccessible.java index cd6d80ca3..212f8d632 100644 --- a/src/main/java/net/imglib2/RealRandomAccessible.java +++ b/src/main/java/net/imglib2/RealRandomAccessible.java @@ -139,7 +139,7 @@ default T getAt( final RealLocalizable position ) * @return gateway for creating light-weight views into this {@code * RealRandomAccessible}. */ - default RealRandomAccessibleView< T > realView() + default RealRandomAccessibleView< T, ? > realView() { return RealRandomAccessibleView.wrap( this ); } diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java index bd00385f9..40faa8913 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java @@ -85,9 +85,9 @@ public interface RandomAccessibleIntervalView< T , V extends RandomAccessibleInt @Override RandomAccessibleInterval< T > delegate(); - static < T, V extends RandomAccessibleIntervalView > RandomAccessibleIntervalView< T, V > wrap( final RandomAccessibleInterval< T > delegate ) + static < T, V extends RandomAccessibleIntervalView > RandomAccessibleIntervalView< T, ? > wrap( final RandomAccessibleInterval< T > delegate ) { - return () -> delegate; + return (RandomAccessibleIntervalView) () -> delegate; } // -- Views methods ------------------------------------------------------- diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java index 1d3fa9263..01aea4180 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java @@ -87,9 +87,9 @@ public interface RandomAccessibleView< T, V extends RandomAccessibleView< T, V > { RandomAccessible< T > delegate(); - static < T, V extends RandomAccessibleView< T, V > > RandomAccessibleView< T, V > wrap( final RandomAccessible< T > delegate ) + static > RandomAccessibleView< T, ? > wrap( final RandomAccessible< T > delegate ) { - return ( RandomAccessibleView< T, V > ) () -> delegate; + return (RandomAccessibleView) () -> null; } // -- Views methods ------------------------------------------------------- @@ -354,7 +354,7 @@ public static < T extends RealType< T > > Interpolation< T > lanczos() * * @return an interpolated view */ - default RealRandomAccessibleView< T > interpolate( final Interpolation< T > interpolation ) + default RealRandomAccessibleView< T, ? > interpolate( final Interpolation< T > interpolation ) { return RealRandomAccessibleView.wrap( Views.interpolate( delegate(), interpolation.factory ) ); } diff --git a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java index 1852f9590..40d92749b 100644 --- a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java @@ -72,13 +72,13 @@ * @author Michael Innerberger * @see Views */ -public interface RealRandomAccessibleView< T > extends RealRandomAccessible< T > +public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView > extends RealRandomAccessible< T > { RealRandomAccessible< T > delegate(); - static < T > RealRandomAccessibleView< T > wrap( final RealRandomAccessible< T > delegate ) + static < T, V extends RealRandomAccessibleView> RealRandomAccessibleView< T, ? > wrap( final RealRandomAccessible< T > delegate ) { - return () -> delegate; + return (RealRandomAccessibleView) () -> null; } // -- Views methods ------------------------------------------------------- @@ -113,7 +113,7 @@ static < T > RealRandomAccessibleView< T > wrap( final RealRandomAccessible< T > * * @return a converted view */ - default < U > RealRandomAccessibleView< U > convert( + default < U > RealRandomAccessibleView< U, ? > convert( final Supplier< U > targetSupplier, final Converter< ? super T, ? super U > converter ) { @@ -139,7 +139,7 @@ default < U > RealRandomAccessibleView< U > convert( * * @return a converted view */ - default < U > RealRandomAccessibleView< U > convert( + default < U > RealRandomAccessibleView< U, ? > convert( final Supplier< U > targetSupplier, final Supplier< Converter< ? super T, ? super U > > converterSupplier ) { @@ -157,7 +157,7 @@ default < U > RealRandomAccessibleView< U > convert( * * @return {@code function.apply(this)} */ - default < U > U use( Function< ? super RealRandomAccessibleView< T >, U > function ) + default < U > U use( Function< ? super RealRandomAccessibleView< T, ? >, U > function ) { return function.apply( this ); } @@ -166,7 +166,7 @@ default < U > U use( Function< ? super RealRandomAccessibleView< T >, U > functi // -- RealRandomAccessible ------------------------------------------------ @Override - default RealRandomAccessibleView< T > realView() + default RealRandomAccessibleView< T, ? > realView() { return this; } From 19950b56d6d7d9376ea0be28838d5501db8feaed Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 9 Jun 2025 17:38:08 -0500 Subject: [PATCH 3/6] RRAView: Align convert functions with RAView --- .../net/imglib2/view/fluent/RealRandomAccessibleView.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java index 40d92749b..864ddfb86 100644 --- a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java @@ -115,7 +115,7 @@ public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView */ default < U > RealRandomAccessibleView< U, ? > convert( final Supplier< U > targetSupplier, - final Converter< ? super T, ? super U > converter ) + final Converter< ? super T, ? super U > converter) { return wrap( Converters.convert2( delegate(), converter, targetSupplier ) ); } @@ -141,7 +141,7 @@ public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView */ default < U > RealRandomAccessibleView< U, ? > convert( final Supplier< U > targetSupplier, - final Supplier< Converter< ? super T, ? super U > > converterSupplier ) + final Supplier< Converter< ? super T, ? super U > > converterSupplier) { return wrap( Converters.convert2( delegate(), converterSupplier, targetSupplier ) ); } @@ -157,9 +157,9 @@ public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView * * @return {@code function.apply(this)} */ - default < U > U use( Function< ? super RealRandomAccessibleView< T, ? >, U > function ) + default < U > U use( Function< ? super V, U > function ) { - return function.apply( this ); + return function.apply( (V) this ); } From 58fb1c273e7c8bfbf52d2da53be3d4e4f84f6be5 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 10 Nov 2025 13:00:51 -0600 Subject: [PATCH 4/6] Return delegate in RAView.delegate Oopsie --- src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java index 01aea4180..edf9645e5 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java @@ -89,7 +89,7 @@ public interface RandomAccessibleView< T, V extends RandomAccessibleView< T, V > static > RandomAccessibleView< T, ? > wrap( final RandomAccessible< T > delegate ) { - return (RandomAccessibleView) () -> null; + return (RandomAccessibleView) () -> delegate; } // -- Views methods ------------------------------------------------------- From f3f58214ac2375cb6389d4269c54ea3c60956d83 Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 10 Nov 2025 14:12:14 -0600 Subject: [PATCH 5/6] Small fixes suggested by Copilot --- .../imglib2/view/fluent/RandomAccessibleIntervalView.java | 7 ++++++- .../net/imglib2/view/fluent/RealRandomAccessibleView.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java index 40faa8913..70e133cae 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java @@ -39,7 +39,12 @@ import net.imglib2.RandomAccessibleInterval; import net.imglib2.converter.Converter; import net.imglib2.converter.Converters; -import net.imglib2.outofbounds.*; +import net.imglib2.outofbounds.OutOfBoundsBorderFactory; +import net.imglib2.outofbounds.OutOfBoundsConstantValueFactory; +import net.imglib2.outofbounds.OutOfBoundsFactory; +import net.imglib2.outofbounds.OutOfBoundsMirrorFactory; +import net.imglib2.outofbounds.OutOfBoundsPeriodicFactory; +import net.imglib2.outofbounds.OutOfBoundsZeroFactory; import net.imglib2.stream.LocalizableSpliterator; import net.imglib2.type.Type; import net.imglib2.type.operators.SetZero; diff --git a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java index 864ddfb86..736727140 100644 --- a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java @@ -78,7 +78,7 @@ public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView static < T, V extends RealRandomAccessibleView> RealRandomAccessibleView< T, ? > wrap( final RealRandomAccessible< T > delegate ) { - return (RealRandomAccessibleView) () -> null; + return (RealRandomAccessibleView) () -> delegate; } // -- Views methods ------------------------------------------------------- From 6723c6ca9d33fec4985fe49a496fa8a103e8492b Mon Sep 17 00:00:00 2001 From: Gabriel Selzer Date: Mon, 10 Nov 2025 14:19:15 -0600 Subject: [PATCH 6/6] Format generics --- .../fluent/RandomAccessibleIntervalView.java | 20 +++++++++---------- .../view/fluent/RandomAccessibleView.java | 4 ++-- .../view/fluent/RealRandomAccessibleView.java | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java index 70e133cae..4f5c484f7 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleIntervalView.java @@ -85,14 +85,14 @@ * @author Michael Innerberger * @see Views */ -public interface RandomAccessibleIntervalView< T , V extends RandomAccessibleIntervalView> extends RandomAccessibleView< T, V >, RandomAccessibleInterval< T > +public interface RandomAccessibleIntervalView< T , V extends RandomAccessibleIntervalView< T , V >> extends RandomAccessibleView< T, V >, RandomAccessibleInterval< T > { @Override RandomAccessibleInterval< T > delegate(); - static < T, V extends RandomAccessibleIntervalView > RandomAccessibleIntervalView< T, ? > wrap( final RandomAccessibleInterval< T > delegate ) + static < T, V extends RandomAccessibleIntervalView< T, V > > RandomAccessibleIntervalView< T, ? > wrap( final RandomAccessibleInterval< T > delegate ) { - return (RandomAccessibleIntervalView) () -> delegate; + return (RandomAccessibleIntervalView< T, V >) () -> delegate; } // -- Views methods ------------------------------------------------------- @@ -324,7 +324,7 @@ public interface RandomAccessibleIntervalView< T , V extends RandomAccessibleInt * @param * pixel type ot the {@code RandomAccessible} to be extended */ - class Extension< T, V extends RandomAccessibleIntervalView> + class Extension< T, V extends RandomAccessibleIntervalView< T, V >> { final OutOfBoundsFactory< T, RandomAccessibleIntervalView< T, V > > factory; @@ -338,7 +338,7 @@ private Extension( OutOfBoundsFactory< T, RandomAccessibleIntervalView< T, V > > *

* Out-of-bounds pixels are created by repeating border pixels. */ - public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > border() + public static < T, V extends RandomAccessibleIntervalView< T, V > > Extension< T, V > border() { return new Extension<>(new OutOfBoundsBorderFactory<>() ); } @@ -348,7 +348,7 @@ public static < T, V extends RandomAccessibleIntervalView > Extension< T, *

* All out-of-bounds pixels have value zero. */ - public static < T extends Type< T > & SetZero, V extends RandomAccessibleIntervalView> Extension< T, V > zero() + public static < T extends Type< T > & SetZero, V extends RandomAccessibleIntervalView< T, V >> Extension< T, V > zero() { return new Extension<>( new OutOfBoundsZeroFactory< T, RandomAccessibleIntervalView< T, V > >() ); } @@ -358,7 +358,7 @@ public static < T extends Type< T > & SetZero, V extends RandomAccessibleInterva *

* All out-of-bounds pixels have the provided {@code value}. */ - public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > value( T value ) + public static < T, V extends RandomAccessibleIntervalView< T, V > > Extension< T, V > value( T value ) { return new Extension<>(new OutOfBoundsConstantValueFactory<>( value ) ); } @@ -370,7 +370,7 @@ public static < T, V extends RandomAccessibleIntervalView > Extension< T, * are not repeated. Note that this requires that all dimensions of the * source must be > 1. */ - public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > mirrorSingle() + public static < T, V extends RandomAccessibleIntervalView< T, V > > Extension< T, V > mirrorSingle() { return new Extension<>(new OutOfBoundsMirrorFactory<>( OutOfBoundsMirrorFactory.Boundary.SINGLE ) ); } @@ -381,7 +381,7 @@ public static < T, V extends RandomAccessibleIntervalView > Extension< T, * Out-of-bounds pixels are created by mirroring, where boundary pixels * are repeated. */ - public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > mirrorDouble() + public static < T, V extends RandomAccessibleIntervalView< T, V > > Extension< T, V > mirrorDouble() { return new Extension<>(new OutOfBoundsMirrorFactory<>( OutOfBoundsMirrorFactory.Boundary.DOUBLE ) ); } @@ -392,7 +392,7 @@ public static < T, V extends RandomAccessibleIntervalView > Extension< T, * Out-of-bounds pixels are created by periodically repeating the source * image. */ - public static < T, V extends RandomAccessibleIntervalView > Extension< T, V > periodic() + public static < T, V extends RandomAccessibleIntervalView< T, V > > Extension< T, V > periodic() { return new Extension<>(new OutOfBoundsPeriodicFactory<>() ); } diff --git a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java index edf9645e5..24c7d3d4a 100644 --- a/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RandomAccessibleView.java @@ -87,9 +87,9 @@ public interface RandomAccessibleView< T, V extends RandomAccessibleView< T, V > { RandomAccessible< T > delegate(); - static > RandomAccessibleView< T, ? > wrap( final RandomAccessible< T > delegate ) + static < T, V extends RandomAccessibleView< T, V >> RandomAccessibleView< T, ? > wrap( final RandomAccessible< T > delegate ) { - return (RandomAccessibleView) () -> delegate; + return (RandomAccessibleView< T, V >) () -> delegate; } // -- Views methods ------------------------------------------------------- diff --git a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java index 736727140..41fe02b3a 100644 --- a/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java +++ b/src/main/java/net/imglib2/view/fluent/RealRandomAccessibleView.java @@ -72,13 +72,13 @@ * @author Michael Innerberger * @see Views */ -public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView > extends RealRandomAccessible< T > +public interface RealRandomAccessibleView< T, V extends RealRandomAccessibleView< T, V > > extends RealRandomAccessible< T > { RealRandomAccessible< T > delegate(); - static < T, V extends RealRandomAccessibleView> RealRandomAccessibleView< T, ? > wrap( final RealRandomAccessible< T > delegate ) + static < T, V extends RealRandomAccessibleView< T, V >> RealRandomAccessibleView< T, ? > wrap( final RealRandomAccessible< T > delegate ) { - return (RealRandomAccessibleView) () -> delegate; + return (RealRandomAccessibleView< T, V >) () -> delegate; } // -- Views methods -------------------------------------------------------