git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@475076 13f79535-47bb-0310-9956-ffa450edef68master
@@ -23,30 +23,53 @@ import java.awt.Graphics2D; | |||
import java.awt.geom.Arc2D; | |||
import java.awt.image.BufferedImage; | |||
/** | |||
* Draw an arc. | |||
*/ | |||
public class Arc extends BasicShape implements DrawOperation { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected int width = 0; | |||
protected int height = 0; | |||
protected int start = 0; | |||
protected int stop = 0; | |||
protected int type = Arc2D.OPEN; | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Set the width. | |||
* @param width the width of the arc. | |||
*/ | |||
public void setWidth(int width) { | |||
this.width = width; | |||
} | |||
/** | |||
* Set the height. | |||
* @param height the height of the arc. | |||
*/ | |||
public void setHeight(int height) { | |||
this.height = height; | |||
} | |||
/** | |||
* Set the start of the arc. | |||
* @param start the start of the arc. | |||
*/ | |||
public void setStart(int start) { | |||
this.start = start; | |||
} | |||
/** | |||
* Set the stop of the arc. | |||
* @param stop the stop of the arc. | |||
*/ | |||
public void setStop(int stop) { | |||
this.stop = stop; | |||
} | |||
/** | |||
* Set the type of arc. | |||
* @param strType the type to use - open, pie or chord. | |||
* @todo refactor using an EnumeratedAttribute | |||
*/ | |||
public void setType(String strType) { | |||
@@ -59,6 +82,7 @@ public class Arc extends BasicShape implements DrawOperation { | |||
} | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage executeDrawOperation() { | |||
BufferedImage bi = new BufferedImage(width + (stroke_width * 2), | |||
height + (stroke_width * 2), BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
@@ -17,20 +17,38 @@ | |||
*/ | |||
package org.apache.tools.ant.types.optional.image; | |||
/** Draw a basic shape */ | |||
public abstract class BasicShape extends ImageOperation implements DrawOperation { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
// CheckStyle:MemberNameCheck OFF - bc | |||
protected int stroke_width = 0; | |||
// CheckStyle:MemberNameCheck ON | |||
protected String fill = "transparent"; | |||
protected String stroke = "black"; | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Set the fill attribute. | |||
* @param col the color value to use. | |||
*/ | |||
public void setFill(String col) { | |||
fill = col; | |||
} | |||
/** | |||
* Set the stroke attribute. | |||
* @param col the color value to use. | |||
*/ | |||
public void setStroke(String col) { | |||
stroke = col; | |||
} | |||
/** | |||
* Set the stroke width attribute. | |||
* @param width the value to use. | |||
*/ | |||
public void setStrokewidth(int width) { | |||
stroke_width = width; | |||
} | |||
@@ -24,6 +24,10 @@ import java.awt.Color; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public final class ColorMapper { | |||
/** private constructor for Utility class */ | |||
private ColorMapper() { | |||
} | |||
/** black string */ | |||
public static final String COLOR_BLACK = "black"; | |||
/** blue string */ | |||
@@ -59,6 +63,9 @@ public final class ColorMapper { | |||
public static final String COLOR_YELLOW = "yellow"; | |||
/** | |||
* Convert a color name to a color value. | |||
* @param colorName a string repr of the color. | |||
* @return the color value. | |||
* @todo refactor to use an EnumeratedAttribute (maybe?) | |||
*/ | |||
public static Color getColorByName(String colorName) { | |||
@@ -26,34 +26,54 @@ import java.awt.image.BufferedImage; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public class Draw extends TransformOperation { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected int xloc = 0; | |||
protected int yloc = 0; | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Set the X location. | |||
* @param x the value to use. | |||
*/ | |||
public void setXloc(int x) { | |||
xloc = x; | |||
} | |||
/** | |||
* Set the Y location. | |||
* @param y the value to use. | |||
*/ | |||
public void setYloc(int y) { | |||
yloc = y; | |||
} | |||
/** {@inheritDoc}. */ | |||
public void addRectangle(Rectangle rect) { | |||
instructions.add(rect); | |||
} | |||
/** {@inheritDoc}. */ | |||
public void addText(Text text) { | |||
instructions.add(text); | |||
} | |||
/** | |||
* Add an ellipse. | |||
* @param elip the ellipse to add. | |||
*/ | |||
public void addEllipse(Ellipse elip) { | |||
instructions.add(elip); | |||
} | |||
/** | |||
* Add an arc. | |||
* @param arc the arc to add. | |||
*/ | |||
public void addArc(Arc arc) { | |||
instructions.add(arc); | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage executeTransformOperation(PlanarImage image) { | |||
BufferedImage bi = image.getAsBufferedImage(); | |||
Graphics2D graphics = (Graphics2D) bi.getGraphics(); | |||
@@ -24,21 +24,32 @@ import java.awt.geom.Ellipse2D; | |||
import java.awt.image.BufferedImage; | |||
/** | |||
* | |||
* Draw an ellipse. | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public class Ellipse extends BasicShape implements DrawOperation { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected int width = 0; | |||
protected int height = 0; | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Set the width. | |||
* @param width the width of the elipse. | |||
*/ | |||
public void setWidth(int width) { | |||
this.width = width; | |||
} | |||
/** | |||
* Set the height. | |||
* @param height the height of the elipse. | |||
*/ | |||
public void setHeight(int height) { | |||
this.height = height; | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage executeDrawOperation() { | |||
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR_PRE); | |||
@@ -25,25 +25,47 @@ import java.util.Vector; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public abstract class ImageOperation extends DataType { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected Vector instructions = new Vector(); | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Add a rotate to the operation. | |||
* @param instr the rotate to add. | |||
*/ | |||
public void addRotate(Rotate instr) { | |||
instructions.add(instr); | |||
} | |||
/** | |||
* Add a draw to the operation. | |||
* @param instr the draw to add. | |||
*/ | |||
public void addDraw(Draw instr) { | |||
instructions.add(instr); | |||
} | |||
/** | |||
* Add a rectangle to the operation. | |||
* @param instr the rectangle to add. | |||
*/ | |||
public void addRectangle(Rectangle instr) { | |||
instructions.add(instr); | |||
} | |||
/** | |||
* Add text to the operation. | |||
* @param instr the text to add. | |||
*/ | |||
public void addText(Text instr) { | |||
instructions.add(instr); | |||
} | |||
/** | |||
* Add a scale to the operation. | |||
* @param instr the scale to add. | |||
*/ | |||
public void addScale(Scale instr) { | |||
instructions.add(instr); | |||
} | |||
} | |||
} |
@@ -27,27 +27,46 @@ import java.awt.image.BufferedImage; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public class Rectangle extends BasicShape implements DrawOperation { | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected int width = 0; | |||
protected int height = 0; | |||
protected int arcwidth = 0; | |||
protected int archeight = 0; | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Set the width. | |||
* @param w the value to use. | |||
*/ | |||
public void setWidth(int w) { | |||
width = w; | |||
} | |||
/** | |||
* Set the height. | |||
* @param h the value to use. | |||
*/ | |||
public void setHeight(int h) { | |||
height = h; | |||
} | |||
/** | |||
* Set the arc width. | |||
* @param w the value to use. | |||
*/ | |||
public void setArcwidth(int w) { | |||
arcwidth = w; | |||
} | |||
/** | |||
* Set the arc height. | |||
* @param h the value to use. | |||
*/ | |||
public void setArcheight(int h) { | |||
archeight = h; | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage executeDrawOperation() { | |||
log("\tCreating Rectangle w=" + width + " h=" + height + " arcw=" | |||
+ arcwidth + " arch=" + archeight); | |||
@@ -30,7 +30,11 @@ import java.awt.Graphics2D; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public class Rotate extends TransformOperation implements DrawOperation { | |||
private static final float HALF_CIRCLE = 180.0F; | |||
// CheckStyle:VisibilityModifier OFF - bc | |||
protected float angle = 0.0F; | |||
// CheckStyle:VisibilityModifier ON | |||
/** | |||
* Sets the angle of rotation in degrees. | |||
@@ -41,8 +45,9 @@ public class Rotate extends TransformOperation implements DrawOperation { | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage performRotate(PlanarImage image) { | |||
float tAngle = (float) (angle * (Math.PI / 180.0F)); | |||
float tAngle = (float) (angle * (Math.PI / HALF_CIRCLE)); | |||
ParameterBlock pb = new ParameterBlock(); | |||
pb.addSource(image); | |||
pb.add(0.0F); | |||
@@ -54,8 +59,9 @@ public class Rotate extends TransformOperation implements DrawOperation { | |||
/** | |||
* Performs the image rotation when being handled as a TransformOperation. | |||
* Performs the image rotation when being handled as a TransformOperation. | |||
* @param image The image to perform the transformation on. | |||
* @return the transformed image. | |||
*/ | |||
public PlanarImage executeTransformOperation(PlanarImage image) { | |||
BufferedImage bi = null; | |||
@@ -89,6 +95,7 @@ public class Rotate extends TransformOperation implements 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. | |||
* @return the image. | |||
*/ | |||
public PlanarImage executeDrawOperation() { | |||
for (int i = 0; i < instructions.size(); i++) { | |||
@@ -29,6 +29,7 @@ import java.awt.image.renderable.ParameterBlock; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public class Scale extends TransformOperation implements DrawOperation { | |||
private static final int HUNDRED = 100; | |||
private String widthStr = "100%"; | |||
private String heightStr = "100%"; | |||
@@ -36,7 +37,9 @@ public class Scale extends TransformOperation implements DrawOperation { | |||
private boolean yPercent = true; | |||
private String proportions = "ignore"; | |||
/** Enumerated class for proportions attribute. */ | |||
public static class ProportionsAttribute extends EnumeratedAttribute { | |||
/** {@inheritDoc}. */ | |||
public String[] getValues() { | |||
return new String[] {"ignore", "width", "height", "cover", "fit"}; | |||
} | |||
@@ -44,13 +47,16 @@ public class Scale extends TransformOperation implements DrawOperation { | |||
/** | |||
* Sets the behaviour regarding the image proportions. | |||
* @param pa the enumerated value. | |||
*/ | |||
public void setProportions(ProportionsAttribute pa) { | |||
proportions = pa.getValue(); | |||
} | |||
/** | |||
* Sets the width of the image, either as an integer or a %. Defaults to 100%. | |||
* Sets the width of the image, either as an integer or a %. | |||
* Defaults to 100%. | |||
* @param width the value to use. | |||
*/ | |||
public void setWidth(String width) { | |||
widthStr = width; | |||
@@ -58,36 +64,46 @@ public class Scale extends TransformOperation implements DrawOperation { | |||
/** | |||
* Sets the height of the image, either as an integer or a %. Defaults to 100%. | |||
* @param height the value to use. | |||
*/ | |||
public void setHeight(String height) { | |||
heightStr = height; | |||
} | |||
/** | |||
* Get the width. | |||
* @return the value converted from the width string. | |||
*/ | |||
public float getWidth() { | |||
float width = 0.0F; | |||
int percIndex = widthStr.indexOf('%'); | |||
if (percIndex > 0) { | |||
width = Float.parseFloat(widthStr.substring(0, percIndex)); | |||
xPercent = true; | |||
return width / 100; | |||
return width / HUNDRED; | |||
} else { | |||
xPercent = false; | |||
return Float.parseFloat(widthStr); | |||
} | |||
} | |||
/** | |||
* Get the height. | |||
* @return the value converted from the height string. | |||
*/ | |||
public float getHeight() { | |||
int percIndex = heightStr.indexOf('%'); | |||
if (percIndex > 0) { | |||
float height = Float.parseFloat(heightStr.substring(0, percIndex)); | |||
yPercent = true; | |||
return height / 100; | |||
return height / HUNDRED; | |||
} else { | |||
yPercent = false; | |||
return Float.parseFloat(heightStr); | |||
} | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage performScale(PlanarImage image) { | |||
ParameterBlock pb = new ParameterBlock(); | |||
pb.addSource(image); | |||
@@ -116,12 +132,14 @@ public class Scale extends TransformOperation implements DrawOperation { | |||
pb.add(new Float(xFl)); | |||
pb.add(new Float(yFl)); | |||
log("\tScaling to " + (xFl * 100) + "% x " + (yFl * 100) + "%"); | |||
log("\tScaling to " + (xFl * HUNDRED) + "% x " | |||
+ (yFl * HUNDRED) + "%"); | |||
return JAI.create("scale", pb); | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage executeTransformOperation(PlanarImage image) { | |||
BufferedImage bi = null; | |||
for (int i = 0; i < instructions.size(); i++) { | |||
@@ -139,6 +157,7 @@ public class Scale extends TransformOperation implements DrawOperation { | |||
} | |||
/** {@inheritDoc}. */ | |||
public PlanarImage executeDrawOperation() { | |||
for (int i = 0; i < instructions.size(); i++) { | |||
ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); | |||
@@ -30,31 +30,50 @@ import java.awt.image.BufferedImage; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public class Text extends ImageOperation implements DrawOperation { | |||
private static final int DEFAULT_POINT = 10; | |||
private String strText = ""; | |||
private String font = "Arial"; | |||
private int point = 10; | |||
private int point = DEFAULT_POINT; | |||
private boolean bold = false; | |||
private boolean italic = false; | |||
private String color = "black"; | |||
/** | |||
* Set the string to be used as text. | |||
* @param str the string to be used. | |||
*/ | |||
public void setString(String str) { | |||
strText = str; | |||
} | |||
/** | |||
* Set the font to be used to draw the text. | |||
* @param f the font to be used. | |||
*/ | |||
public void setFont(String f) { | |||
font = f; | |||
} | |||
/** | |||
* Set the number of points to be used. | |||
* @param p an integer value as a string. | |||
*/ | |||
public void setPoint(String p) { | |||
point = Integer.parseInt(p); | |||
} | |||
/** | |||
* Set the color of the text. | |||
* @param c the color name. | |||
*/ | |||
public void setColor(String c) { | |||
color = c; | |||
} | |||
/** | |||
* @todo is this used? | |||
* @param state not used at the moment. | |||
*/ | |||
public void setBold(boolean state) { | |||
bold = state; | |||
@@ -62,11 +81,16 @@ public class Text extends ImageOperation implements DrawOperation { | |||
/** | |||
* @todo is this used? | |||
* @param state not used at the moment. | |||
*/ | |||
public void setItalic(boolean state) { | |||
italic = state; | |||
} | |||
/** | |||
* Draw the text. | |||
* @return the resultant image. | |||
*/ | |||
public PlanarImage executeDrawOperation() { | |||
log("\tCreating Text \"" + strText + "\""); | |||
@@ -23,10 +23,15 @@ import javax.media.jai.PlanarImage; | |||
* @see org.apache.tools.ant.taskdefs.optional.image.Image | |||
*/ | |||
public abstract class TransformOperation extends ImageOperation { | |||
/** | |||
* Performs the transformations. | |||
* @param img The image to perform the transformation on. | |||
* @return the transformed image. | |||
*/ | |||
public abstract PlanarImage executeTransformOperation(PlanarImage img); | |||
/** {@inheritDoc}. */ | |||
public void addRectangle(Rectangle instr) { | |||
instructions.add(instr); | |||
} | |||
} | |||
} |