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 0e4421bd37d4432d3ac82c2f16bc0abe12db68a2
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Thu Oct 28 13:21:34 2021 +0200

    Fix a problem with `IndexColorModel` creation for 1-bit TIFF images.
---
 .../apache/sis/internal/coverage/j2d/ColorModelFactory.java  | 12 ++++++------
 .../org/apache/sis/storage/geotiff/ImageFileDirectory.java   |  8 ++++----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
index bb0e785..615fd71 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
@@ -42,7 +42,7 @@ import org.apache.sis.util.Debug;
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Johann Sorel (Geomatys)
- * @version 1.1
+ * @version 1.2
  * @since   1.0
  * @module
  */
@@ -382,21 +382,21 @@ public final class ColorModelFactory {
 
     /**
      * Returns a color model interpolated for the given range of values. This 
is a convenience method for
-     * {@link #createColorModel(int, int, int, Collection)} when the 
collection contains only one element.
+     * {@link #createPiecewise(int, int, int, Collection)} when the collection 
contains only one element.
      *
      * @param  dataType     the color model type.
      * @param  numBands     the number of bands for the color model (usually 
1).
      * @param  visibleBand  the band to be made visible (usually 0). All other 
bands (if any) will be ignored.
-     * @param  minimum      the minimum value, inclusive.
-     * @param  maximum      the maximum value, inclusive.
+     * @param  lower        the minimum value, inclusive.
+     * @param  upper        the maximum value, exclusive.
      * @param  colors       the colors to use for the range of sample values.
      * @return a color model suitable for {@link java.awt.image.RenderedImage} 
objects with values in the given ranges.
      */
     public static ColorModel createColorScale(final int dataType, final int 
numBands, final int visibleBand,
-                                              final double minimum, final 
double maximum, final Color... colors)
+                                              final double lower, final double 
upper, final Color... colors)
     {
         return createPiecewise(dataType, numBands, visibleBand, new 
ColorsForRange[] {
-            new ColorsForRange(null, new NumberRange<>(Double.class, minimum, 
true, maximum, true), colors)
+            new ColorsForRange(null, new NumberRange<>(Double.class, lower, 
true, upper, false), colors)
         });
     }
 
diff --git 
a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
 
b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
index 7600546..4430848 100644
--- 
a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
+++ 
b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
@@ -1446,7 +1446,7 @@ final class ImageFileDirectory extends DataCube {
                 for (int band = 0; band < samplesPerPixel;) {
                     NumberRange<?> sampleRange = null;
                     if (minValues != null && maxValues != null) {
-                        sampleRange = NumberRange.createBestFit(
+                        sampleRange = NumberRange.createBestFit(sampleFormat 
== FLOAT,
                                 minValues.get(Math.min(band, 
minValues.size()-1)), true,
                                 maxValues.get(Math.min(band, 
maxValues.size()-1)), true);
                     }
@@ -1582,9 +1582,9 @@ final class ImageFileDirectory extends DataCube {
                         ArraysExt.swap(colors, 0, 1);
                     }
                     double min = 0;
-                    double max = Numerics.bitmask(bitsPerSample) - 1;
-                    if (minValues != null) min = 
Math.max(minValues.doubleValue(visibleBand), min);
-                    if (maxValues != null) max = 
Math.min(maxValues.doubleValue(visibleBand), max);
+                    double max = Numerics.bitmask(bitsPerSample);              
     // Exclusive.
+                    if (minValues != null) min = Math.max(min, 
minValues.doubleValue(visibleBand));
+                    if (maxValues != null) max = Math.min(max, 
maxValues.doubleValue(visibleBand) + 1);
                     colorModel = ColorModelFactory.createColorScale(dataType, 
samplesPerPixel, visibleBand, min, max, colors);
                     break;
                 }

Reply via email to