This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-imaging.git
commit d9c27638eda92186880b8d8f80a9162e65b65d25 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Tue May 16 10:37:18 2023 -0400 Encapsulate PngChunkScal --- .../imaging/formats/png/PngImageParser.java | 10 +-- .../imaging/formats/png/chunks/PngChunkScal.java | 74 +++++++++++++--------- .../formats/png/chunks/PngChunkScalTest.java | 12 ++-- 3 files changed, 54 insertions(+), 42 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java b/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java index 021b7e0e..f103510c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/PngImageParser.java @@ -428,12 +428,12 @@ public class PngImageParser extends ImageParser<PngImagingParameters> implement } if (sCALs.size() == 1) { final PngChunkScal pngChunkScal = (PngChunkScal) sCALs.get(0); - if (pngChunkScal.unitSpecifier == 1) { - physicalScale = PhysicalScale.createFromMeters(pngChunkScal.unitsPerPixelXAxis, - pngChunkScal.unitsPerPixelYAxis); + if (pngChunkScal.getUnitSpecifier() == 1) { + physicalScale = PhysicalScale.createFromMeters(pngChunkScal.getUnitsPerPixelXAxis(), + pngChunkScal.getUnitsPerPixelYAxis()); } else { - physicalScale = PhysicalScale.createFromRadians(pngChunkScal.unitsPerPixelXAxis, - pngChunkScal.unitsPerPixelYAxis); + physicalScale = PhysicalScale.createFromRadians(pngChunkScal.getUnitsPerPixelXAxis(), + pngChunkScal.getUnitsPerPixelYAxis()); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java index 2d38239d..9c026e14 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.java @@ -23,42 +23,54 @@ import java.nio.charset.StandardCharsets; import org.apache.commons.imaging.ImagingException; public class PngChunkScal extends PngChunk { - public final double unitsPerPixelXAxis; - public final double unitsPerPixelYAxis; - public final int unitSpecifier; - public PngChunkScal(final int length, final int chunkType, final int crc, final byte[] bytes) - throws ImagingException { - super(length, chunkType, crc, bytes); + private final double unitsPerPixelXAxis; + private final double unitsPerPixelYAxis; + private final int unitSpecifier; - unitSpecifier = bytes[0]; - if (unitSpecifier != 1 && unitSpecifier != 2) { - throw new ImagingException("PNG sCAL invalid unit specifier: " + unitSpecifier); - } + public PngChunkScal(final int length, final int chunkType, final int crc, final byte[] bytes) throws ImagingException { + super(length, chunkType, crc, bytes); - final int separator = findNull(bytes); - if (separator < 0) { - throw new ImagingException("PNG sCAL x and y axis value separator not found."); - } + unitSpecifier = bytes[0]; + if (getUnitSpecifier() != 1 && getUnitSpecifier() != 2) { + throw new ImagingException("PNG sCAL invalid unit specifier: " + getUnitSpecifier()); + } - final int xIndex = 1; - final String xStr = new String(bytes, xIndex, separator - 1, StandardCharsets.ISO_8859_1); - unitsPerPixelXAxis = toDouble(xStr); + final int separator = findNull(bytes); + if (separator < 0) { + throw new ImagingException("PNG sCAL x and y axis value separator not found."); + } - final int yIndex = separator + 1; - if (yIndex >= length) { - throw new ImagingException("PNG sCAL chunk missing the y axis value."); - } + final int xIndex = 1; + final String xStr = new String(bytes, xIndex, separator - 1, StandardCharsets.ISO_8859_1); + unitsPerPixelXAxis = toDouble(xStr); - final String yStr = new String(bytes, yIndex, length - yIndex, StandardCharsets.ISO_8859_1); - unitsPerPixelYAxis = toDouble(yStr); - } + final int yIndex = separator + 1; + if (yIndex >= length) { + throw new ImagingException("PNG sCAL chunk missing the y axis value."); + } - private double toDouble(final String str) throws ImagingException { - try { - return Double.parseDouble(str); - } catch (final NumberFormatException e) { - throw new ImagingException("PNG sCAL error reading axis value - " + str); - } - } + final String yStr = new String(bytes, yIndex, length - yIndex, StandardCharsets.ISO_8859_1); + unitsPerPixelYAxis = toDouble(yStr); + } + + public int getUnitSpecifier() { + return unitSpecifier; + } + + public double getUnitsPerPixelXAxis() { + return unitsPerPixelXAxis; + } + + public double getUnitsPerPixelYAxis() { + return unitsPerPixelYAxis; + } + + private double toDouble(final String str) throws ImagingException { + try { + return Double.parseDouble(str); + } catch (final NumberFormatException e) { + throw new ImagingException("PNG sCAL error reading axis value - " + str); + } + } } diff --git a/src/test/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScalTest.java b/src/test/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScalTest.java index 96036270..baf608f6 100644 --- a/src/test/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScalTest.java +++ b/src/test/java/org/apache/commons/imaging/formats/png/chunks/PngChunkScalTest.java @@ -56,9 +56,9 @@ public class PngChunkScalTest { final PngChunkScal pngChunkScal = new PngChunkScal(10, chunkType, 0, new byte[]{1, 48, 46, 48, 49, 0, 48, 46, 48, 50}); - assertEquals(pngChunkScal.unitSpecifier, 1); - assertEquals(pngChunkScal.unitsPerPixelXAxis, 0.01, delta); - assertEquals(pngChunkScal.unitsPerPixelYAxis, 0.02, delta); + assertEquals(pngChunkScal.getUnitSpecifier(), 1); + assertEquals(pngChunkScal.getUnitsPerPixelXAxis(), 0.01, delta); + assertEquals(pngChunkScal.getUnitsPerPixelYAxis(), 0.02, delta); } @Test @@ -66,8 +66,8 @@ public class PngChunkScalTest { final PngChunkScal pngChunkScal = new PngChunkScal(10, chunkType, 0, new byte[]{2, 48, 46, 48, 49, 0, 48, 46, 48, 50}); - assertEquals(pngChunkScal.unitSpecifier, 2); - assertEquals(pngChunkScal.unitsPerPixelXAxis, 0.01, delta); - assertEquals(pngChunkScal.unitsPerPixelYAxis, 0.02, delta); + assertEquals(pngChunkScal.getUnitSpecifier(), 2); + assertEquals(pngChunkScal.getUnitsPerPixelXAxis(), 0.01, delta); + assertEquals(pngChunkScal.getUnitsPerPixelYAxis(), 0.02, delta); } }