Repository: ant Updated Branches: refs/heads/master 39e5e40e3 -> e208ad936
Change an attribute name and explain why Project: http://git-wip-us.apache.org/repos/asf/ant/repo Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/570ca183 Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/570ca183 Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/570ca183 Branch: refs/heads/master Commit: 570ca18375c7562948c35d1c04a96e17aef25ebd Parents: 39e5e40 Author: Gintas Grigelionis <[email protected]> Authored: Wed Nov 14 22:30:18 2018 +0100 Committer: Gintas Grigelionis <[email protected]> Committed: Wed Nov 14 22:30:18 2018 +0100 ---------------------------------------------------------------------- manual/Tasks/imageio.html | 11 +++-- .../taskdefs/optional/image/ImageIOTask.java | 49 ++++++++++++++------ 2 files changed, 44 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ant/blob/570ca183/manual/Tasks/imageio.html ---------------------------------------------------------------------- diff --git a/manual/Tasks/imageio.html b/manual/Tasks/imageio.html index cce503c..65d6815 100644 --- a/manual/Tasks/imageio.html +++ b/manual/Tasks/imageio.html @@ -29,7 +29,12 @@ <p>Applies a chain of image operations on a set of files.</p> <p>Uses AWT and ImageIO; replaces <a href="image.html">image</a> task for Java 9+. The task can be used with Java 8 as well, see parameter table for limitations.</p> - +<p><strong>Note</strong>: this task tries to stay as close as possible to syntax and semantics +of <code>image</code> task. However, it uses <var>format</var> attribute rather +than <var>encoding</var> attribute, because the latter is a misnomer: almost all tasks use similar +attributes for character encodings in files, file names or other strings. Also, +when <var>format</var> is not specified, its value is defined by the format of the first processed +image file.</p> <h5>Overview of used datatypes</h5> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" @@ -390,12 +395,12 @@ used with Java 8 as well, see parameter table for limitations.</p> <td>Yes, unless nested fileset is used</td> </tr> <tr> - <td>encoding</td> + <td>format</td> <td>Image format.<br/>Valid (case insensitive) are: <q>bmp</q>, <q>gif</q>, <q>jpeg</q>, <q>jpg</q>, <q>png</q>, <q>tif</q>, <q>tiff</q>, <q>wbmp</q> (Java 8 VM lacks support for TIFF, which can be provided by <a href="../install.html#librarydependencies">external libraries</a>).</td> - <td>No; defaults to the format of the first original file</td> + <td>No; defaults to the format of the (first) original file</td> </tr> <tr> <td>overwrite</td> http://git-wip-us.apache.org/repos/asf/ant/blob/570ca183/src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java index 5e4289c..ce25c38 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java @@ -20,6 +20,7 @@ package org.apache.tools.ant.taskdefs.optional.image; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.MatchingTask; +import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Mapper; import org.apache.tools.ant.types.optional.imageio.Draw; @@ -59,7 +60,7 @@ public class ImageIOTask extends MatchingTask { private File srcDir = null; private File destDir = null; - private String format; + private ImageFormat outputFormat; private boolean garbageCollect = false; @@ -93,11 +94,11 @@ public class ImageIOTask extends MatchingTask { } /** - * Set the image format. - * @param encoding the String image format. + * Set the output image format. + * @param format an ImageFormat. */ - public void setEncoding(String encoding) { - format = encoding; + public void setFormat(ImageFormat format) { + outputFormat = format; } /** @@ -281,8 +282,8 @@ public class ImageIOTask extends MatchingTask { return; } ImageReader reader = readers.next(); - if (format == null) { - format = reader.getFormatName(); + if (outputFormat == null) { + outputFormat = new ImageFormat(reader.getFormatName()); } reader.setInput(input); @@ -308,7 +309,7 @@ public class ImageIOTask extends MatchingTask { newFile.delete(); } - if (!ImageIO.write(image, format, newFile)) { + if (!ImageIO.write(image, outputFormat.getValue(), newFile)) { log("Failed to save the transformed file"); } } catch (IOException | RuntimeException err) { @@ -378,11 +379,33 @@ public class ImageIOTask extends MatchingTask { if (srcDir == null && destDir == null) { throw new BuildException("Specify the destDir, or the srcDir."); } - if (format != null && !Arrays.asList(ImageIO.getReaderFormatNames()).contains(format)) { - throw new BuildException("Unknown image format '" + format + "'" - + System.lineSeparator() + "Use any of " - + Arrays.stream(ImageIO.getReaderFormatNames()).sorted() - .collect(Collectors.joining(", "))); + } + + /** + * defines acceptable image formats. + */ + public static class ImageFormat extends EnumeratedAttribute { + + private static final String[] VALUES = ImageIO.getReaderFormatNames(); + + /** + * Constructor + */ + public ImageFormat() { + } + + /** + * Constructor using a string. + * @param value the value of the attribute + */ + public ImageFormat(String value) { + setValue(value); + } + + /** {@inheritDoc}. */ + @Override + public String[] getValues() { + return VALUES; } } }
