From 6add87312dce530a70e7fd7ca9094f0ba74501b7 Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Fri, 17 Jan 2025 09:09:52 -0600 Subject: [PATCH] Let WrappedImg extend Img And add default method implementations delegating to the wrapped Img. I lifted the methods to implement from an existing class implementing WrappedImg and Img with the delegation pattern: https://github.com/imglib/imglib2-appose/blob/d1f5ce29ba6e8ac2a0fb172120f9af61a0413248/src/main/java/net/imglib2/appose/SharedMemoryImg.java#L120-L198 --- pom.xml | 2 +- src/main/java/net/imglib2/img/WrappedImg.java | 86 ++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3c5dfe662..6269d7281 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ net.imglib2 imglib2 - 7.1.5-SNAPSHOT + 7.2.0-SNAPSHOT ImgLib2 Core Library A multidimensional, type-agnostic image processing library. diff --git a/src/main/java/net/imglib2/img/WrappedImg.java b/src/main/java/net/imglib2/img/WrappedImg.java index d6227bdd7..e3ba753fa 100644 --- a/src/main/java/net/imglib2/img/WrappedImg.java +++ b/src/main/java/net/imglib2/img/WrappedImg.java @@ -34,12 +34,96 @@ package net.imglib2.img; +import net.imglib2.Cursor; +import net.imglib2.Interval; +import net.imglib2.RandomAccess; +import net.imglib2.stream.LocalizableSpliterator; + /** * An object that wraps an {@link Img} somehow. * * @author Christian Dietz */ -public interface WrappedImg< T > +public interface WrappedImg< T > extends Img< T > { Img< T > getImg(); + + @Override + default T getType() + { + return getImg().getType(); + } + + @Override + default int numDimensions() + { + return getImg().numDimensions(); + } + + @Override + default long min( final int d ) + { + return getImg().min( d ); + } + + @Override + default long max( final int d ) + { + return getImg().max( d ); + } + + @Override + default long dimension( final int d ) + { + return getImg().dimension( d ); + } + + @Override + default RandomAccess< T > randomAccess() + { + return getImg().randomAccess(); + } + + @Override + default RandomAccess< T > randomAccess( final Interval interval ) + { + return getImg().randomAccess( interval ); + } + + @Override + default Cursor< T > cursor() + { + return getImg().cursor(); + } + + @Override + default Cursor< T > localizingCursor() + { + return getImg().localizingCursor(); + } + + @Override + default LocalizableSpliterator< T > spliterator() + { + return getImg().spliterator(); + } + + @Override + default LocalizableSpliterator< T > localizingSpliterator() + { + return getImg().localizingSpliterator(); + } + + @Override + default long size() + { + return getImg().size(); + } + + @Override + default Object iterationOrder() + { + return getImg().iterationOrder(); + } + }