git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273179 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -72,6 +72,7 @@ cvstagdiff=org.apache.tools.ant.taskdefs.cvslib.CvsTagDiff | |||
| tempfile=org.apache.tools.ant.taskdefs.TempFile | |||
| # optional tasks | |||
| image=org.apache.tools.ant.taskdefs.optional.image.Image | |||
| script=org.apache.tools.ant.taskdefs.optional.Script | |||
| netrexxc=org.apache.tools.ant.taskdefs.optional.NetRexxC | |||
| renameext=org.apache.tools.ant.taskdefs.optional.RenameExtensions | |||
| @@ -0,0 +1,241 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.optional.image; | |||
| import com.sun.media.jai.codec.FileSeekableStream; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.DirectoryScanner; | |||
| import org.apache.tools.ant.taskdefs.MatchingTask; | |||
| import org.apache.tools.ant.types.optional.image.Draw; | |||
| import org.apache.tools.ant.types.optional.image.ImageOperation; | |||
| import org.apache.tools.ant.types.optional.image.Rotate; | |||
| import org.apache.tools.ant.types.optional.image.Scale; | |||
| import org.apache.tools.ant.types.optional.image.TransformOperation; | |||
| import javax.media.jai.JAI; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.io.File; | |||
| import java.io.FileOutputStream; | |||
| import java.io.IOException; | |||
| import java.util.Vector; | |||
| /** | |||
| * A MatchingTask which relies on <A HREF="http://java.sun.com/products/java-media/jai">JAI (Java Advanced Imaging)</A> | |||
| * to perform image manipulation operations on existing images. The | |||
| * operations are represented as ImageOperation DataType objects. | |||
| * The operations are arranged to conform to the Chaining Model | |||
| * of JAI. | |||
| * Check out the <A HREF="http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/">JAI Programming Guide</A> | |||
| * | |||
| * @see org.apache.tools.ant.types.optional.image.ImageOperation | |||
| * @see org.apache.tools.ant.types.DataType | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| */ | |||
| public class Image extends MatchingTask { | |||
| protected Vector instructions = new Vector(); | |||
| protected String str_encoding = "JPEG"; | |||
| protected boolean overwrite = false; | |||
| protected boolean garbage_collect = false; | |||
| protected File srcDir = null; | |||
| protected File destDir = null; | |||
| /** | |||
| * Set the source dir to find the image files. | |||
| */ | |||
| public void setSrcdir(File srcDir) { | |||
| this.srcDir = srcDir; | |||
| } | |||
| /** | |||
| * Set the image encoding type. <A HREF="http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Encode.doc.html#56610">See this table in the JAI Programming Guide</A>. | |||
| */ | |||
| public void setEncoding(String encoding) { | |||
| str_encoding = encoding; | |||
| } | |||
| /** | |||
| * Sets whether or not to overwrite a file if there is a naming conflict. | |||
| */ | |||
| public void setOverwrite(String ovr) { | |||
| if (ovr.toLowerCase().equals("true") || ovr.toLowerCase().equals("yes")) { | |||
| overwrite = true; | |||
| } | |||
| } | |||
| /** | |||
| * Enables Garbage Collection after each image processed. Defaults to false. | |||
| */ | |||
| public void setGc(String gc) { | |||
| if (gc.toLowerCase().equals("true") || gc.toLowerCase().equals("yes")) { | |||
| garbage_collect = true; | |||
| } | |||
| } | |||
| /** | |||
| * Sets the destination directory for manipulated images. | |||
| * @param destination The destination directory | |||
| */ | |||
| public void setDest(String destination) { | |||
| destDir = new File(destination); | |||
| } | |||
| /** | |||
| * Adds an ImageOperation to chain. | |||
| * @param instr The ImageOperation to append to the chain | |||
| */ | |||
| public void addImageOperation(ImageOperation instr) { | |||
| instructions.add(instr); | |||
| } | |||
| /** | |||
| * Adds a Rotate ImageOperation to the chain | |||
| * @param instr The Rotate operation to add to the chain | |||
| * @see org.apache.tools.ant.types.optional.image.Rotate | |||
| */ | |||
| public void addRotate(Rotate instr) { | |||
| instructions.add(instr); | |||
| } | |||
| /** | |||
| * Adds a Scale ImageOperation to the chain | |||
| * @param instr The Scale operation to add to the chain | |||
| * @see org.apache.tools.ant.types.optional.image.Scale | |||
| */ | |||
| public void addScale(Scale instr) { | |||
| instructions.add(instr); | |||
| } | |||
| /** | |||
| * Adds a Draw ImageOperation to the chain. DrawOperation | |||
| * DataType objects can be nested inside the Draw object | |||
| * @param instr The Draw operation to add to the chain | |||
| * @see org.apache.tools.ant.types.optional.image.Draw | |||
| * @see org.apache.tools.ant.types.optional.image.DrawOperation | |||
| */ | |||
| public void addDraw(Draw instr) { | |||
| instructions.add(instr); | |||
| } | |||
| /** | |||
| * Executes all the chained ImageOperations on the file | |||
| * specified. | |||
| * @param file The file to be processed | |||
| */ | |||
| public void processFile(File file) { | |||
| try { | |||
| log("Processing File: " + file.getAbsolutePath()); | |||
| FileSeekableStream input = new FileSeekableStream(file); | |||
| PlanarImage image = JAI.create("stream", input); | |||
| for (int i = 0; i < instructions.size(); i++) { | |||
| Object instr = instructions.elementAt(i); | |||
| if (instr instanceof TransformOperation) { | |||
| image = ((TransformOperation) instr).executeTransformOperation(image); | |||
| } else { | |||
| log("Not a TransformOperation: " + instr); | |||
| } | |||
| } | |||
| input.close(); | |||
| FileOutputStream stream = new FileOutputStream(file); | |||
| log("Encoding As " + str_encoding); | |||
| String file_ext = str_encoding.toLowerCase(); | |||
| if (str_encoding.toLowerCase().equals("jpg")) { | |||
| str_encoding = "JPEG"; | |||
| file_ext = "jpg"; | |||
| } else if (str_encoding.toLowerCase().equals("tif")) { | |||
| str_encoding = "TIFF"; | |||
| file_ext = "tif"; | |||
| } | |||
| JAI.create("encode", image, stream, str_encoding.toUpperCase(), null); | |||
| stream.flush(); | |||
| stream.close(); | |||
| String old_name = file.getAbsolutePath(); | |||
| int t_loc = old_name.lastIndexOf("."); | |||
| String t_name = old_name.substring(0, t_loc + 1) + file_ext; | |||
| File new_file = new File(t_name); | |||
| if ((overwrite && new_file.exists()) && (!new_file.equals(file))) { | |||
| new_file.delete(); | |||
| } | |||
| file.renameTo(new_file); | |||
| } catch (IOException err) { | |||
| log("Error processing file: " + err); | |||
| } | |||
| } | |||
| /** | |||
| * Executes the Task | |||
| */ | |||
| public void execute() { | |||
| try { | |||
| DirectoryScanner ds = super.getDirectoryScanner(srcDir); | |||
| String[] files = ds.getIncludedFiles(); | |||
| for (int i = 0; i < files.length; i++) { | |||
| processFile(new File(srcDir.getAbsolutePath() + File.separator + files[i])); | |||
| if (garbage_collect) { | |||
| System.gc(); | |||
| } | |||
| } | |||
| } catch (Exception err) { | |||
| err.printStackTrace(); | |||
| throw new BuildException(err.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,129 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.awt.BasicStroke; | |||
| import java.awt.Graphics2D; | |||
| import java.awt.geom.Arc2D; | |||
| import java.awt.image.BufferedImage; | |||
| public class Arc extends BasicShape implements DrawOperation { | |||
| protected int width = 0; | |||
| protected int height = 0; | |||
| protected int start = 0; | |||
| protected int stop = 0; | |||
| protected int type = Arc2D.OPEN; | |||
| public void setWidth(int width) { | |||
| this.width = width; | |||
| } | |||
| public void setHeight(int height) { | |||
| this.height = height; | |||
| } | |||
| public void setStart(int start) { | |||
| this.start = start; | |||
| } | |||
| public void setStop(int stop) { | |||
| this.stop = stop; | |||
| } | |||
| /** | |||
| * @todo refactor using an EnumeratedAttribute | |||
| */ | |||
| public void setType(String str_type) { | |||
| if (str_type.toLowerCase().equals("open")) { | |||
| type = Arc2D.OPEN; | |||
| } else if (str_type.toLowerCase().equals("pie")) { | |||
| type = Arc2D.PIE; | |||
| } else if (str_type.toLowerCase().equals("chord")) { | |||
| type = Arc2D.CHORD; | |||
| } | |||
| } | |||
| public PlanarImage executeDrawOperation() { | |||
| BufferedImage bi = new BufferedImage(width + (stroke_width * 2), height + (stroke_width * 2), BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
| Graphics2D graphics = (Graphics2D) bi.getGraphics(); | |||
| if (!stroke.equals("transparent")) { | |||
| BasicStroke b_stroke = new BasicStroke(stroke_width); | |||
| graphics.setColor(ColorMapper.getColorByName(stroke)); | |||
| graphics.setStroke(b_stroke); | |||
| graphics.draw(new Arc2D.Double(stroke_width, stroke_width, width, height, start, stop, type)); | |||
| } | |||
| if (!fill.equals("transparent")) { | |||
| graphics.setColor(ColorMapper.getColorByName(fill)); | |||
| graphics.fill(new Arc2D.Double(stroke_width, stroke_width, width, height, start, stop, type)); | |||
| } | |||
| for (int i = 0; i < instructions.size(); i++) { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) { | |||
| PlanarImage img = ((DrawOperation) instr).executeDrawOperation(); | |||
| graphics.drawImage(img.getAsBufferedImage(), null, 0, 0); | |||
| } else if (instr instanceof TransformOperation) { | |||
| graphics = (Graphics2D) bi.getGraphics(); | |||
| PlanarImage image = ((TransformOperation) instr).executeTransformOperation(PlanarImage.wrapRenderedImage(bi)); | |||
| bi = image.getAsBufferedImage(); | |||
| } | |||
| } | |||
| return PlanarImage.wrapRenderedImage(bi); | |||
| } | |||
| } | |||
| @@ -0,0 +1,73 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| public abstract class BasicShape extends ImageOperation implements DrawOperation { | |||
| protected int stroke_width = 0; | |||
| protected String fill = "transparent"; | |||
| protected String stroke = "black"; | |||
| public void setFill(String col) { | |||
| fill = col; | |||
| } | |||
| public void setStroke(String col) { | |||
| stroke = col; | |||
| } | |||
| public void setStrokewidth(int width) { | |||
| stroke_width = width; | |||
| } | |||
| } | |||
| @@ -0,0 +1,118 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import java.awt.Color; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
| */ | |||
| public final class ColorMapper { | |||
| public static final String COLOR_BLACK = "black"; | |||
| public static final String COLOR_BLUE = "blue"; | |||
| public static final String COLOR_CYAN = "cyan"; | |||
| public static final String COLOR_DARKGRAY = "darkgray"; | |||
| public static final String COLOR_GRAY = "gray"; | |||
| public static final String COLOR_LIGHTGRAY = "lightgray"; | |||
| // Gotta atleast put in the proper spelling :-P | |||
| public static final String COLOR_DARKGREY = "darkgrey"; | |||
| public static final String COLOR_GREY = "grey"; | |||
| public static final String COLOR_LIGHTGREY = "lightgrey"; | |||
| public static final String COLOR_GREEN = "green"; | |||
| public static final String COLOR_MAGENTA = "magenta"; | |||
| public static final String COLOR_ORANGE = "orange"; | |||
| public static final String COLOR_PINK = "pink"; | |||
| public static final String COLOR_RED = "red"; | |||
| public static final String COLOR_WHITE = "white"; | |||
| public static final String COLOR_YELLOW = "yellow"; | |||
| /** | |||
| * @todo refactor to use an EnumeratedAttribute (maybe?) | |||
| */ | |||
| public static final Color getColorByName(String color_name) { | |||
| color_name = color_name.toLowerCase(); | |||
| if (color_name.equals(COLOR_BLACK)) { | |||
| return Color.black; | |||
| } else if (color_name.equals(COLOR_BLUE)) { | |||
| return Color.blue; | |||
| } else if (color_name.equals(COLOR_CYAN)) { | |||
| return Color.cyan; | |||
| } else if (color_name.equals(COLOR_DARKGRAY) || color_name.equals(COLOR_DARKGREY)) { | |||
| return Color.darkGray; | |||
| } else if (color_name.equals(COLOR_GRAY) || color_name.equals(COLOR_GREY)) { | |||
| return Color.gray; | |||
| } else if (color_name.equals(COLOR_LIGHTGRAY) || color_name.equals(COLOR_LIGHTGREY)) { | |||
| return Color.lightGray; | |||
| } else if (color_name.equals(COLOR_GREEN)) { | |||
| return Color.green; | |||
| } else if (color_name.equals(COLOR_MAGENTA)) { | |||
| return Color.magenta; | |||
| } else if (color_name.equals(COLOR_ORANGE)) { | |||
| return Color.orange; | |||
| } else if (color_name.equals(COLOR_PINK)) { | |||
| return Color.pink; | |||
| } else if (color_name.equals(COLOR_RED)) { | |||
| return Color.red; | |||
| } else if (color_name.equals(COLOR_WHITE)) { | |||
| return Color.white; | |||
| } else if (color_name.equals(COLOR_YELLOW)) { | |||
| return Color.yellow; | |||
| } | |||
| return Color.black; | |||
| } | |||
| } | |||
| @@ -0,0 +1,130 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.RenderedOp; | |||
| import javax.media.jai.PlanarImage; | |||
| import javax.media.jai.JAI; | |||
| import java.awt.*; | |||
| import java.awt.image.BufferedImage; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.tasks.optional.image.Image | |||
| */ | |||
| public class Draw extends TransformOperation | |||
| { | |||
| protected int xloc = 0; | |||
| protected int yloc = 0; | |||
| public void setXloc(int x) | |||
| { | |||
| xloc = x; | |||
| } | |||
| public void setYloc(int y) | |||
| { | |||
| yloc = y; | |||
| } | |||
| public void addRectangle(Rectangle rect) | |||
| { | |||
| instructions.add(rect); | |||
| } | |||
| public void addText(Text text) | |||
| { | |||
| instructions.add(text); | |||
| } | |||
| public void addEllipse(Ellipse elip) | |||
| { | |||
| instructions.add(elip); | |||
| } | |||
| public void addArc(Arc arc) | |||
| { | |||
| instructions.add(arc); | |||
| } | |||
| public PlanarImage executeTransformOperation(PlanarImage image) | |||
| { | |||
| BufferedImage bi = image.getAsBufferedImage(); | |||
| Graphics2D graphics = (Graphics2D)bi.getGraphics(); | |||
| for (int i=0; i<instructions.size(); i++) | |||
| { | |||
| ImageOperation instr = ((ImageOperation)instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) | |||
| { | |||
| PlanarImage op = ((DrawOperation)instr).executeDrawOperation(); | |||
| log("\tDrawing to x=" + xloc + " y=" + yloc); | |||
| graphics.drawImage(op.getAsBufferedImage(),null,xloc,yloc); | |||
| } | |||
| else if (instr instanceof TransformOperation) | |||
| { | |||
| PlanarImage op = ((TransformOperation)instr).executeTransformOperation(null); | |||
| BufferedImage child = op.getAsBufferedImage(); | |||
| log("\tDrawing to x=" + xloc + " y=" + yloc); | |||
| graphics.drawImage(child, null, xloc, yloc); | |||
| PlanarImage test = PlanarImage.wrapRenderedImage(bi); | |||
| } | |||
| } | |||
| image = PlanarImage.wrapRenderedImage(bi); | |||
| return image; | |||
| } | |||
| } | |||
| @@ -0,0 +1,75 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.PlanarImage; | |||
| /** | |||
| * Interface which represents an Operation which is "drawable", such | |||
| * as a Rectangle, Circle or Text. The Operation is responsible for | |||
| * creating its own image buffer and drawing itself into it, then | |||
| * wrapping and returning it as a PlanarImage. This allows multible | |||
| * "drawable" objects to be nested. | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
| */ | |||
| public interface DrawOperation { | |||
| /** | |||
| * Abstract method which is intended to create an image buffer | |||
| * and return it so it can be drawn into another object. Use | |||
| * an Alpha channel for a "transparent" background. | |||
| */ | |||
| public PlanarImage executeDrawOperation(); | |||
| } | |||
| @@ -0,0 +1,110 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.awt.BasicStroke; | |||
| import java.awt.Graphics2D; | |||
| import java.awt.geom.Ellipse2D; | |||
| import java.awt.image.BufferedImage; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
| */ | |||
| public class Ellipse extends BasicShape implements DrawOperation { | |||
| protected int width = 0; | |||
| protected int height = 0; | |||
| public void setWidth(int width) { | |||
| this.width = width; | |||
| } | |||
| public void setHeight(int height) { | |||
| this.height = height; | |||
| } | |||
| public PlanarImage executeDrawOperation() { | |||
| BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
| Graphics2D graphics = (Graphics2D) bi.getGraphics(); | |||
| if (!stroke.equals("transparent")) { | |||
| BasicStroke b_stroke = new BasicStroke(stroke_width); | |||
| graphics.setColor(ColorMapper.getColorByName(stroke)); | |||
| graphics.setStroke(b_stroke); | |||
| graphics.draw(new Ellipse2D.Double(0, 0, width, height)); | |||
| } | |||
| if (!fill.equals("transparent")) { | |||
| graphics.setColor(ColorMapper.getColorByName(fill)); | |||
| graphics.fill(new Ellipse2D.Double(0, 0, width, height)); | |||
| } | |||
| for (int i = 0; i < instructions.size(); i++) { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) { | |||
| PlanarImage img = ((DrawOperation) instr).executeDrawOperation(); | |||
| graphics.drawImage(img.getAsBufferedImage(), null, 0, 0); | |||
| } else if (instr instanceof TransformOperation) { | |||
| graphics = (Graphics2D) bi.getGraphics(); | |||
| PlanarImage image = ((TransformOperation) instr).executeTransformOperation(PlanarImage.wrapRenderedImage(bi)); | |||
| bi = image.getAsBufferedImage(); | |||
| } | |||
| } | |||
| return PlanarImage.wrapRenderedImage(bi); | |||
| } | |||
| } | |||
| @@ -0,0 +1,94 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import org.apache.tools.ant.types.DataType; | |||
| import javax.media.jai.RenderedOp; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.util.Vector; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.tasks.optional.image.Image | |||
| */ | |||
| public abstract class ImageOperation extends DataType | |||
| { | |||
| protected Vector instructions = new Vector(); | |||
| public void addRotate(Rotate instr) | |||
| { | |||
| instructions.add(instr); | |||
| } | |||
| public void addDraw(Draw instr) | |||
| { | |||
| instructions.add(instr); | |||
| } | |||
| public void addRectangle(Rectangle instr) | |||
| { | |||
| instructions.add(instr); | |||
| } | |||
| public void addText(Text instr) | |||
| { | |||
| instructions.add(instr); | |||
| } | |||
| public void addScale(Scale instr) | |||
| { | |||
| instructions.add(instr); | |||
| } | |||
| } | |||
| @@ -0,0 +1,129 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.awt.BasicStroke; | |||
| import java.awt.Graphics2D; | |||
| import java.awt.image.BufferedImage; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
| */ | |||
| public class Rectangle extends BasicShape implements DrawOperation { | |||
| protected int width = 0; | |||
| protected int height = 0; | |||
| protected int arcwidth = 0; | |||
| protected int archeight = 0; | |||
| public void setWidth(int w) { | |||
| width = w; | |||
| } | |||
| public void setHeight(int h) { | |||
| height = h; | |||
| } | |||
| public void setArcwidth(int w) { | |||
| arcwidth = w; | |||
| } | |||
| public void setArcheight(int h) { | |||
| archeight = h; | |||
| } | |||
| public PlanarImage executeDrawOperation() { | |||
| log("\tCreating Rectangle w=" + width + " h=" + height + " arcw=" + arcwidth + " arch=" + archeight); | |||
| BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
| Graphics2D graphics = (Graphics2D) bi.getGraphics(); | |||
| if (!stroke.equals("transparent")) { | |||
| BasicStroke b_stroke = new BasicStroke(stroke_width); | |||
| graphics.setColor(ColorMapper.getColorByName(stroke)); | |||
| graphics.setStroke(b_stroke); | |||
| if ((arcwidth != 0) || (archeight != 0)) { | |||
| graphics.drawRoundRect(0, 0, width, height, arcwidth, archeight); | |||
| } else { | |||
| graphics.drawRect(0, 0, width, height); | |||
| } | |||
| } | |||
| if (!fill.equals("transparent")) { | |||
| graphics.setColor(ColorMapper.getColorByName(fill)); | |||
| if ((arcwidth != 0) || (archeight != 0)) { | |||
| graphics.fillRoundRect(stroke_width, stroke_width, width - (stroke_width * 2), height - (stroke_width * 2), arcwidth, archeight); | |||
| } else { | |||
| graphics.fillRect(stroke_width, stroke_width, width - (stroke_width * 2), height - (stroke_width * 2)); | |||
| } | |||
| } | |||
| for (int i = 0; i < instructions.size(); i++) { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) { | |||
| PlanarImage img = ((DrawOperation) instr).executeDrawOperation(); | |||
| graphics.drawImage(img.getAsBufferedImage(), null, 0, 0); | |||
| } else if (instr instanceof TransformOperation) { | |||
| graphics = (Graphics2D) bi.getGraphics(); | |||
| PlanarImage image = ((TransformOperation) instr).executeTransformOperation(PlanarImage.wrapRenderedImage(bi)); | |||
| bi = image.getAsBufferedImage(); | |||
| } | |||
| } | |||
| return PlanarImage.wrapRenderedImage(bi); | |||
| } | |||
| } | |||
| @@ -0,0 +1,157 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import org.apache.tools.ant.types.DataType; | |||
| import javax.media.jai.PlanarImage; | |||
| import javax.media.jai.InterpolationNearest; | |||
| import javax.media.jai.JAI; | |||
| import java.awt.image.renderable.ParameterBlock; | |||
| import java.awt.image.BufferedImage; | |||
| import java.awt.*; | |||
| /** | |||
| * ImageOperation to rotate an image by a certain degree | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.tasks.optional.image.Image | |||
| */ | |||
| public class Rotate extends TransformOperation implements DrawOperation | |||
| { | |||
| protected float angle = 0.0F; | |||
| /** | |||
| * Sets the angle of rotation in degrees. | |||
| * @param ang The angle at which to rotate the image | |||
| */ | |||
| public void setAngle(String ang) | |||
| { | |||
| angle = Float.parseFloat(ang); | |||
| } | |||
| public PlanarImage performRotate(PlanarImage image) | |||
| { | |||
| float t_angle = (float) (angle * (Math.PI / 180.0F)); | |||
| ParameterBlock pb = new ParameterBlock(); | |||
| pb.addSource(image); | |||
| pb.add(0.0F); | |||
| pb.add(0.0F); | |||
| pb.add(t_angle); | |||
| pb.add(new InterpolationNearest()); | |||
| return JAI.create("Rotate", pb, null); | |||
| } | |||
| /** | |||
| * Performs the image rotation when being handled as a TransformOperation. | |||
| * @param image The image to perform the transformation on. | |||
| */ | |||
| public PlanarImage executeTransformOperation(PlanarImage image) | |||
| { | |||
| BufferedImage bi = null; | |||
| Graphics2D graphics = null; | |||
| for (int i = 0; i < instructions.size(); i++) | |||
| { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) | |||
| { | |||
| // If this TransformOperation has DrawOperation children | |||
| // then Rotate the first child and return. | |||
| System.out.println("Execing Draws"); | |||
| PlanarImage op = ((DrawOperation) instr).executeDrawOperation(); | |||
| image = performRotate(op); | |||
| return image; | |||
| } | |||
| else if (instr instanceof TransformOperation) | |||
| { | |||
| bi = image.getAsBufferedImage(); | |||
| graphics = (Graphics2D) bi.getGraphics(); | |||
| System.out.println("Execing Transforms"); | |||
| image = ((TransformOperation) instr).executeTransformOperation(PlanarImage.wrapRenderedImage(bi)); | |||
| bi = image.getAsBufferedImage(); | |||
| } | |||
| } | |||
| System.out.println("Execing as TransformOperation"); | |||
| image = performRotate(image); | |||
| System.out.println(image); | |||
| return image; | |||
| } | |||
| /** | |||
| * Performs the image rotation when being handled as a DrawOperation. | |||
| * It absolutely requires that there be a DrawOperation nested beneath it, | |||
| * but only the FIRST DrawOperation will be handled since it can only return | |||
| * ONE image. | |||
| * @param image The image to perform the transformation on. | |||
| */ | |||
| public PlanarImage executeDrawOperation() | |||
| { | |||
| for (int i = 0; i < instructions.size(); i++) | |||
| { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) | |||
| { | |||
| // If this TransformOperation has DrawOperation children | |||
| // then Rotate the first child and return. | |||
| PlanarImage op = ((DrawOperation) instr).executeDrawOperation(); | |||
| op = performRotate(op); | |||
| return op; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @@ -0,0 +1,162 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.JAI; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.awt.Graphics2D; | |||
| import java.awt.image.BufferedImage; | |||
| import java.awt.image.renderable.ParameterBlock; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
| */ | |||
| public class Scale extends TransformOperation implements DrawOperation { | |||
| private String width_str = null; | |||
| private String height_str = null; | |||
| private boolean x_percent = true; | |||
| private boolean y_percent = true; | |||
| private boolean keep_proportions = false; | |||
| public void setKeepproportions(boolean props) { | |||
| keep_proportions = props; | |||
| } | |||
| public void setWidth(String width) { | |||
| width_str = width; | |||
| } | |||
| public void setHeight(String height) { | |||
| height_str = height; | |||
| } | |||
| public float getWidth() { | |||
| float width = 0.0F; | |||
| int perc_index = width_str.indexOf('%'); | |||
| if (perc_index > 0) { | |||
| width = Float.parseFloat(width_str.substring(0, perc_index)); | |||
| x_percent = true; | |||
| return width / 100; | |||
| } else { | |||
| x_percent = false; | |||
| return Float.parseFloat(width_str); | |||
| } | |||
| } | |||
| public float getHeight() { | |||
| int perc_index = height_str.indexOf('%'); | |||
| if (perc_index > 0) { | |||
| float height = Float.parseFloat(height_str.substring(0, perc_index)); | |||
| y_percent = true; | |||
| return height / 100; | |||
| } else { | |||
| y_percent = false; | |||
| return Float.parseFloat(height_str); | |||
| } | |||
| } | |||
| public PlanarImage performScale(PlanarImage image) { | |||
| ParameterBlock pb = new ParameterBlock(); | |||
| pb.addSource(image); | |||
| float x_fl = getWidth(); | |||
| float y_fl = getHeight(); | |||
| if (!x_percent) { | |||
| x_fl = (x_fl / image.getWidth()); | |||
| } | |||
| if (!y_percent) { | |||
| y_fl = (y_fl / image.getHeight()); | |||
| } | |||
| if (keep_proportions) { | |||
| y_fl = x_fl; | |||
| } | |||
| pb.add(new Float(x_fl)); | |||
| pb.add(new Float(y_fl)); | |||
| log("\tScaling to " + x_fl + "% x " + y_fl + "%"); | |||
| return JAI.create("scale", pb); | |||
| } | |||
| public PlanarImage executeTransformOperation(PlanarImage image) { | |||
| BufferedImage bi = null; | |||
| for (int i = 0; i < instructions.size(); i++) { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) { | |||
| return performScale(image); | |||
| } else if (instr instanceof TransformOperation) { | |||
| bi = image.getAsBufferedImage(); | |||
| image = ((TransformOperation) instr).executeTransformOperation(PlanarImage.wrapRenderedImage(bi)); | |||
| bi = image.getAsBufferedImage(); | |||
| } | |||
| } | |||
| return performScale(image); | |||
| } | |||
| public PlanarImage executeDrawOperation() { | |||
| for (int i = 0; i < instructions.size(); i++) { | |||
| ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
| if (instr instanceof DrawOperation) { | |||
| PlanarImage image = null; | |||
| // If this TransformOperation has DrawOperation children | |||
| // then Rotate the first child and return. | |||
| performScale(image); | |||
| return image; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @@ -0,0 +1,136 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.PlanarImage; | |||
| import java.awt.Color; | |||
| import java.awt.Font; | |||
| import java.awt.FontMetrics; | |||
| import java.awt.Graphics2D; | |||
| import java.awt.RenderingHints; | |||
| import java.awt.image.BufferedImage; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
| */ | |||
| public class Text extends ImageOperation implements DrawOperation { | |||
| private String str_text = ""; | |||
| private String font = "Arial"; | |||
| private int point = 10; | |||
| private boolean bold = false; | |||
| private boolean italic = false; | |||
| private String color = "black"; | |||
| public void setString(String str) { | |||
| str_text = str; | |||
| } | |||
| public void setFont(String f) { | |||
| font = f; | |||
| } | |||
| public void setPoint(String p) { | |||
| point = Integer.parseInt(p); | |||
| } | |||
| public void setColor(String c) { | |||
| color = c; | |||
| } | |||
| /** | |||
| * @todo is this used? | |||
| */ | |||
| public void setBold(boolean state) { | |||
| bold = state; | |||
| } | |||
| /** | |||
| * @todo is this used? | |||
| */ | |||
| public void setItalic(boolean state) { | |||
| italic = state; | |||
| } | |||
| public PlanarImage executeDrawOperation() { | |||
| log("\tCreating Text \"" + str_text + "\""); | |||
| Color couloir = ColorMapper.getColorByName(color); | |||
| int width = 1; | |||
| int height = 1; | |||
| BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
| Graphics2D graphics = (Graphics2D) bi.getGraphics(); | |||
| graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); | |||
| graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); | |||
| Font f = new Font(font, Font.PLAIN, point); | |||
| FontMetrics fmetrics = graphics.getFontMetrics(f); | |||
| height = fmetrics.getMaxAscent() + fmetrics.getMaxDescent(); | |||
| width = fmetrics.stringWidth(str_text); | |||
| bi = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
| graphics = (Graphics2D) bi.getGraphics(); | |||
| graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); | |||
| graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); | |||
| graphics.setFont(f); | |||
| graphics.setColor(couloir); | |||
| graphics.drawString(str_text, 0, height - fmetrics.getMaxDescent()); | |||
| PlanarImage image = PlanarImage.wrapRenderedImage(bi); | |||
| return image; | |||
| } | |||
| } | |||
| @@ -0,0 +1,72 @@ | |||
| /* | |||
| * The Apache Software License, Version 1.1 | |||
| * | |||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||
| * reserved. | |||
| * | |||
| * Redistribution and use in source and binary forms, with or without | |||
| * modification, are permitted provided that the following conditions | |||
| * are met: | |||
| * | |||
| * 1. Redistributions of source code must retain the above copyright | |||
| * notice, this list of conditions and the following disclaimer. | |||
| * | |||
| * 2. Redistributions in binary form must reproduce the above copyright | |||
| * notice, this list of conditions and the following disclaimer in | |||
| * the documentation and/or other materials provided with the | |||
| * distribution. | |||
| * | |||
| * 3. The end-user documentation included with the redistribution, if | |||
| * any, must include the following acknowlegement: | |||
| * "This product includes software developed by the | |||
| * Apache Software Foundation (http://www.apache.org/)." | |||
| * Alternately, this acknowlegement may appear in the software itself, | |||
| * if and wherever such third-party acknowlegements normally appear. | |||
| * | |||
| * 4. The names "The Jakarta Project", "Ant", and "Apache Software | |||
| * Foundation" must not be used to endorse or promote products derived | |||
| * from this software without prior written permission. For written | |||
| * permission, please contact apache@apache.org. | |||
| * | |||
| * 5. Products derived from this software may not be called "Apache" | |||
| * nor may "Apache" appear in their names without prior written | |||
| * permission of the Apache Group. | |||
| * | |||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||
| * SUCH DAMAGE. | |||
| * ==================================================================== | |||
| * | |||
| * This software consists of voluntary contributions made by many | |||
| * individuals on behalf of the Apache Software Foundation. For more | |||
| * information on the Apache Software Foundation, please see | |||
| * <http://www.apache.org/>. | |||
| */ | |||
| package org.apache.tools.ant.types.optional.image; | |||
| import javax.media.jai.RenderedOp; | |||
| import javax.media.jai.PlanarImage; | |||
| /** | |||
| * | |||
| * @author <a href="mailto:kzgrey@ntplx.net">Kevin Z Grey</a> | |||
| * @see org.apache.tools.ant.tasks.optional.image.Image | |||
| */ | |||
| public abstract class TransformOperation extends ImageOperation | |||
| { | |||
| public abstract PlanarImage executeTransformOperation(PlanarImage img); | |||
| public void addRectangle(Rectangle instr) | |||
| { | |||
| instructions.add(instr); | |||
| } | |||
| } | |||