You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ki...@apache.org on 2022/01/16 02:03:12 UTC
[commons-imaging] 12/24: [IMAGING-159] @darkma773r feedback, making the image format of a parameter instance immutable
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();