1 18 package org.apache.batik.ext.awt.image.renderable; 19 20 import java.awt.RenderingHints ; 21 import java.awt.Shape ; 22 import java.awt.geom.AffineTransform ; 23 import java.awt.geom.Rectangle2D ; 24 import java.awt.image.RenderedImage ; 25 import java.awt.image.renderable.RenderContext ; 26 27 import org.apache.batik.ext.awt.ColorSpaceHintKey; 28 import org.apache.batik.ext.awt.RenderingHintsKeyExt; 29 import org.apache.batik.ext.awt.image.rendered.CachableRed; 30 import org.apache.batik.ext.awt.image.rendered.FilterAsAlphaRed; 31 import org.apache.batik.ext.awt.image.rendered.RenderedImageCachableRed; 32 33 42 public class FilterAsAlphaRable 43 extends AbstractRable { 44 45 public FilterAsAlphaRable(Filter src) { 46 super(src, null); 47 } 48 49 public Filter getSource() { 50 return (Filter)getSources().get(0); 51 } 52 53 56 public Rectangle2D getBounds2D(){ 57 return getSource().getBounds2D(); 58 } 59 60 public RenderedImage createRendering(RenderContext rc) { 61 AffineTransform at = rc.getTransform(); 63 64 RenderingHints rh = rc.getRenderingHints(); 66 if (rh == null) rh = new RenderingHints (null); 67 68 Shape aoi = rc.getAreaOfInterest(); 70 if (aoi == null) { 71 aoi = getBounds2D(); 72 } 73 74 rh.put(RenderingHintsKeyExt.KEY_COLORSPACE, 75 ColorSpaceHintKey.VALUE_COLORSPACE_ALPHA_CONVERT); 76 77 RenderedImage ri; 78 ri = getSource().createRendering(new RenderContext (at, aoi, rh)); 79 if (ri == null) 80 return null; 81 82 CachableRed cr = RenderedImageCachableRed.wrap(ri); 83 84 Object val = cr.getProperty(ColorSpaceHintKey.PROPERTY_COLORSPACE); 85 if (val == ColorSpaceHintKey.VALUE_COLORSPACE_ALPHA_CONVERT) 86 return cr; 87 88 return new FilterAsAlphaRed(cr); 89 } 90 } 91 | Popular Tags |