deweese 02/04/10 14:36:45 Modified: sources/org/apache/batik/bridge AbstractSVGFilterPrimitiveElementBridge.java sources/org/apache/batik/gvt/filter BackgroundRable8Bit.java Log: Fixes a bug in background image handleing. Revision Changes Path 1.8 +15 -5 xml-batik/sources/org/apache/batik/bridge/AbstractSVGFilterPrimitiveElementBridge.java Index: AbstractSVGFilterPrimitiveElementBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/AbstractSVGFilterPrimitiveElementBridge.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- AbstractSVGFilterPrimitiveElementBridge.java 18 Mar 2002 10:28:19 -0000 1.7 +++ AbstractSVGFilterPrimitiveElementBridge.java 10 Apr 2002 21:36:45 -0000 1.8 @@ -17,6 +17,8 @@ import org.apache.batik.ext.awt.image.renderable.FilterAlphaRable; import org.apache.batik.ext.awt.image.renderable.FilterColorInterpolation; import org.apache.batik.ext.awt.image.renderable.FloodRable8Bit; +import org.apache.batik.ext.awt.image.PadMode; +import org.apache.batik.ext.awt.image.renderable.PadRable8Bit; import org.apache.batik.gvt.GraphicsNode; import org.apache.batik.gvt.filter.BackgroundRable8Bit; @@ -28,7 +30,7 @@ * The base bridge class for SVG filter primitives. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: AbstractSVGFilterPrimitiveElementBridge.java,v 1.7 2002/03/18 10:28:19 hillion Exp $ + * @version $Id: AbstractSVGFilterPrimitiveElementBridge.java,v 1.8 2002/04/10 21:36:45 deweese Exp $ */ public abstract class AbstractSVGFilterPrimitiveElementBridge extends AbstractSVGBridge @@ -153,20 +155,24 @@ Map filterMap, BridgeContext ctx) { + // SourceGraphic + Filter srcG = (Filter)filterMap.get(SVG_SOURCE_GRAPHIC_VALUE); + Rectangle2D filterRegion = srcG.getBounds2D(); + int length = s.length(); Filter source = null; switch (length) { case 13: if (SVG_SOURCE_GRAPHIC_VALUE.equals(s)) { // SourceGraphic - source = (Filter)filterMap.get(SVG_SOURCE_GRAPHIC_VALUE); + source = srcG; } break; case 11: if (s.charAt(1) == SVG_SOURCE_ALPHA_VALUE.charAt(1)) { if (SVG_SOURCE_ALPHA_VALUE.equals(s)) { // SourceAlpha - source = (Filter)filterMap.get(SVG_SOURCE_GRAPHIC_VALUE); + source = srcG; source = new FilterAlphaRable(source); } } else if (SVG_STROKE_PAINT_VALUE.equals(s)) { @@ -174,7 +180,7 @@ Paint paint = PaintServer.convertStrokePaint (filteredElement,filteredNode, ctx); // <!> FIXME: Should we create a transparent flood ??? - source = new FloodRable8Bit(INFINITE_FILTER_REGION, paint); + source = new FloodRable8Bit(filterRegion, paint); } break; case 15: @@ -182,11 +188,15 @@ if (SVG_BACKGROUND_IMAGE_VALUE.equals(s)) { // BackgroundImage source = new BackgroundRable8Bit(filteredNode); + source = new PadRable8Bit(source, filterRegion, + PadMode.ZERO_PAD); } } else if (SVG_BACKGROUND_ALPHA_VALUE.equals(s)) { // BackgroundAlpha source = new BackgroundRable8Bit(filteredNode); source = new FilterAlphaRable(source); + source = new PadRable8Bit(source, filterRegion, + PadMode.ZERO_PAD); } break; case 9: @@ -197,7 +207,7 @@ if (paint == null) { paint = new Color(0, 0, 0, 0); // create a transparent flood } - source = new FloodRable8Bit(INFINITE_FILTER_REGION, paint); + source = new FloodRable8Bit(filterRegion, paint); } break; } 1.11 +15 -6 xml-batik/sources/org/apache/batik/gvt/filter/BackgroundRable8Bit.java Index: BackgroundRable8Bit.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/filter/BackgroundRable8Bit.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- BackgroundRable8Bit.java 20 Sep 2001 19:36:05 -0000 1.10 +++ BackgroundRable8Bit.java 10 Apr 2002 21:36:45 -0000 1.11 @@ -35,6 +35,8 @@ import org.apache.batik.ext.awt.image.renderable.AbstractRable; import org.apache.batik.ext.awt.image.renderable.CompositeRable8Bit; import org.apache.batik.ext.awt.image.renderable.AffineRable8Bit; +import org.apache.batik.ext.awt.image.renderable.PadRable8Bit; +import org.apache.batik.ext.awt.image.PadMode; /** * This implementation of RenderableImage will render its input @@ -42,7 +44,7 @@ * createRendering methods. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: BackgroundRable8Bit.java,v 1.10 2001/09/20 19:36:05 deweese Exp $ + * @version $Id: BackgroundRable8Bit.java,v 1.11 2002/04/10 21:36:45 deweese Exp $ */ public class BackgroundRable8Bit extends AbstractRable { @@ -353,8 +355,6 @@ return false; } - Filter background = null; - /** * Creates a RenderedImage that represented a rendering of this image * using a given RenderContext. This is the most general way to obtain a @@ -388,12 +388,21 @@ Rectangle2D.intersect(r2d, aoiR2d, r2d); } - background = getBackground(node, null, r2d); - + Filter background = getBackground(node, null, r2d); + if ( background == null) return null; + + background = new PadRable8Bit(background, r2d, PadMode.ZERO_PAD); - RenderedImage ri = background.createRendering(renderContext); + + RenderedImage ri = background.createRendering + (new RenderContext(renderContext.getTransform(), r2d, + renderContext.getRenderingHints())); + // System.out.println("RI: [" + ri.getMinX() + ", " + // + ri.getMinY() + ", " + + // + ri.getWidth() + ", " + + // + ri.getHeight() + "]"); // org.ImageDisplay.showImage("BG: ", ri); return ri; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]