diff options
author | Keiron Liddle <keiron@apache.org> | 2001-10-12 06:40:13 +0000 |
---|---|---|
committer | Keiron Liddle <keiron@apache.org> | 2001-10-12 06:40:13 +0000 |
commit | 49459fd44b6fd5bb44ce71beb2b0f5c0bcf06fc1 (patch) | |
tree | dcad463e87b7f8f7c211211da76485cdad0e8e90 /src/org/apache/fop/svg/PDFImageElementBridge.java | |
parent | cd8fe5f0219eedfa1a634e5c5e5c99efaa395f6a (diff) | |
download | xmlgraphics-fop-49459fd44b6fd5bb44ce71beb2b0f5c0bcf06fc1.tar.gz xmlgraphics-fop-49459fd44b6fd5bb44ce71beb2b0f5c0bcf06fc1.zip |
changed api associated with batik to current batik
added a half implemented bridge for jpg images
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194499 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/org/apache/fop/svg/PDFImageElementBridge.java')
-rw-r--r-- | src/org/apache/fop/svg/PDFImageElementBridge.java | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/src/org/apache/fop/svg/PDFImageElementBridge.java b/src/org/apache/fop/svg/PDFImageElementBridge.java new file mode 100644 index 000000000..7bfb7a1fb --- /dev/null +++ b/src/org/apache/fop/svg/PDFImageElementBridge.java @@ -0,0 +1,141 @@ +/* + * $Id$ + * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * For details on use and redistribution please refer to the + * LICENSE file included with these sources. + */ + +package org.apache.fop.svg; + +import java.awt.Cursor; +import java.awt.geom.AffineTransform; + +import org.apache.batik.bridge.*; + +import org.apache.batik.css.HiddenChildElementSupport; +import org.apache.batik.gvt.CompositeGraphicsNode; +import org.apache.batik.gvt.GraphicsNode; + +import org.apache.fop.pdf.*; +import org.apache.fop.image.*; +import org.apache.fop.apps.*; + +import org.w3c.dom.Element; +import org.w3c.dom.events.Event; +import org.w3c.dom.events.EventListener; +import org.w3c.dom.events.EventTarget; +import org.w3c.dom.svg.SVGAElement; + +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.Graphics2D; +import java.awt.color.ICC_Profile; +import java.awt.geom.AffineTransform; +import java.awt.geom.Rectangle2D; +import java.awt.geom.Rectangle2D; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +import org.apache.batik.dom.svg.SVGOMDocument; +import org.apache.batik.dom.util.XLinkSupport; +import org.apache.batik.ext.awt.color.ICCColorSpaceExt; +import org.apache.batik.ext.awt.image.renderable.ClipRable8Bit; +import org.apache.batik.ext.awt.image.renderable.Filter; +import org.apache.batik.ext.awt.image.spi.ImageTagRegistry; +import org.apache.batik.gvt.CompositeGraphicsNode; +import org.apache.batik.gvt.GraphicsNode; +import org.apache.batik.gvt.ImageNode; +import org.apache.batik.gvt.RasterImageNode; +import org.apache.batik.gvt.AbstractGraphicsNode; +import org.apache.batik.gvt.filter.GraphicsNodeRable8Bit; +import org.apache.batik.util.ParsedURL; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.css.CSSPrimitiveValue; +import org.w3c.dom.css.CSSStyleDeclaration; +import org.w3c.dom.svg.SVGDocument; +import org.w3c.dom.svg.SVGSVGElement; + +/** + * Bridge class for the <image> element when jpeg images. + * + * @author <a href="mailto:keiron@aftexsw.com">Keiron Liddle</a> + */ +public class PDFImageElementBridge extends SVGImageElementBridge { + + /** + * Constructs a new bridge for the <image> element. + */ + public PDFImageElementBridge() {} +/* + protected GraphicsNode createRasterImageNode(BridgeContext ctx, + Element e, ParsedURL purl) { + + try { + JpegImage jpeg = new JpegImage(new URL(purl.toString())); + PDFFilter filter = jpeg.getPDFFilter(); + PDFJpegNode node = new PDFJpegNode(jpeg); + Rectangle2D bounds = node.getPrimitiveBounds(); + float [] vb = new float[4]; + vb[0] = 0; // x + vb[1] = 0; // y + vb[2] = (float) bounds.getWidth(); // width + vb[3] = (float) bounds.getHeight(); // height + + // handles the 'preserveAspectRatio', 'overflow' and 'clip' and sets the + // appropriate AffineTransform to the image node + initializeViewport(ctx, e, node, vb, bounds); + + return node; + } catch (Exception ex) { + } + + return super.createRasterImageNode(ctx, e, purl); + } +*/ + public static class PDFJpegNode extends AbstractGraphicsNode { + JpegImage jpeg; + public PDFJpegNode(JpegImage j) { + jpeg = j; + } + + public Shape getOutline() { + return getPrimitiveBounds(); + } + + public void primitivePaint(Graphics2D g2d) { + if (g2d instanceof PDFGraphics2D) { + PDFGraphics2D pdfg = (PDFGraphics2D) g2d; + pdfg.setTransform(getTransform()); + float x = 0; + float y = 0; + try { + float width = jpeg.getWidth(); + float height = jpeg.getHeight(); + pdfg.addJpegImage(jpeg, x, y, width, height); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public Rectangle2D getGeometryBounds() { + return getPrimitiveBounds(); + } + + public Rectangle2D getPrimitiveBounds() { + try { + return new Rectangle2D.Double(0, 0, jpeg.getWidth(), + jpeg.getHeight()); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + } + +} |