cjolif 01/09/19 05:52:32 Modified: sources/org/apache/batik/svggen AbstractImageHandlerEncoder.java DefaultImageHandler.java SVGGraphics2DUnitTester.java Log: reduce dependencies from SVGGraphics2D on other modules Revision Changes Path 1.10 +44 -7 xml-batik/sources/org/apache/batik/svggen/AbstractImageHandlerEncoder.java Index: AbstractImageHandlerEncoder.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/AbstractImageHandlerEncoder.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- AbstractImageHandlerEncoder.java 2001/06/21 12:44:37 1.9 +++ AbstractImageHandlerEncoder.java 2001/09/19 12:52:32 1.10 @@ -9,18 +9,17 @@ package org.apache.batik.svggen; import java.awt.Graphics2D; +import java.awt.Dimension; import java.awt.Image; import java.awt.image.RenderedImage; import java.awt.image.BufferedImage; import java.awt.image.renderable.RenderableImage; import java.awt.geom.AffineTransform; +import java.lang.reflect.Method; import java.io.File; import java.net.MalformedURLException; -import java.awt.Dimension; import org.w3c.dom.Element; -import org.apache.batik.ext.awt.image.GraphicsUtil; - /** * This abstract implementation of the ImageHandler interface * is intended to be the base class for ImageHandlers that generate @@ -30,7 +29,7 @@ * of the file created by this handler. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: AbstractImageHandlerEncoder.java,v 1.9 2001/06/21 12:44:37 deweese Exp $ + * @version $Id: AbstractImageHandlerEncoder.java,v 1.10 2001/09/19 12:52:32 cjolif Exp $ * @see org.apache.batik.svggen.SVGGraphics2D * @see org.apache.batik.svggen.ImageHandlerJPEGEncoder * @see org.apache.batik.svggen.ImageHandlerPNGEncoder @@ -48,6 +47,44 @@ */ private String urlRoot = ""; + // for createGraphics method. + private static Method createGraphics = null; + private static boolean initDone = false; + private final static Class[] paramc = new Class[] {BufferedImage.class}; + private static Object[] paramo = null; + + /** + * This method creates a <code>Graphics2D</code> from a + * <code>BufferedImage</code>. If Batik extensions to AWT are + * in the CLASSPATH it uses them, otherwise, it uses the regular + * AWT method. + */ + private static Graphics2D createGraphics(BufferedImage buf) { + if (!initDone) { + try { + Class clazz = Class.forName("org.apache.batik.ext.awt.image.GraphicsUtil"); + createGraphics = clazz.getMethod("createGraphics", paramc); + paramo = new Object[1]; + } catch (Throwable t) { + // happen only if Batik extensions are not their + } finally { + initDone = true; + } + } + if (createGraphics == null) + return buf.createGraphics(); + else { + paramo[0] = buf; + Graphics2D g2d = null; + try { + g2d = (Graphics2D)createGraphics.invoke(null, paramo); + } catch (Exception e) { + // should not happened + } + return g2d; + } + } + /** * @param generatorContext the context in which the handler will work. * @param imageDir directory where this handler should generate images. @@ -91,7 +128,7 @@ image.getHeight(null)); BufferedImage buf = buildBufferedImage(size); - Graphics2D g = GraphicsUtil.createGraphics(buf); + Graphics2D g = createGraphics(buf); g.drawImage(image, 0, 0, null); g.dispose(); @@ -111,7 +148,7 @@ Dimension size = new Dimension(image.getWidth(), image.getHeight()); BufferedImage buf = buildBufferedImage(size); - Graphics2D g = GraphicsUtil.createGraphics(buf); + Graphics2D g = createGraphics(buf); g.drawRenderedImage(image, IDENTITY); g.dispose(); @@ -132,7 +169,7 @@ (int)Math.ceil(image.getHeight())); BufferedImage buf = buildBufferedImage(size); - Graphics2D g = GraphicsUtil.createGraphics(buf); + Graphics2D g = createGraphics(buf); g.drawRenderableImage(image, IDENTITY); g.dispose(); 1.8 +4 -3 xml-batik/sources/org/apache/batik/svggen/DefaultImageHandler.java Index: DefaultImageHandler.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/DefaultImageHandler.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- DefaultImageHandler.java 2001/04/02 15:48:08 1.7 +++ DefaultImageHandler.java 2001/09/19 12:52:32 1.8 @@ -20,13 +20,14 @@ * attribute and sets the width and height of the element. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: DefaultImageHandler.java,v 1.7 2001/04/02 15:48:08 cjolif Exp $ + * @version $Id: DefaultImageHandler.java,v 1.8 2001/09/19 12:52:32 cjolif Exp $ * @see org.apache.batik.svggen.SVGGraphics2D */ public class DefaultImageHandler implements ImageHandler, ErrorConstants { - // reducing the dependency on dom package by doing this only once: + // duplicate the string here to remove dependencies on + // org.apache.batik.dom.util.XLinkSupport static final String XLINK_NAMESPACE_URI = - org.apache.batik.dom.util.XLinkSupport.XLINK_NAMESPACE_URI; + "http://www.w3.org/1999/xlink"; /** * Build a <code>DefaultImageHandler</code>. 1.8 +6 -3 xml-batik/sources/org/apache/batik/svggen/SVGGraphics2DUnitTester.java Index: SVGGraphics2DUnitTester.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGGraphics2DUnitTester.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- SVGGraphics2DUnitTester.java 2001/08/03 04:21:53 1.7 +++ SVGGraphics2DUnitTester.java 2001/09/19 12:52:32 1.8 @@ -31,7 +31,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Christophe Jolif</a> * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: SVGGraphics2DUnitTester.java,v 1.7 2001/08/03 04:21:53 bella Exp $ + * @version $Id: SVGGraphics2DUnitTester.java,v 1.8 2001/09/19 12:52:32 cjolif Exp $ */ public class SVGGraphics2DUnitTester implements SVGConstants { private String[] args; @@ -338,7 +338,8 @@ imageHandler.handleImage((RenderedImage)testImage, imageElement, getContext(domFactory)); - System.out.println("Generated xlink:href is : " + imageElement.getAttributeNS(null, SVGSyntax.SVG_HREF_ATTRIBUTE)); + System.out.println("Generated xlink:href is : " + + imageElement.getAttributeNS(AbstractImageHandlerEncoder.XLINK_NAMESPACE_URI, "href")); } public void testImageHandlerPNGEncoder() throws Exception { @@ -366,7 +367,9 @@ imageHandler.handleImage((RenderedImage)testImage, imageElement, getContext(domFactory)); - System.out.println("Generated xlink:href is : " + imageElement.getAttributeNS(null, SVGSyntax.ATTR_XLINK_HREF)); + System.out.println("Generated xlink:href is : " + imageElement. + getAttributeNS(AbstractImageHandlerEncoder.XLINK_NAMESPACE_URI, + "href")); } public void testSVGAlphaComposite() throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]