1 18 package org.apache.tools.ant.types.optional.image; 19 20 import javax.media.jai.PlanarImage; 21 import javax.media.jai.InterpolationNearest; 22 import javax.media.jai.JAI; 23 import java.awt.image.renderable.ParameterBlock ; 24 import java.awt.image.BufferedImage ; 25 import java.awt.Graphics2D ; 26 27 32 public class Rotate extends TransformOperation implements DrawOperation { 33 private static final float HALF_CIRCLE = 180.0F; 34 35 protected float angle = 0.0F; 37 39 43 public void setAngle(String ang) { 44 angle = Float.parseFloat(ang); 45 } 46 47 48 53 public PlanarImage performRotate(PlanarImage image) { 54 float tAngle = (float) (angle * (Math.PI / HALF_CIRCLE)); 55 ParameterBlock pb = new ParameterBlock (); 56 pb.addSource(image); 57 pb.add(0.0F); 58 pb.add(0.0F); 59 pb.add(tAngle); 60 pb.add(new InterpolationNearest()); 61 return JAI.create("Rotate", pb, null); 62 } 63 64 65 70 public PlanarImage executeTransformOperation(PlanarImage image) { 71 BufferedImage bi = null; 72 Graphics2D graphics = null; 73 for (int i = 0; i < instructions.size(); i++) { 74 ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); 75 if (instr instanceof DrawOperation) { 76 System.out.println("Execing Draws"); 79 PlanarImage op = ((DrawOperation) instr).executeDrawOperation(); 80 image = performRotate(op); 81 return image; 82 } else if (instr instanceof TransformOperation) { 83 bi = image.getAsBufferedImage(); 84 graphics = (Graphics2D ) bi.getGraphics(); 85 System.out.println("Execing Transforms"); 86 image = ((TransformOperation) instr) 87 .executeTransformOperation(PlanarImage.wrapRenderedImage(bi)); 88 bi = image.getAsBufferedImage(); 89 } 90 } 91 System.out.println("Execing as TransformOperation"); 92 image = performRotate(image); 93 System.out.println(image); 94 return image; 95 } 96 97 104 public PlanarImage executeDrawOperation() { 105 for (int i = 0; i < instructions.size(); i++) { 106 ImageOperation instr = ((ImageOperation) instructions.elementAt(i)); 107 if (instr instanceof DrawOperation) { 108 PlanarImage op = ((DrawOperation) instr).executeDrawOperation(); 111 op = performRotate(op); 112 return op; 113 } 114 } 115 return null; 116 } 117 118 } 119 | Popular Tags |