Browse Source

Change an attribute name and explain why

master
Gintas Grigelionis 6 years ago
parent
commit
570ca18375
2 changed files with 44 additions and 16 deletions
  1. +8
    -3
      manual/Tasks/imageio.html
  2. +36
    -13
      src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java

+ 8
- 3
manual/Tasks/imageio.html View File

@@ -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>


+ 36
- 13
src/main/org/apache/tools/ant/taskdefs/optional/image/ImageIOTask.java View File

@@ -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;
}
}
}


Loading…
Cancel
Save