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;

Reply via email to