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 95e7a328e628b6085840583801942324cc76612a Author: Gary Gregory <[email protected]> AuthorDate: Sun May 14 10:11:00 2023 -0400 Simpler parser construction No need to duplicate specifying the default byte order. --- .../org/apache/commons/imaging/ImageParser.java | 9 ++++++++ .../commons/imaging/common/BinaryFileParser.java | 2 +- .../imaging/formats/bmp/BmpImageParser.java | 2 +- .../imaging/formats/dcx/DcxImageParser.java | 2 +- .../imaging/formats/gif/GifImageParser.java | 2 +- .../imaging/formats/icns/IcnsImageParser.java | 5 ----- .../imaging/formats/ico/IcoImageParser.java | 2 +- .../imaging/formats/jpeg/JpegImageParser.java | 5 ----- .../commons/imaging/formats/jpeg/JpegUtils.java | 2 +- .../imaging/formats/jpeg/exif/ExifRewriter.java | 2 +- .../imaging/formats/jpeg/iptc/IptcParser.java | 2 +- .../imaging/formats/jpeg/xmp/JpegRewriter.java | 2 +- .../imaging/formats/jpeg/xmp/JpegXmpParser.java | 2 +- .../imaging/formats/pcx/PcxImageParser.java | 2 +- .../imaging/formats/pnm/PnmImageParser.java | 3 ++- .../imaging/formats/psd/PsdImageParser.java | 5 ----- .../imaging/formats/rgbe/RgbeImageParser.java | 5 ----- .../imaging/formats/tiff/TiffImageParser.java | 1 + .../imaging/formats/wbmp/WbmpImageParser.java | 1 + .../imaging/formats/xbm/XbmImageParser.java | 9 ++++---- .../imaging/formats/xpm/XpmImageParser.java | 25 +++++++++++----------- .../commons/imaging/icc/IccProfileParser.java | 2 +- 22 files changed, 43 insertions(+), 49 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/ImageParser.java b/src/main/java/org/apache/commons/imaging/ImageParser.java index 1ae7beac..48028ed5 100644 --- a/src/main/java/org/apache/commons/imaging/ImageParser.java +++ b/src/main/java/org/apache/commons/imaging/ImageParser.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringWriter; +import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -121,6 +122,14 @@ public abstract class ImageParser<T extends ImagingParameters<T>> extends Binary ); } + public ImageParser() { + // defaults to big endian + } + + public ImageParser(ByteOrder byteOrder) { + super(byteOrder); + } + /** * Indicates whether the ImageParser implementation can accept * the specified file based on its extension. diff --git a/src/main/java/org/apache/commons/imaging/common/BinaryFileParser.java b/src/main/java/org/apache/commons/imaging/common/BinaryFileParser.java index e23f991f..007ad25a 100644 --- a/src/main/java/org/apache/commons/imaging/common/BinaryFileParser.java +++ b/src/main/java/org/apache/commons/imaging/common/BinaryFileParser.java @@ -28,7 +28,7 @@ public class BinaryFileParser { private static final Logger LOGGER = Logger.getLogger(BinaryFileParser.class.getName()); /** - * Default ByteOrder for parsers. + * The default {@link ByteOrder} for parsers is {@link ByteOrder#BIG_ENDIAN}. */ private ByteOrder byteOrder = ByteOrder.BIG_ENDIAN; diff --git a/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImageParser.java b/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImageParser.java index 82df3632..c49b7c82 100644 --- a/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImageParser.java @@ -64,7 +64,7 @@ public class BmpImageParser extends ImageParser<BmpImagingParameters> { private static final int BITMAP_INFO_HEADER_SIZE = 40; public BmpImageParser() { - super.setByteOrder(ByteOrder.LITTLE_ENDIAN); + super(ByteOrder.LITTLE_ENDIAN); } @Override diff --git a/src/main/java/org/apache/commons/imaging/formats/dcx/DcxImageParser.java b/src/main/java/org/apache/commons/imaging/formats/dcx/DcxImageParser.java index 532fd5e3..ad1c317c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/dcx/DcxImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/dcx/DcxImageParser.java @@ -67,7 +67,7 @@ public class DcxImageParser extends ImageParser<PcxImagingParameters> { private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.DCX.getExtensions(); public DcxImageParser() { - super.setByteOrder(ByteOrder.LITTLE_ENDIAN); + super(ByteOrder.LITTLE_ENDIAN); } @Override diff --git a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java index 30ee7bc8..7d40354a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/gif/GifImageParser.java @@ -114,7 +114,7 @@ public class GifImageParser extends ImageParser<GifImagingParameters> implements } public GifImageParser() { - super.setByteOrder(ByteOrder.LITTLE_ENDIAN); + super(ByteOrder.LITTLE_ENDIAN); } private int convertColorTableSize(final int tableSize) { diff --git a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImageParser.java b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImageParser.java index 227615eb..920f6329 100644 --- a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImageParser.java @@ -25,7 +25,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; -import java.nio.ByteOrder; import java.util.ArrayList; import java.util.List; @@ -100,10 +99,6 @@ public class IcnsImageParser extends ImageParser<IcnsImagingParameters> { private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.ICNS.getExtensions(); - public IcnsImageParser() { - super.setByteOrder(ByteOrder.BIG_ENDIAN); - } - @Override public boolean dumpImageFile(final PrintWriter pw, final ByteSource byteSource) throws ImageReadException, IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/ico/IcoImageParser.java b/src/main/java/org/apache/commons/imaging/formats/ico/IcoImageParser.java index fef55082..3e469d50 100644 --- a/src/main/java/org/apache/commons/imaging/formats/ico/IcoImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/ico/IcoImageParser.java @@ -234,7 +234,7 @@ public class IcoImageParser extends ImageParser<IcoImagingParameters> { private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.ICO.getExtensions(); public IcoImageParser() { - super.setByteOrder(ByteOrder.LITTLE_ENDIAN); + super(ByteOrder.LITTLE_ENDIAN); } @Override diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java index 0b2c4a6d..08a897f8 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageParser.java @@ -23,7 +23,6 @@ import java.awt.Dimension; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; -import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.text.NumberFormat; import java.util.ArrayList; @@ -74,10 +73,6 @@ public class JpegImageParser extends ImageParser<JpegImagingParameters> implemen return startsWith(segment.getSegmentData(), JpegConstants.EXIF_IDENTIFIER_CODE); } - public JpegImageParser() { - setByteOrder(ByteOrder.BIG_ENDIAN); - } - private byte[] assembleSegments(final List<App2Segment> segments) throws ImageReadException { try { return assembleSegments(segments, false); diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegUtils.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegUtils.java index 19a0e2a2..d7f4f3f7 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegUtils.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegUtils.java @@ -123,7 +123,7 @@ public class JpegUtils extends BinaryFileParser { } public JpegUtils() { - setByteOrder(ByteOrder.BIG_ENDIAN); + super(ByteOrder.BIG_ENDIAN); } public void dumpJFIF(final ByteSource byteSource) throws ImageReadException, diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java index ee76448d..16132d1d 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.java @@ -139,7 +139,7 @@ public class ExifRewriter extends BinaryFileParser { * byte order of EXIF segment. */ public ExifRewriter(final ByteOrder byteOrder) { - setByteOrder(byteOrder); + super(byteOrder); } private JFIFPieces analyzeJFIF(final ByteSource byteSource) throws ImageReadException, IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java index 3bbc16f3..2ec6355a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcParser.java @@ -72,7 +72,7 @@ public class IptcParser extends BinaryFileParser { private static final byte[] CHARACTER_ESCAPE_SEQUENCE = {'\u001B', '%', 'G'}; public IptcParser() { - setByteOrder(ByteOrder.BIG_ENDIAN); + super(ByteOrder.BIG_ENDIAN); } private Charset findCharset(final byte[] codedCharset) { diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegRewriter.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegRewriter.java index afc4df1c..419d3a02 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegRewriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegRewriter.java @@ -175,7 +175,7 @@ public class JpegRewriter extends BinaryFileParser { * extension. */ public JpegRewriter() { - setByteOrder(JPEG_BYTE_ORDER); + super(JPEG_BYTE_ORDER); } protected JFIFPieces analyzeJFIF(final ByteSource byteSource) throws ImageReadException, IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java index 38e2d471..bad2ec34 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpParser.java @@ -28,7 +28,7 @@ import org.apache.commons.imaging.formats.jpeg.JpegConstants; public class JpegXmpParser extends BinaryFileParser { public JpegXmpParser() { - setByteOrder(ByteOrder.BIG_ENDIAN); + super(ByteOrder.BIG_ENDIAN); } public boolean isXmpJpegSegment(final byte[] segmentData) { diff --git a/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImageParser.java b/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImageParser.java index 6c8f81a7..3d12714f 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImageParser.java @@ -158,7 +158,7 @@ public class PcxImageParser extends ImageParser<PcxImagingParameters> { private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.PCX.getExtensions(); public PcxImageParser() { - super.setByteOrder(ByteOrder.LITTLE_ENDIAN); + super(ByteOrder.LITTLE_ENDIAN); } @Override 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 6b023caa..9cb164d5 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 @@ -41,6 +41,7 @@ import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.palette.PaletteFactory; public class PnmImageParser extends ImageParser<PnmImagingParameters> { + private static final String DEFAULT_EXTENSION = ImageFormats.PNM.getDefaultExtension(); private static final String[] ACCEPTED_EXTENSIONS = { ImageFormats.PAM.getDefaultExtension(), @@ -51,7 +52,7 @@ public class PnmImageParser extends ImageParser<PnmImagingParameters> { }; public PnmImageParser() { - super.setByteOrder(ByteOrder.LITTLE_ENDIAN); + super(ByteOrder.LITTLE_ENDIAN); } @Override diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java index 69ee873e..7e80d574 100644 --- a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImageParser.java @@ -29,7 +29,6 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; -import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -69,10 +68,6 @@ public class PsdImageParser extends ImageParser<PsdImagingParameters> implements public static final int IMAGE_RESOURCE_ID_XMP = 0x0424; public static final String BLOCK_NAME_XMP = "XMP"; - public PsdImageParser() { - super.setByteOrder(ByteOrder.BIG_ENDIAN); - } - @Override public boolean dumpImageFile(final PrintWriter pw, final ByteSource byteSource) throws ImageReadException, IOException { diff --git a/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImageParser.java b/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImageParser.java index 99791719..fdfd7199 100644 --- a/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImageParser.java @@ -27,7 +27,6 @@ import java.awt.image.DataBuffer; import java.awt.image.DataBufferFloat; import java.awt.image.Raster; import java.io.IOException; -import java.nio.ByteOrder; import java.util.ArrayList; import org.apache.commons.imaging.ImageFormat; @@ -43,10 +42,6 @@ import org.apache.commons.imaging.common.bytesource.ByteSource; */ public class RgbeImageParser extends ImageParser<RgbeImagingParameters> { - public RgbeImageParser() { - setByteOrder(ByteOrder.BIG_ENDIAN); - } - @Override protected String[] getAcceptedExtensions() { return ImageFormats.RGBE.getExtensions(); diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java index 7dea294a..6fdf7ff7 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageParser.java @@ -65,6 +65,7 @@ import org.apache.commons.imaging.formats.tiff.photometricinterpreters.Photometr import org.apache.commons.imaging.formats.tiff.write.TiffImageWriterLossy; public class TiffImageParser extends ImageParser<TiffImagingParameters> implements XmpEmbeddable<TiffImagingParameters> { + private static final String DEFAULT_EXTENSION = ImageFormats.TIFF.getDefaultExtension(); private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.TIFF.getExtensions(); diff --git a/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImageParser.java b/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImageParser.java index b7c098c5..9fcbe858 100644 --- a/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImageParser.java @@ -41,6 +41,7 @@ import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.bytesource.ByteSource; public class WbmpImageParser extends ImageParser<WbmpImagingParameters> { + static class WbmpHeader { final int typeField; final byte fixHeaderField; diff --git a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java index 2f0a9203..2b68415c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImageParser.java @@ -48,9 +48,10 @@ import org.apache.commons.imaging.common.ImageMetadata; import org.apache.commons.imaging.common.bytesource.ByteSource; public class XbmImageParser extends ImageParser<XbmImagingParameters> { + private static class XbmHeader { - final int width; final int height; + final int width; int xHot = -1; int yHot = -1; @@ -71,15 +72,15 @@ public class XbmImageParser extends ImageParser<XbmImagingParameters> { } } } + private static class XbmParseResult { - XbmHeader xbmHeader; BasicCParser cParser; + XbmHeader xbmHeader; } + private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.XBM.getExtensions(); private static final String DEFAULT_EXTENSION = ImageFormats.XBM.getDefaultExtension(); - private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.XBM.getExtensions(); - private static int parseCIntegerLiteral(final String value) { if (value.startsWith("0")) { if (value.length() >= 2) { diff --git a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java index cec09f22..3e935e3f 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java +++ b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java @@ -53,15 +53,16 @@ import org.apache.commons.imaging.palette.PaletteFactory; import org.apache.commons.imaging.palette.SimplePalette; public class XpmImageParser extends ImageParser<XpmImagingParameters> { + private static class PaletteEntry { - int index; - boolean haveColor = false; int colorArgb; - boolean haveGray = false; + int gray4LevelArgb; int grayArgb; + boolean haveColor = false; + boolean haveGray = false; boolean haveGray4Level = false; - int gray4LevelArgb; boolean haveMono = false; + int index; int monoArgb; int getBestARGB() { @@ -80,16 +81,17 @@ public class XpmImageParser extends ImageParser<XpmImagingParameters> { return 0x00000000; } } + private static class XpmHeader { - final int width; final int height; - final int numColors; final int numCharsPerPixel; + final int numColors; + final Map<Object, PaletteEntry> palette = new HashMap<>(); + final int width; int xHotSpot = -1; - int yHotSpot = -1; final boolean xpmExt; - final Map<Object, PaletteEntry> palette = new HashMap<>(); + int yHotSpot = -1; XpmHeader(final int width, final int height, final int numColors, final int numCharsPerPixel, final int xHotSpot, final int yHotSpot, final boolean xpmExt) { @@ -116,15 +118,14 @@ public class XpmImageParser extends ImageParser<XpmImagingParameters> { } } private static class XpmParseResult { - XpmHeader xpmHeader; BasicCParser cParser; + XpmHeader xpmHeader; } - private static final String DEFAULT_EXTENSION = ImageFormats.XPM.getDefaultExtension(); - private static final String[] ACCEPTED_EXTENSIONS = ImageFormats.XPM.getExtensions(); - private static Map<String, Integer> colorNames; + private static final String DEFAULT_EXTENSION = ImageFormats.XPM.getDefaultExtension(); + private static final char[] WRITE_PALETTE = { ' ', '.', 'X', 'o', 'O', '+', '@', '#', '$', '%', '&', '*', '=', '-', ';', ':', '>', ',', '<', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'q', 'w', 'e', diff --git a/src/main/java/org/apache/commons/imaging/icc/IccProfileParser.java b/src/main/java/org/apache/commons/imaging/icc/IccProfileParser.java index 559aea3e..3f2f8447 100644 --- a/src/main/java/org/apache/commons/imaging/icc/IccProfileParser.java +++ b/src/main/java/org/apache/commons/imaging/icc/IccProfileParser.java @@ -39,7 +39,7 @@ public class IccProfileParser extends BinaryFileParser { private static final Logger LOGGER = Logger.getLogger(IccProfileParser.class.getName()); public IccProfileParser() { - this.setByteOrder(ByteOrder.BIG_ENDIAN); + super(ByteOrder.BIG_ENDIAN); } public IccProfileInfo getICCProfileInfo(final byte[] bytes) {
