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 07e580721c11d427c1ac0f5fd5bb32da669fb332 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Tue Aug 31 17:13:33 2021 +0200 Fix a NullPointerException. --- .../main/java/org/apache/sis/coverage/SampleDimension.java | 2 ++ .../org/apache/sis/storage/geotiff/ImageFileDirectory.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java index eb266a0..bc09f3a 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java +++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java @@ -797,6 +797,8 @@ public class SampleDimension implements Serializable { * @throws IllegalArgumentException if the range is empty. */ public Builder addQualitative(final CharSequence name, final Number minimum, final Number maximum) { + ArgumentChecks.ensureNonNull("minimum", minimum); + ArgumentChecks.ensureNonNull("maximum", maximum); return addQualitative(name, range(Numbers.widestClass(minimum, maximum), minimum, maximum)); } 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 31eb946..a6685c0 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 @@ -1388,8 +1388,10 @@ final class ImageFileDirectory extends DataCube { final SampleDimension.Builder builder = new SampleDimension.Builder(); final InternationalString name = Vocabulary.formatInternational(Vocabulary.Keys.Value); for (int band = 0; band < samplesPerPixel;) { - builder.addQualitative(name, minValues.get(Math.min(band, minValues.size()-1)), - maxValues.get(Math.min(band, maxValues.size()-1))); + if (minValues != null && maxValues != null) { + builder.addQualitative(name, minValues.get(Math.min(band, minValues.size()-1)), + maxValues.get(Math.min(band, maxValues.size()-1))); + } dimensions[band] = builder.setName(++band).build(); builder.clear(); } @@ -1520,9 +1522,11 @@ final class ImageFileDirectory extends DataCube { if (photometricInterpretation == 0) { ArraysExt.swap(colors, 0, 1); } - colorModel = ColorModelFactory.createColorScale(dataType, samplesPerPixel, visibleBand, - Math.max(minValues.doubleValue(visibleBand), 0), - Math.min(maxValues.doubleValue(visibleBand), (1 << bitsPerSample) - 1), colors); + 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); + colorModel = ColorModelFactory.createColorScale(dataType, samplesPerPixel, visibleBand, min, max, colors); break; } case 2: { // RGB: (0,0,0) is black and (255,255,255) is white.