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 bed82950e570c4723f8015e1d635e67bf5053a7b Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sat Dec 23 15:18:30 2023 -0500 Refactor constant - Make defensive copies of arrays - Format tweaks --- .../org/apache/commons/imaging/ImageFormats.java | 29 +++++++++++++++++++--- .../imaging/formats/pnm/PnmImageParser.java | 29 ++++++++++++++++------ 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/ImageFormats.java b/src/main/java/org/apache/commons/imaging/ImageFormats.java index dbe462ba..6fa3beb0 100644 --- a/src/main/java/org/apache/commons/imaging/ImageFormats.java +++ b/src/main/java/org/apache/commons/imaging/ImageFormats.java @@ -17,12 +17,35 @@ package org.apache.commons.imaging; /** - * Enum of known image formats. + * Enumerates known image formats. */ public enum ImageFormats implements ImageFormat { - UNKNOWN(), BMP("bmp", "dib"), DCX("dcx"), GIF("gif"), ICNS("icns"), ICO("ico"), JBIG2(), JPEG("jpg", "jpeg"), PAM("pam"), PSD("psd"), PBM("pbm"), - PGM("pgm"), PNM("pnm"), PPM("ppm"), PCX("pcx", "pcc"), PNG("png"), RGBE("hdr", "pic"), TGA(), TIFF("tif", "tiff"), WBMP("wbmp"), WEBP("webp"), XBM("xbm"), + + // @formatter:off + UNKNOWN(), + BMP("bmp", "dib"), + DCX("dcx"), + GIF("gif"), + ICNS("icns"), + ICO("ico"), + JBIG2(), + JPEG("jpg", "jpeg"), + PAM("pam"), + PSD("psd"), + PBM("pbm"), + PGM("pgm"), + PNM("pnm"), + PPM("ppm"), + PCX("pcx", "pcc"), + PNG("png"), + RGBE("hdr", "pic"), + TGA(), + TIFF("tif", "tiff"), + WBMP("wbmp"), + WEBP("webp"), + XBM("xbm"), XPM("xpm"); + // @formatter:on private final String[] extensions; diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java index b40c116e..c3aaa235 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImageParser.java @@ -28,6 +28,7 @@ import java.nio.ByteOrder; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; +import java.util.stream.Stream; import org.apache.commons.imaging.AbstractImageParser; import org.apache.commons.imaging.ImageFormat; @@ -41,10 +42,23 @@ import org.apache.commons.imaging.palette.PaletteFactory; public class PnmImageParser extends AbstractImageParser<PnmImagingParameters> { + private static final int DPI = 72; + private static final ImageFormat[] IMAGE_FORMATS; private static final String DEFAULT_EXTENSION = ImageFormats.PNM.getDefaultExtension(); - private static final String[] ACCEPTED_EXTENSIONS = { ImageFormats.PAM.getDefaultExtension(), ImageFormats.PBM.getDefaultExtension(), - ImageFormats.PGM.getDefaultExtension(), ImageFormats.PNM.getDefaultExtension(), ImageFormats.PPM.getDefaultExtension() }; - + private static final String[] ACCEPTED_EXTENSIONS; + + static { + IMAGE_FORMATS = new ImageFormat[] { + // @formatter:off + ImageFormats.PAM, + ImageFormats.PBM, + ImageFormats.PGM, + ImageFormats.PNM, + ImageFormats.PPM + // @formatter:on + }; + ACCEPTED_EXTENSIONS = Stream.of(IMAGE_FORMATS).map(ImageFormat::getDefaultExtension).toArray(String[]::new); + } public PnmImageParser() { super(ByteOrder.LITTLE_ENDIAN); } @@ -67,12 +81,12 @@ public class PnmImageParser extends AbstractImageParser<PnmImagingParameters> { @Override protected String[] getAcceptedExtensions() { - return ACCEPTED_EXTENSIONS; + return ACCEPTED_EXTENSIONS.clone(); } @Override protected ImageFormat[] getAcceptedTypes() { - return new ImageFormat[] { ImageFormats.PBM, ImageFormats.PGM, ImageFormats.PPM, ImageFormats.PNM, ImageFormats.PAM }; + return IMAGE_FORMATS.clone(); } @Override @@ -121,9 +135,9 @@ public class PnmImageParser extends AbstractImageParser<PnmImagingParameters> { // boolean progressive = (fPNGChunkIHDR.InterlaceMethod != 0); // - final int physicalWidthDpi = 72; + final int physicalWidthDpi = DPI; final float physicalWidthInch = (float) ((double) info.width / (double) physicalWidthDpi); - final int physicalHeightDpi = 72; + final int physicalHeightDpi = DPI; final float physicalHeightInch = (float) ((double) info.height / (double) physicalHeightDpi); final String formatDetails = info.getImageTypeDescription(); @@ -141,7 +155,6 @@ public class PnmImageParser extends AbstractImageParser<PnmImagingParameters> { @Override public Dimension getImageSize(final ByteSource byteSource, final PnmImagingParameters params) throws ImagingException, IOException { final AbstractFileInfo info = readHeader(byteSource); - return new Dimension(info.width, info.height); }