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 2cb6525c48b5302dd21c5faf0377b8c04bf83ef1 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sat Aug 13 10:36:02 2022 +0200 Move isoline generation code to its own package. --- .../apache/sis/gui/coverage/CoverageCanvas.java | 2 +- .../apache/sis/gui/coverage/IsolineRenderer.java | 2 +- .../sis/gui/coverage/StyledRenderingData.java | 2 +- .../java/org/apache/sis/image/ImageProcessor.java | 2 +- .../internal/processing/image/TiledProcess.java | 6 +-- .../processing/{image => isoline}/Isolines.java | 51 +++++++++++----------- .../IsolineTracer.java => isoline/Tracer.java} | 12 ++--- .../internal/processing/isoline/package-info.java | 32 ++++++++++++++ .../org/apache/sis/image/ImageProcessorTest.java | 4 +- .../{image => isoline}/IsolinesTest.java | 2 +- .../StepsViewer.java} | 12 ++--- .../apache/sis/test/suite/FeatureTestSuite.java | 2 +- 12 files changed, 81 insertions(+), 48 deletions(-) diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageCanvas.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageCanvas.java index daf385014a..eab02b084d 100644 --- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageCanvas.java +++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageCanvas.java @@ -70,7 +70,7 @@ import org.apache.sis.gui.map.MapCanvasAWT; import org.apache.sis.portrayal.RenderException; import org.apache.sis.internal.map.coverage.RenderingWorkaround; import org.apache.sis.internal.coverage.j2d.TileErrorHandler; -import org.apache.sis.internal.processing.image.Isolines; +import org.apache.sis.internal.processing.isoline.Isolines; import org.apache.sis.internal.gui.BackgroundThreads; import org.apache.sis.internal.gui.ExceptionReporter; import org.apache.sis.internal.gui.GUIUtilities; diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/IsolineRenderer.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/IsolineRenderer.java index 63917179df..d816ab68b8 100644 --- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/IsolineRenderer.java +++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/IsolineRenderer.java @@ -38,7 +38,7 @@ import javafx.collections.ListChangeListener; import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.TransformException; import org.apache.sis.internal.gui.control.ColorRamp; -import org.apache.sis.internal.processing.image.Isolines; +import org.apache.sis.internal.processing.isoline.Isolines; import org.apache.sis.internal.coverage.j2d.ImageUtilities; import org.apache.sis.internal.gui.control.ValueColorMapper.Step; import org.apache.sis.internal.feature.j2d.EmptyShape; diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/StyledRenderingData.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/StyledRenderingData.java index 0709fe82c2..ed19c7d66d 100644 --- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/StyledRenderingData.java +++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/StyledRenderingData.java @@ -24,7 +24,7 @@ import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.TransformException; import org.apache.sis.storage.DataStoreException; import org.apache.sis.image.ErrorHandler; -import org.apache.sis.internal.processing.image.Isolines; +import org.apache.sis.internal.processing.isoline.Isolines; import org.apache.sis.internal.map.coverage.RenderingData; diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java index ef4923f5d7..23575b6a64 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java +++ b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java @@ -51,7 +51,7 @@ import org.apache.sis.util.resources.Errors; import org.apache.sis.util.collection.WeakHashSet; import org.apache.sis.internal.system.Modules; import org.apache.sis.internal.coverage.j2d.TiledImage; -import org.apache.sis.internal.processing.image.Isolines; +import org.apache.sis.internal.processing.isoline.Isolines; import org.apache.sis.internal.feature.Resources; import org.apache.sis.measure.NumberRange; import org.apache.sis.measure.Units; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java index 8adf66ec51..79e33132f2 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java @@ -56,14 +56,14 @@ import org.apache.sis.util.ArgumentChecks; * Consequently tile size will be determined by other considerations such as the number of processors. * * @author Martin Desruisseaux (Geomatys) - * @version 1.1 + * @version 1.3 * * @param <R> the type of value computed as a result of this process. * * @since 1.1 * @module */ -abstract class TiledProcess<R> { +public abstract class TiledProcess<R> { /** * Minimal "tile" size for sub-tasks computation. That size should not be too small because the * fork/join processes have some extra cost compared to processing the whole image as one single tile. @@ -221,7 +221,7 @@ abstract class TiledProcess<R> { * <p>This class implements {@link Callable} for {@code TiledProcess} convenience. * This implementation details should be ignored; it may change in any future version.</p> */ - abstract class Task implements Callable<R> { + protected abstract class Task implements Callable<R> { /** * Index of this {@code Task} instance in the {@link TiledProcess#tasks} array. */ diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/Isolines.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java similarity index 92% rename from core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/Isolines.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java index a3532ecb56..a1e22aa3fe 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/Isolines.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.processing.image; +package org.apache.sis.internal.processing.isoline; import java.util.AbstractList; import java.util.Arrays; @@ -31,15 +31,16 @@ import java.awt.image.RenderedImage; import org.opengis.coverage.grid.SequenceType; import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.TransformException; +import org.apache.sis.internal.processing.image.TiledProcess; import org.apache.sis.image.PixelIterator; import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.ArraysExt; import org.apache.sis.util.resources.Errors; import org.apache.sis.util.Debug; -import static org.apache.sis.internal.processing.image.IsolineTracer.UPPER_LEFT; -import static org.apache.sis.internal.processing.image.IsolineTracer.UPPER_RIGHT; -import static org.apache.sis.internal.processing.image.IsolineTracer.LOWER_RIGHT; +import static org.apache.sis.internal.processing.isoline.Tracer.UPPER_LEFT; +import static org.apache.sis.internal.processing.isoline.Tracer.UPPER_RIGHT; +import static org.apache.sis.internal.processing.isoline.Tracer.LOWER_RIGHT; /** @@ -57,14 +58,14 @@ import static org.apache.sis.internal.processing.image.IsolineTracer.LOWER_RIGHT */ public final class Isolines { /** - * Isoline data for each level, sorted in ascending order of {@link IsolineTracer.Level#value}. + * Isoline data for each level, sorted in ascending order of {@link Tracer.Level#value}. */ - private final IsolineTracer.Level[] levels; + private final Tracer.Level[] levels; /** * A consumer to notify about the current state of isoline generation, or {@code null} if none. * This is used for debugging purposes only. This field is temporarily set to a non-null value - * when using {@code IsolineViewer} (in test package) for following an isoline generation step + * when using {@code StepsViewer} (in test package) for following an isoline generation step * by step. */ @Debug @@ -74,8 +75,8 @@ public final class Isolines { * Creates an initially empty set of isolines for the given levels. The given {@code values} * array should be one of the arrays validated by {@link #cloneAndSort(double[][])}. */ - private Isolines(final IsolineTracer tracer, final int band, final double[] values, final int width) { - levels = new IsolineTracer.Level[values.length]; + private Isolines(final Tracer tracer, final int band, final double[] values, final int width) { + levels = new Tracer.Level[values.length]; for (int i=0; i<values.length; i++) { levels[i] = tracer.new Level(band, values[i], width); } @@ -105,7 +106,7 @@ public final class Isolines { } /** - * Sets the specified bit on {@link IsolineTracer.Level#isDataAbove} for all levels lower than given value. + * Sets the specified bit on {@link Tracer.Level#isDataAbove} for all levels lower than given value. * * <h4>How strict equalities are handled</h4> * Sample values exactly equal to the isoline value are handled as if they were greater. It does not matter @@ -120,13 +121,13 @@ public final class Isolines { * out in the final stage, when copying coordinates in {@link Path2D} objects. * * @param value a sample values from the image. - * @param bit {@value IsolineTracer#UPPER_LEFT}, {@value IsolineTracer#UPPER_RIGHT}, - * {@value IsolineTracer#LOWER_LEFT} or {@value IsolineTracer#LOWER_RIGHT}. + * @param bit {@value Tracer#UPPER_LEFT}, {@value Tracer#UPPER_RIGHT}, + * {@value Tracer#LOWER_LEFT} or {@value Tracer#LOWER_RIGHT}. * - * @see IsolineTracer.Level#nextColumn() + * @see Tracer.Level#nextColumn() */ private void setMaskBit(final double value, final int bit) { - for (final IsolineTracer.Level level : levels) { + for (final Tracer.Level level : levels) { if (level.value > value) break; // See above javadoc for NaN handling. level.isDataAbove |= bit; } @@ -196,7 +197,7 @@ public final class Isolines { */ private static Isolines[] flush(final Isolines[] isolines) throws TransformException { for (final Isolines isoline : isolines) { - for (final IsolineTracer.Level level : isoline.levels) { + for (final Tracer.Level level : isoline.levels) { level.flush(); } } @@ -291,11 +292,11 @@ public final class Isolines { /* * Prepares a window of size 2×2 pixels over pixel values. Window elements are traversed * by incrementing indices in following order: band, column, row. The window content will - * be written in this method and read by IsolineTracer. + * be written in this method and read by Tracer. */ final int numBands = iterator.getNumBands(); final double[] window = new double[numBands * 4]; - final IsolineTracer tracer = new IsolineTracer(window, numBands, iterator.getDomain(), gridToCRS); + final Tracer tracer = new Tracer(window, numBands, iterator.getDomain(), gridToCRS); /* * Prepare the set of isolines for each band in the image. * The number of cells on the horizontal axis is one less @@ -336,7 +337,7 @@ abort: while (iterator.next()) { * * - Get values on the 4 corners. * - Save value of lower-left corner for use by next row. - * - Initialize `IsolineTracer.Level.isDataAbove` bits for all levels. + * - Initialize `Tracer.Level.isDataAbove` bits for all levels. * - Interpolate the first cell. */ System.arraycopy(valuesOnPreviousRow, 0, window, 0, twoPixels); @@ -350,7 +351,7 @@ abort: while (iterator.next()) { } } for (final Isolines iso : isolines) { - for (final IsolineTracer.Level level : iso.levels) { + for (final Tracer.Level level : iso.levels) { level.interpolate(); } } @@ -377,12 +378,12 @@ abort: while (iterator.next()) { } for (int b=0; b<numBands; b++) { final Isolines iso = isolines[b]; - for (final IsolineTracer.Level level : iso.levels) { + for (final Tracer.Level level : iso.levels) { level.nextColumn(); } iso.setMaskBit(window[numBands + b], UPPER_RIGHT); iso.setMaskBit(window[lastPixel + b], LOWER_RIGHT); - for (final IsolineTracer.Level level : iso.levels) { + for (final Tracer.Level level : iso.levels) { level.interpolate(); } } @@ -392,7 +393,7 @@ abort: while (iterator.next()) { * If there is listeners to notify (for debugging purposes), notify them. */ for (int b=0; b<numBands; b++) { - for (final IsolineTracer.Level level : isolines[b].levels) { + for (final Tracer.Level level : isolines[b].levels) { level.finishedRow(); } if (LISTENER != null) { @@ -409,7 +410,7 @@ abort: while (iterator.next()) { * Finished iteration over the whole image. */ for (int b=0; b<numBands; b++) { - for (final IsolineTracer.Level level : isolines[b].levels) { + for (final Tracer.Level level : isolines[b].levels) { level.finish(); } if (LISTENER != null) { @@ -426,7 +427,7 @@ abort: while (iterator.next()) { */ public final NavigableMap<Double,Shape> polylines() { final TreeMap<Double,Shape> paths = new TreeMap<>(); - for (final IsolineTracer.Level level : levels) { + for (final Tracer.Level level : levels) { final Shape path = level.shape; if (path != null) { paths.put(level.value, path); @@ -534,7 +535,7 @@ abort: while (iterator.next()) { @Debug private Path2D toRawPath() { final Path2D path = new Path2D.Float(); - for (final IsolineTracer.Level level : levels) { + for (final Tracer.Level level : levels) { level.toRawPath(path); } return path; diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/IsolineTracer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java similarity index 99% rename from core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/IsolineTracer.java rename to core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java index b0e55cadd0..3d6abbf6c2 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/IsolineTracer.java +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.processing.image; +package org.apache.sis.internal.processing.isoline; import java.util.Arrays; import java.util.ArrayList; @@ -37,7 +37,7 @@ import org.apache.sis.util.Debug; /** * Iterator over contouring grid cells together with an interpolator and an assembler of polyline segments. * A single instance of this class is created by {@code Isolines.generate(…)} for all bands to process in a - * given image. {@code IsolineTracer} is used for doing a single iteration over all image pixels. + * given image. {@code Tracer} is used for doing a single iteration over all image pixels. * * @author Johann Sorel (Geomatys) * @author Martin Desruisseaux (Geomatys) @@ -48,7 +48,7 @@ import org.apache.sis.util.Debug; * @since 1.1 * @module */ -final class IsolineTracer { +final class Tracer { /** * Mask to apply on {@link Level#isDataAbove} for telling that value in a corner is higher than the level value. * Values are defined in {@code PixelIterator.Window} iteration order: from left to right, then top to bottom. @@ -104,7 +104,7 @@ final class IsolineTracer { * @param domain pixel coordinates where iteration will happen. * @param gridToCRS final transform to apply on coordinates (integer source coordinates at pixel centers). */ - IsolineTracer(final double[] window, final int pixelStride, final Rectangle domain, final MathTransform gridToCRS) { + Tracer(final double[] window, final int pixelStride, final Rectangle domain, final MathTransform gridToCRS) { this.window = window; this.pixelStride = pixelStride; this.translateX = domain.x; @@ -519,7 +519,7 @@ final class IsolineTracer { * {@link #polylineOnLeft} and {@code polylineOnTop} will become empty after this method call. * * @param polylineOnTop value of {@code polylinesOnTop[x]}. - * @throws TransformException if the {@link IsolineTracer#gridToCRS} transform can not be applied. + * @throws TransformException if the {@link Tracer#gridToCRS} transform can not be applied. */ private void closeLeftWithTop(final Polyline polylineOnTop) throws TransformException { interpolateMissingLeftSide(); @@ -744,7 +744,7 @@ final class IsolineTracer { /** * Creates a new polyline wrapping the given coordinates. Used for wrapping {@link Unclosed} - * instances in objects expected by {@link IsolineTracer#writeTo(Joiner, Polyline[], boolean)}. + * instances in objects expected by {@link Tracer#writeTo(Joiner, Polyline[], boolean)}. * Those {@code Polyline} instances are temporary. */ Polyline(final double[] data) { diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/package-info.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/package-info.java new file mode 100644 index 0000000000..8f337f51b9 --- /dev/null +++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/package-info.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Isolines generation. + * + * <p><strong>Do not use!</strong></p> + * + * This package is for internal use by SIS only. Classes in this package + * may change in incompatible ways in any future version without notice. + * + * @author Johann Sorel (Geomatys) + * @author Martin Desruisseaux (Geomatys) + * @version 1.3 + * @since 1.1 + * @module + */ +package org.apache.sis.internal.processing.isoline; diff --git a/core/sis-feature/src/test/java/org/apache/sis/image/ImageProcessorTest.java b/core/sis-feature/src/test/java/org/apache/sis/image/ImageProcessorTest.java index 22dd7aedbc..6a123ba60c 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/image/ImageProcessorTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/image/ImageProcessorTest.java @@ -20,7 +20,7 @@ import java.util.Map; import java.awt.Shape; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; -import org.apache.sis.internal.processing.image.IsolinesTest; +import org.apache.sis.internal.processing.isoline.IsolinesTest; import org.apache.sis.test.DependsOn; import org.opengis.referencing.operation.MathTransform; import org.apache.sis.test.TestCase; @@ -38,7 +38,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton; * @since 1.1 * @module */ -@DependsOn(org.apache.sis.internal.processing.image.IsolinesTest.class) +@DependsOn(org.apache.sis.internal.processing.isoline.IsolinesTest.class) public final strictfp class ImageProcessorTest extends TestCase { /** * Tests {@link ImageProcessor#isolines(RenderedImage, double[][], MathTransform)}. diff --git a/core/sis-feature/src/test/java/org/apache/sis/internal/processing/image/IsolinesTest.java b/core/sis-feature/src/test/java/org/apache/sis/internal/processing/isoline/IsolinesTest.java similarity index 99% rename from core/sis-feature/src/test/java/org/apache/sis/internal/processing/image/IsolinesTest.java rename to core/sis-feature/src/test/java/org/apache/sis/internal/processing/isoline/IsolinesTest.java index 14568a0eb9..e5fa451e0b 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/internal/processing/image/IsolinesTest.java +++ b/core/sis-feature/src/test/java/org/apache/sis/internal/processing/isoline/IsolinesTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.processing.image; +package org.apache.sis.internal.processing.isoline; import java.util.Map; import java.awt.Shape; diff --git a/core/sis-feature/src/test/java/org/apache/sis/internal/processing/image/IsolineViewer.java b/core/sis-feature/src/test/java/org/apache/sis/internal/processing/isoline/StepsViewer.java similarity index 96% rename from core/sis-feature/src/test/java/org/apache/sis/internal/processing/image/IsolineViewer.java rename to core/sis-feature/src/test/java/org/apache/sis/internal/processing/isoline/StepsViewer.java index 446946b93c..0618d21a10 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/internal/processing/image/IsolineViewer.java +++ b/core/sis-feature/src/test/java/org/apache/sis/internal/processing/isoline/StepsViewer.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.sis.internal.processing.image; +package org.apache.sis.internal.processing.isoline; import java.awt.Shape; import java.awt.Color; @@ -50,7 +50,7 @@ import static org.junit.Assert.*; /** * A viewer for showing isoline generation step-by-step. * For enabling the use of this class, temporarily remove {@code private} and {@code final} keywords in - * {@link Isolines#LISTENER}, then uncomment the {@link #setListener(IsolineViewer)} constructor body. + * {@link Isolines#LISTENER}, then uncomment the {@link #setListener(StepsViewer)} constructor body. * * @author Martin Desruisseaux (Geomatys) * @version 1.3 @@ -58,13 +58,13 @@ import static org.junit.Assert.*; * @module */ @SuppressWarnings("serial") -public final class IsolineViewer extends JComponent implements BiConsumer<String,Path2D>, ChangeListener, ActionListener { +public final class StepsViewer extends JComponent implements BiConsumer<String,Path2D>, ChangeListener, ActionListener { /** * Sets the component to be notified after each row of isolines generated from the rendered image. * The body of this method is commented-out because {@link Isolines#LISTENER} is private and final. * The body should be uncommented only temporarily during debugging phases. */ - private static void setListener(final IsolineViewer listener) { + private static void setListener(final StepsViewer listener) { // Isolines.LISTENER = listener; } @@ -135,7 +135,7 @@ public final class IsolineViewer extends JComponent implements BiConsumer<String * @param pane the container where to add components. */ @SuppressWarnings("ThisEscapedInObjectConstruction") - private IsolineViewer(final RenderedImage data, final Container pane) { + private StepsViewer(final RenderedImage data, final Container pane) { final double scaleX = (CANVAS_WIDTH - 2*PADDING) / (double) data.getWidth(); final double scaleY = (CANVAS_HEIGHT - 2*PADDING) / (double) data.getHeight(); sourceToCanvas = new AffineTransform2D( @@ -170,7 +170,7 @@ public final class IsolineViewer extends JComponent implements BiConsumer<String final JFrame frame = new JFrame("Step-by-step isoline viewer"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); - final IsolineViewer viewer = new IsolineViewer(data, frame.getContentPane()); + final StepsViewer viewer = new StepsViewer(data, frame.getContentPane()); final Isolines iso; try { setListener(viewer); diff --git a/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java b/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java index db88eca51d..78e4a38b3e 100644 --- a/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java +++ b/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java @@ -88,7 +88,7 @@ import org.junit.runners.Suite; org.apache.sis.internal.coverage.j2d.ScaledColorSpaceTest.class, org.apache.sis.internal.coverage.j2d.ColorizerTest.class, org.apache.sis.internal.coverage.j2d.SampleModelFactoryTest.class, - org.apache.sis.internal.processing.image.IsolinesTest.class, + org.apache.sis.internal.processing.isoline.IsolinesTest.class, org.apache.sis.image.DataTypeTest.class, org.apache.sis.image.PlanarImageTest.class, org.apache.sis.image.ComputedImageTest.class,