This is an automated email from the ASF dual-hosted git repository. kinow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-imaging.git
commit 4785f108f15e6e71dda0781557ba4170c466b05d Author: Bruno P. Kinoshita <ki...@apache.org> AuthorDate: Sat Jul 17 17:30:50 2021 +1200 [IMAGING-159] @darkma773r feedback, making the image format of a parameter instance immutable --- .../org/apache/commons/imaging/ImageFormats.java | 3 +-- .../java/org/apache/commons/imaging/Imaging.java | 2 +- .../apache/commons/imaging/ImagingParameters.java | 29 +++++++++++----------- .../imaging/common/XmpImagingParameters.java | 5 ++++ .../imaging/formats/bmp/BmpImagingParameters.java | 2 +- .../imaging/formats/gif/GifImagingParameters.java | 2 +- .../formats/icns/IcnsImagingParameters.java | 2 +- .../imaging/formats/ico/IcoImagingParameters.java | 2 +- .../formats/jpeg/JpegImagingParameters.java | 2 +- .../formats/jpeg/iptc/JpegIptcRewriter.java | 4 +-- .../imaging/formats/pcx/PcxImagingParameters.java | 2 +- .../imaging/formats/png/PngImagingParameters.java | 2 +- .../imaging/formats/pnm/PnmImagingParameters.java | 2 +- .../imaging/formats/psd/PsdImagingParameters.java | 2 +- .../formats/rgbe/RgbeImagingParameters.java | 2 +- .../formats/tiff/TiffImagingParameters.java | 7 +++++- .../formats/wbmp/WbmpImagingParameters.java | 2 +- .../imaging/formats/xbm/XbmImagingParameters.java | 2 +- .../imaging/formats/xpm/XpmImagingParameters.java | 2 +- .../commons/imaging/examples/ImageReadExample.java | 19 ++++++-------- .../imaging/roundtrip/PixelDensityRoundtrip.java | 17 ++++++------- .../commons/imaging/roundtrip/RoundtripBase.java | 1 - 22 files changed, 58 insertions(+), 55 deletions(-) diff --git a/src/main/java/org/apache/commons/imaging/ImageFormats.java b/src/main/java/org/apache/commons/imaging/ImageFormats.java index 2e10101..c3d200d 100644 --- a/src/main/java/org/apache/commons/imaging/ImageFormats.java +++ b/src/main/java/org/apache/commons/imaging/ImageFormats.java @@ -98,9 +98,8 @@ public enum ImageFormats implements ImageFormat { parameters = (ImagingParameters) ctor.newInstance(); } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { LOGGER.log(Level.WARNING, "Failed to create imaging parameters: " + e.getMessage(), e); - parameters = new ImagingParameters(); + parameters = new ImagingParameters(this); } - parameters.setImageFormat(this); } return parameters; } diff --git a/src/main/java/org/apache/commons/imaging/Imaging.java b/src/main/java/org/apache/commons/imaging/Imaging.java index 5f0bb05..1ae01a5 100644 --- a/src/main/java/org/apache/commons/imaging/Imaging.java +++ b/src/main/java/org/apache/commons/imaging/Imaging.java @@ -957,7 +957,7 @@ public final class Imaging { */ public static String getXmpXml(final File file) throws ImageReadException, IOException { - return getXmpXml(file, new XmpImagingParameters()); + return getXmpXml(file, new XmpImagingParameters(Imaging.guessFormat(file))); } /** diff --git a/src/main/java/org/apache/commons/imaging/ImagingParameters.java b/src/main/java/org/apache/commons/imaging/ImagingParameters.java index 93e41d1..c3c130e 100644 --- a/src/main/java/org/apache/commons/imaging/ImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/ImagingParameters.java @@ -29,6 +29,17 @@ import org.apache.commons.imaging.common.BufferedImageFactory; public class ImagingParameters { /** + * Image format used in write operations to indicate desired image format. + * Default is {@code null}. + * + * <p>Valid values: Any format defined in ImageFormat, such as + * ImageFormat.IMAGE_FORMAT_PNG.</p> + * + * @see org.apache.commons.imaging.ImageFormats + */ + private final ImageFormat imageFormat; + + /** * Whether to throw an exception when any issue occurs during reading * or writing a file format. Default is {@code false}. */ @@ -47,17 +58,6 @@ public class ImagingParameters { private BufferedImageFactory bufferedImageFactory = null; /** - * Image format used in write operations to indicate desired image format. - * Default is {@code null}. - * - * <p>Valid values: Any format defined in ImageFormat, such as - * ImageFormat.IMAGE_FORMAT_PNG.</p> - * - * @see org.apache.commons.imaging.ImageFormats - */ - private ImageFormat imageFormat; - - /** * <p>Parameter key. Used in write operations to indicate the desired pixel * density (DPI), and/or aspect ratio.</p> */ @@ -93,10 +93,6 @@ public class ImagingParameters { return imageFormat; } - public void setImageFormat(ImageFormat imageFormat) { - this.imageFormat = imageFormat; - } - public PixelDensity getPixelDensity() { return pixelDensity; } @@ -105,4 +101,7 @@ public class ImagingParameters { this.pixelDensity = pixelDensity; } + protected ImagingParameters(final ImageFormat imageFormat) { + this.imageFormat = imageFormat; + } } diff --git a/src/main/java/org/apache/commons/imaging/common/XmpImagingParameters.java b/src/main/java/org/apache/commons/imaging/common/XmpImagingParameters.java index 3352274..597d5d4 100644 --- a/src/main/java/org/apache/commons/imaging/common/XmpImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/common/XmpImagingParameters.java @@ -17,6 +17,7 @@ package org.apache.commons.imaging.common; +import org.apache.commons.imaging.ImageFormat; import org.apache.commons.imaging.ImagingParameters; /** @@ -25,6 +26,10 @@ import org.apache.commons.imaging.ImagingParameters; */ public class XmpImagingParameters extends ImagingParameters { + public XmpImagingParameters(ImageFormat imageFormat) { + super(imageFormat); + } + private String xmpXml; public String getXmpXml() { diff --git a/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java index cf19e8e..9a523df 100644 --- a/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/bmp/BmpImagingParameters.java @@ -27,6 +27,6 @@ import org.apache.commons.imaging.ImagingParameters; public class BmpImagingParameters extends ImagingParameters { public BmpImagingParameters() { - setImageFormat(ImageFormats.BMP); + super(ImageFormats.BMP); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java index fa8007c..68bfdab 100644 --- a/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/gif/GifImagingParameters.java @@ -27,6 +27,6 @@ import org.apache.commons.imaging.common.XmpImagingParameters; public class GifImagingParameters extends XmpImagingParameters { public GifImagingParameters() { - setImageFormat(ImageFormats.GIF); + super(ImageFormats.GIF); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java index 1d83839..568c030 100644 --- a/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/icns/IcnsImagingParameters.java @@ -25,6 +25,6 @@ import org.apache.commons.imaging.ImagingParameters; public class IcnsImagingParameters extends ImagingParameters { public IcnsImagingParameters() { - setImageFormat(ImageFormats.ICNS); + super(ImageFormats.ICNS); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java index ed86d9c..4c9bebc 100644 --- a/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/ico/IcoImagingParameters.java @@ -25,6 +25,6 @@ import org.apache.commons.imaging.ImagingParameters; public class IcoImagingParameters extends ImagingParameters { public IcoImagingParameters () { - setImageFormat(ImageFormats.ICO); + super(ImageFormats.ICO); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java index fff58f3..549aa61 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImagingParameters.java @@ -25,6 +25,6 @@ import org.apache.commons.imaging.formats.tiff.TiffImagingParameters; public class JpegImagingParameters extends TiffImagingParameters { public JpegImagingParameters() { - setImageFormat(ImageFormats.JPEG); + super(ImageFormats.JPEG); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.java b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.java index f5639d9..90703a9 100644 --- a/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.java +++ b/src/main/java/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.java @@ -27,12 +27,12 @@ import java.util.List; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.ImageWriteException; import org.apache.commons.imaging.ImagingConstants; -import org.apache.commons.imaging.ImagingParameters; import org.apache.commons.imaging.common.bytesource.ByteSource; import org.apache.commons.imaging.common.bytesource.ByteSourceArray; import org.apache.commons.imaging.common.bytesource.ByteSourceFile; import org.apache.commons.imaging.common.bytesource.ByteSourceInputStream; import org.apache.commons.imaging.formats.jpeg.JpegConstants; +import org.apache.commons.imaging.formats.jpeg.JpegImagingParameters; import org.apache.commons.imaging.formats.jpeg.xmp.JpegRewriter; /** @@ -233,7 +233,7 @@ public class JpegIptcRewriter extends JpegRewriter { final List<JFIFPiece> newPieces = removePhotoshopApp13Segments(oldPieces); if (!removeSegment && photoshopApp13Segments.size() == 1) { final JFIFPieceSegment oldSegment = (JFIFPieceSegment) photoshopApp13Segments.get(0); - final ImagingParameters params = new ImagingParameters(); + final JpegImagingParameters params = new JpegImagingParameters(); final PhotoshopApp13Data oldData = new IptcParser().parsePhotoshopSegment(oldSegment.getSegmentData(), params); final List<IptcBlock> newBlocks = oldData.getNonIptcBlocks(); final List<IptcRecord> newRecords = new ArrayList<>(); diff --git a/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java index ed19523..76f8bc5 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/pcx/PcxImagingParameters.java @@ -29,7 +29,7 @@ public class PcxImagingParameters extends ImagingParameters { private int compression = PcxConstants.PCX_COMPRESSION_UNCOMPRESSED; public PcxImagingParameters() { - setImageFormat(ImageFormats.PCX); + super(ImageFormats.PCX); } public int getPlanes() { diff --git a/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java index 88ac49b..f267813 100644 --- a/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/png/PngImagingParameters.java @@ -55,7 +55,7 @@ public class PngImagingParameters extends XmpImagingParameters { private List<? extends PngText> textChunks = null; public PngImagingParameters() { - setImageFormat(ImageFormats.PNG); + super(ImageFormats.PNG); } public byte getBitDepth() { diff --git a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java index 927855e..2b06526 100644 --- a/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/pnm/PnmImagingParameters.java @@ -32,7 +32,7 @@ public class PnmImagingParameters extends ImagingParameters { private ImageFormats subtype = null; public PnmImagingParameters() { - setImageFormat(ImageFormats.PNM); + super(ImageFormats.PNM); } public boolean isRawBits() { diff --git a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java index 761892a..3ba9306 100644 --- a/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/psd/PsdImagingParameters.java @@ -27,6 +27,6 @@ import org.apache.commons.imaging.ImagingParameters; public class PsdImagingParameters extends ImagingParameters { public PsdImagingParameters() { - setImageFormat(ImageFormats.PSD); + super(ImageFormats.PSD); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java index 3575820..c40ed47 100644 --- a/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/rgbe/RgbeImagingParameters.java @@ -25,6 +25,6 @@ import org.apache.commons.imaging.ImagingParameters; public class RgbeImagingParameters extends ImagingParameters { public RgbeImagingParameters() { - setImageFormat(ImageFormats.RGBE); + super(ImageFormats.RGBE); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java index 4c13726..e0ecb1a 100644 --- a/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/tiff/TiffImagingParameters.java @@ -15,6 +15,7 @@ package org.apache.commons.imaging.formats.tiff; +import org.apache.commons.imaging.ImageFormat; import org.apache.commons.imaging.ImageFormats; import org.apache.commons.imaging.common.XmpImagingParameters; import org.apache.commons.imaging.formats.tiff.photometricinterpreters.PhotometricInterpreter; @@ -100,7 +101,11 @@ public class TiffImagingParameters extends XmpImagingParameters { private Integer t6Options = null; public TiffImagingParameters() { - setImageFormat(ImageFormats.TIFF); + super(ImageFormats.TIFF); + } + + public TiffImagingParameters(ImageFormat imageFormat) { + super(imageFormat); } public boolean isReadThumbnails() { diff --git a/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java index d48c463..4876028 100644 --- a/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/wbmp/WbmpImagingParameters.java @@ -25,6 +25,6 @@ import org.apache.commons.imaging.ImagingParameters; public class WbmpImagingParameters extends ImagingParameters { public WbmpImagingParameters() { - setImageFormat(ImageFormats.WBMP); + super(ImageFormats.WBMP); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java index dd96268..7128b3c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/xbm/XbmImagingParameters.java @@ -25,6 +25,6 @@ import org.apache.commons.imaging.ImagingParameters; public class XbmImagingParameters extends ImagingParameters { public XbmImagingParameters() { - setImageFormat(ImageFormats.XBM); + super(ImageFormats.XBM); } } diff --git a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java index f47c83c..6f4ed4c 100644 --- a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java +++ b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImagingParameters.java @@ -24,7 +24,7 @@ import org.apache.commons.imaging.ImagingParameters; public class XpmImagingParameters extends ImagingParameters { public XpmImagingParameters() { - setImageFormat(ImageFormats.XPM); + super(ImageFormats.XPM); } } diff --git a/src/test/java/org/apache/commons/imaging/examples/ImageReadExample.java b/src/test/java/org/apache/commons/imaging/examples/ImageReadExample.java index 3307ca7..d823367 100644 --- a/src/test/java/org/apache/commons/imaging/examples/ImageReadExample.java +++ b/src/test/java/org/apache/commons/imaging/examples/ImageReadExample.java @@ -16,30 +16,27 @@ */ package org.apache.commons.imaging.examples; -import java.awt.GraphicsConfiguration; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; -import java.awt.Transparency; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; - import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.Imaging; -import org.apache.commons.imaging.ImagingParameters; import org.apache.commons.imaging.common.BufferedImageFactory; +import org.apache.commons.imaging.formats.tiff.TiffImagingParameters; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; public class ImageReadExample { public static BufferedImage imageReadExample(final File file) throws ImageReadException, IOException { - final ImagingParameters params = new ImagingParameters(); + final TiffImagingParameters params = new TiffImagingParameters(); // set optional parameters if you like params.setBufferedImageFactory(new ManagedImageBufferedImageFactory()); // params.setStrict(Boolean.TRUE); - // read and return the image + // read and return the TIFF image return Imaging.getBufferedImage(file, params); } diff --git a/src/test/java/org/apache/commons/imaging/roundtrip/PixelDensityRoundtrip.java b/src/test/java/org/apache/commons/imaging/roundtrip/PixelDensityRoundtrip.java index aa4e14e..517c7bf 100644 --- a/src/test/java/org/apache/commons/imaging/roundtrip/PixelDensityRoundtrip.java +++ b/src/test/java/org/apache/commons/imaging/roundtrip/PixelDensityRoundtrip.java @@ -17,19 +17,19 @@ package org.apache.commons.imaging.roundtrip; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.awt.image.BufferedImage; -import java.io.File; -import java.util.stream.Stream; - import org.apache.commons.imaging.ImageInfo; import org.apache.commons.imaging.Imaging; -import org.apache.commons.imaging.ImagingParameters; import org.apache.commons.imaging.PixelDensity; +import org.apache.commons.imaging.formats.tiff.TiffImagingParameters; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import java.awt.image.BufferedImage; +import java.io.File; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + public class PixelDensityRoundtrip extends RoundtripBase { public static Stream<FormatInfo> testPixelDensityRoundtrip() { @@ -44,8 +44,7 @@ public class PixelDensityRoundtrip extends RoundtripBase { final File temp1 = File.createTempFile("pixeldensity.", "." + formatInfo.format.getDefaultExtension()); - final ImagingParameters params = new ImagingParameters(); - params.setImageFormat(formatInfo.format); + final TiffImagingParameters params = new TiffImagingParameters(); final PixelDensity pixelDensity = PixelDensity.createFromPixelsPerInch(75, 150); params.setPixelDensity(pixelDensity); Imaging.writeImage(testImage, temp1, formatInfo.format, params); diff --git a/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java b/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java index ec782b3..0b6b546 100644 --- a/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java +++ b/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java @@ -41,7 +41,6 @@ public class RoundtripBase { Debug.debug("tempFile: " + temp1.getName()); final ImagingParameters params = formatInfo.format.createImagingParameters(); - params.setImageFormat(formatInfo.format); Imaging.writeImage(testImage, temp1, formatInfo.format, params); final ImagingParameters readParams = formatInfo.format.createImagingParameters();