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.FilterAlphaRed; 31 import org.apache.batik.ext.awt.image.rendered.RenderedImageCachableRed; 32 33 43 public class FilterAlphaRable 44 extends AbstractRable { 45 46 public FilterAlphaRable(Filter src) { 47 super(src, null); 48 } 49 50 public Filter getSource() { 51 return (Filter)getSources().get(0); 52 } 53 54 57 public Rectangle2D getBounds2D(){ 58 return getSource().getBounds2D(); 59 } 60 61 public RenderedImage createRendering(RenderContext rc) { 62 AffineTransform at = rc.getTransform(); 64 65 RenderingHints rh = rc.getRenderingHints(); 67 if (rh == null) rh = new RenderingHints (null); 68 69 Shape aoi = rc.getAreaOfInterest(); 71 if (aoi == null) 72 aoi = getBounds2D(); 73 74 rh.put(RenderingHintsKeyExt.KEY_COLORSPACE, 76 ColorSpaceHintKey.VALUE_COLORSPACE_ALPHA); 77 78 RenderedImage ri; 79 ri = getSource().createRendering(new RenderContext (at, aoi, rh)); 80 81 if(ri == null){ 82 return null; 83 } 84 85 CachableRed cr = RenderedImageCachableRed.wrap(ri); 86 87 Object val = cr.getProperty(ColorSpaceHintKey.PROPERTY_COLORSPACE); 88 if (val == ColorSpaceHintKey.VALUE_COLORSPACE_ALPHA) 89 return cr; 91 return new FilterAlphaRed(cr); 92 } 93 } 94 | Popular Tags |