This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit e0d5eb16e4d2038af93ce047beb4d9216c6e67e9 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Mon Dec 23 13:46:53 2024 +0100 Move `ImageLayout` to public API. The intend is to use it as a replacement for `SampleModel` and `ColorModel` arguments in `ImageProcessor`. --- .../apache/sis/coverage/privy/RasterFactory.java | 2 +- .../org/apache/sis/image/BandAggregateLayout.java | 1 - .../apache/sis/image/BandedSampleConverter.java | 1 - .../main/org/apache/sis/image/ImageCombiner.java | 1 - .../sis/{coverage/privy => image}/ImageLayout.java | 28 +++++++++++++--------- .../main/org/apache/sis/image/ImageOverlay.java | 1 - .../main/org/apache/sis/image/ImageProcessor.java | 1 - .../main/org/apache/sis/image/Transferer.java | 1 - .../main/org/apache/sis/image/Visualization.java | 1 - .../sis/image/BandedSampleConverterTest.java | 1 - .../{coverage/privy => image}/ImageLayoutTest.java | 2 +- .../org/apache/sis/image/ResampledImageTest.java | 1 - .../storage/geotiff/writer/ReformattedImage.java | 2 +- .../org/apache/sis/gui/coverage/GridTileCache.java | 2 +- .../org/apache/sis/storage/gdal/TiledResource.java | 2 +- 15 files changed, 22 insertions(+), 25 deletions(-) diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/RasterFactory.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/RasterFactory.java index 7d3ceeac3e..6e367c666a 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/RasterFactory.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/RasterFactory.java @@ -308,7 +308,7 @@ public final class RasterFactory extends Static { * @param sampleModel the sample model to make unique. * @return a unique instance of the given sample model. May be {@code sampleModel} itself. */ - static <T extends SampleModel> T unique(final T sampleModel) { + public static <T extends SampleModel> T unique(final T sampleModel) { return POOL.unique(sampleModel); } } diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandAggregateLayout.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandAggregateLayout.java index 4aea225fa4..a1e9a8513b 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandAggregateLayout.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandAggregateLayout.java @@ -31,7 +31,6 @@ import org.apache.sis.util.Workaround; import org.apache.sis.util.collection.FrequencySortedSet; import org.apache.sis.feature.internal.Resources; import org.apache.sis.coverage.grid.DisjointExtentException; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; import org.apache.sis.coverage.privy.ColorModelFactory; import org.apache.sis.coverage.privy.BandAggregateArgument; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandedSampleConverter.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandedSampleConverter.java index d120f30c34..99aed560f5 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandedSampleConverter.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/BandedSampleConverter.java @@ -32,7 +32,6 @@ import org.opengis.referencing.operation.MathTransform1D; import org.opengis.referencing.operation.TransformException; import org.opengis.referencing.operation.NoninvertibleTransformException; import org.apache.sis.coverage.SampleDimension; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; import org.apache.sis.coverage.privy.TileOpExecutor; import org.apache.sis.coverage.privy.SampleDimensions; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java index 94c06b79e1..d5ad15bdf9 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageCombiner.java @@ -24,7 +24,6 @@ import java.util.Objects; import java.util.function.Consumer; import javax.measure.Quantity; import org.opengis.referencing.operation.MathTransform; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; import org.apache.sis.coverage.privy.TileOpExecutor; import org.apache.sis.util.ArgumentChecks; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/ImageLayout.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageLayout.java similarity index 95% rename from endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/ImageLayout.java rename to endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageLayout.java index 52f515d029..4b9e2096d2 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/privy/ImageLayout.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageLayout.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.coverage.privy; +package org.apache.sis.image; import java.util.Arrays; import java.awt.Point; @@ -27,12 +27,12 @@ import java.awt.image.SampleModel; import java.awt.image.BandedSampleModel; import java.awt.image.WritableRenderedImage; import org.apache.sis.math.MathFunctions; -import org.apache.sis.image.ComputedImage; import org.apache.sis.util.ArraysExt; import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; import org.apache.sis.util.privy.Strings; import org.apache.sis.system.Configuration; +import org.apache.sis.coverage.privy.RasterFactory; /** @@ -42,6 +42,8 @@ import org.apache.sis.system.Configuration; * The rules for deriving a tile size are configurable by flags. * * @author Martin Desruisseaux (Geomatys) + * @version 1.5 + * @since 1.5 */ public class ImageLayout { /** @@ -144,7 +146,7 @@ public class ImageLayout { * @param source image from which to take tile size and tile indices. * @return layout giving exactly the tile size and indices of given image. */ - public static ImageLayout forTileSize(final RenderedImage source) { + static ImageLayout forTileSize(final RenderedImage source) { return new FixedSize(source, source.getMinTileX(), source.getMinTileY()); } @@ -156,7 +158,7 @@ public class ImageLayout { * @param minTileY row index of the first tile. * @return layout giving exactly the tile size and indices of given image. */ - public static ImageLayout forDestination(final WritableRenderedImage source, final int minTileX, final int minTileY) { + static ImageLayout forDestination(final WritableRenderedImage source, final int minTileX, final int minTileY) { return new FixedDestination(source, minTileX, minTileY); } @@ -411,7 +413,7 @@ public class ImageLayout { * <p>This method constructs the simplest possible banded sample model: * All {@linkplain BandedSampleModel#getBandOffsets() band offsets} are zero and * all {@linkplain BandedSampleModel#getBankIndices() bank indices} are identity mapping. - * This simplicity is needed by current implementation of {@link org.apache.sis.image.BandAggregateImage}.</p> + * This simplicity is needed by current implementation of {@link BandAggregateImage}.</p> * * @param dataType desired data type as a {@link java.awt.image.DataBuffer} constant. * @param numBands desired number of bands. @@ -420,7 +422,7 @@ public class ImageLayout { * @param scanlineStride the line stride of the of the image data, or ≤ 0 for automatic. * @return a banded sample model of the given type with the given number of bands. */ - public BandedSampleModel createBandedSampleModel(final int dataType, final int numBands, + final BandedSampleModel createBandedSampleModel(final int dataType, final int numBands, final RenderedImage image, final Rectangle bounds, int scanlineStride) { final Dimension tileSize = suggestTileSize(image, bounds); @@ -434,9 +436,7 @@ public class ImageLayout { /** * Creates a sample model compatible with the sample model of the given image - * but with a size matching the preferred tile size. This method can be used - * for determining the {@code sampleModel} argument of {@link ComputedImage} - * constructor. + * but with a size matching the preferred tile size. * * @param image the image form which to get a sample model. * @param bounds the bounds of the image to create, or {@code null} if same as {@code image}. @@ -459,18 +459,24 @@ public class ImageLayout { * Returns indices of the first tile ({@code minTileX}, {@code minTileY}), or {@code null} for (0,0). * The default implementation returns {@code null}. * + * <p>This method is not yet in public API because it is currently set only by {@link Visualization}. + * Only the image operations needed by {@code Visualization} take this information in account.</p> + * * @return indices of the first tile ({@code minTileX}, {@code minTileY}), or {@code null} for (0,0). */ - public Point getMinTile() { + Point getMinTile() { return null; } /** * Returns an existing image where to write the computation result, or {@code null} if none. * + * <p>This method is not yet in public API because it is currently set only by {@link ImageCombiner}. + * Only the image operations needed by {@code ImageCombiner} take this information in account.</p> + * * @return preexisting destination of computation result, or {@code null} if none. */ - public WritableRenderedImage getDestination() { + WritableRenderedImage getDestination() { return null; } diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageOverlay.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageOverlay.java index 8d73b7441f..2749c490e4 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageOverlay.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageOverlay.java @@ -40,7 +40,6 @@ import org.apache.sis.util.logging.Logging; import org.apache.sis.math.Statistics; import org.apache.sis.measure.Quantities; import org.apache.sis.feature.internal.Resources; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java index 8534939fb4..6228fedd99 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/ImageProcessor.java @@ -46,7 +46,6 @@ import org.apache.sis.referencing.operation.transform.MathTransforms; import org.apache.sis.coverage.grid.GridCoverage; import org.apache.sis.coverage.grid.GridGeometry; import org.apache.sis.coverage.grid.GridCoverageProcessor; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; import org.apache.sis.coverage.privy.TiledImage; import org.apache.sis.math.Statistics; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Transferer.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Transferer.java index 7350792c05..c67a220878 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Transferer.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Transferer.java @@ -29,7 +29,6 @@ import java.awt.image.RasterFormatException; import org.opengis.referencing.operation.MathTransform1D; import org.opengis.referencing.operation.TransformException; import org.apache.sis.coverage.privy.ImageUtilities; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.system.Configuration; import org.apache.sis.feature.internal.Resources; import org.apache.sis.util.privy.Numerics; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Visualization.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Visualization.java index e6309b2fb4..375f3477ed 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Visualization.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/Visualization.java @@ -41,7 +41,6 @@ import org.apache.sis.referencing.operation.transform.MathTransforms; import org.apache.sis.coverage.SampleDimension; import org.apache.sis.coverage.Category; import org.apache.sis.coverage.internal.CompoundTransform; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; import org.apache.sis.coverage.privy.SampleDimensions; import org.apache.sis.coverage.privy.ColorScaleBuilder; diff --git a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/BandedSampleConverterTest.java b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/BandedSampleConverterTest.java index 2da9ac2c0b..07d1957a2f 100644 --- a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/BandedSampleConverterTest.java +++ b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/BandedSampleConverterTest.java @@ -20,7 +20,6 @@ import java.util.Random; import java.awt.image.DataBuffer; import org.opengis.referencing.operation.MathTransform1D; import org.apache.sis.referencing.operation.transform.MathTransforms; -import org.apache.sis.coverage.privy.ImageLayout; // Test dependencies import org.junit.jupiter.api.Test; diff --git a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/privy/ImageLayoutTest.java b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ImageLayoutTest.java similarity index 97% rename from endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/privy/ImageLayoutTest.java rename to endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ImageLayoutTest.java index f0678dad1e..29ec35377c 100644 --- a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/coverage/privy/ImageLayoutTest.java +++ b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ImageLayoutTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.coverage.privy; +package org.apache.sis.image; import java.awt.Dimension; diff --git a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ResampledImageTest.java b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ResampledImageTest.java index 56c8db06eb..c8881f96f2 100644 --- a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ResampledImageTest.java +++ b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/ResampledImageTest.java @@ -31,7 +31,6 @@ import java.awt.image.RenderedImage; import java.awt.image.WritableRaster; import java.awt.geom.AffineTransform; import java.awt.geom.NoninvertibleTransformException; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.RasterFactory; import org.apache.sis.referencing.privy.AffineTransform2D; diff --git a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/ReformattedImage.java b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/ReformattedImage.java index ddf9f5623c..e1a4218dba 100644 --- a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/ReformattedImage.java +++ b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/writer/ReformattedImage.java @@ -27,9 +27,9 @@ import static javax.imageio.plugins.tiff.BaselineTIFFTagSet.*; import org.apache.sis.util.ArraysExt; import org.apache.sis.math.Statistics; import org.apache.sis.pending.jdk.JDK18; +import org.apache.sis.image.ImageLayout; import org.apache.sis.image.PlanarImage; import org.apache.sis.image.ImageProcessor; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ImageUtilities; import org.apache.sis.coverage.privy.SampleModelFactory; import org.apache.sis.io.stream.HyperRectangleWriter; diff --git a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridTileCache.java b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridTileCache.java index 35cb8fc8c8..66d1e53d98 100644 --- a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridTileCache.java +++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/coverage/GridTileCache.java @@ -19,7 +19,7 @@ package org.apache.sis.gui.coverage; import java.util.Map; import java.util.LinkedHashMap; import org.apache.sis.system.Configuration; -import static org.apache.sis.coverage.privy.ImageLayout.DEFAULT_TILE_SIZE; +import static org.apache.sis.image.ImageLayout.DEFAULT_TILE_SIZE; /** diff --git a/optional/src/org.apache.sis.storage.gdal/main/org/apache/sis/storage/gdal/TiledResource.java b/optional/src/org.apache.sis.storage.gdal/main/org/apache/sis/storage/gdal/TiledResource.java index 545d5e3ec7..3cb7cf48ce 100644 --- a/optional/src/org.apache.sis.storage.gdal/main/org/apache/sis/storage/gdal/TiledResource.java +++ b/optional/src/org.apache.sis.storage.gdal/main/org/apache/sis/storage/gdal/TiledResource.java @@ -37,12 +37,12 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.apache.sis.referencing.privy.AffineTransform2D; import org.apache.sis.referencing.privy.ExtendedPrecisionMatrix; import org.apache.sis.referencing.operation.transform.MathTransforms; +import org.apache.sis.image.ImageLayout; import org.apache.sis.coverage.SampleDimension; import org.apache.sis.coverage.grid.GridExtent; import org.apache.sis.coverage.grid.GridGeometry; import org.apache.sis.coverage.grid.GridCoverage; import org.apache.sis.coverage.grid.PixelInCell; -import org.apache.sis.coverage.privy.ImageLayout; import org.apache.sis.coverage.privy.ColorModelBuilder; import org.apache.sis.coverage.privy.ColorModelFactory; import org.apache.sis.storage.DataStoreException;