From: Jeremias Maerki Date: Mon, 14 Nov 2005 14:28:59 +0000 (+0000) Subject: Bugzilla #37330: X-Git-Tag: fop-0_90-alpha1~27 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7827a12bd930176d38d71c3c00ff75754c5aaec3;p=xmlgraphics-fop.git Bugzilla #37330: 1) The jpeg registration now includes the hashCode in addition to the jpegCount as this prevents images being rused when multiple SVG fragments are included in a single FO. 2) Added a createBridgeContext to PDFBridgeContext so that 'sub contexts' (image element) inherit the new bridges. Submitted by: Thomas Deweese git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@344130 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/svg/PDFBridgeContext.java b/src/java/org/apache/fop/svg/PDFBridgeContext.java index 486cadb97..354fec690 100644 --- a/src/java/org/apache/fop/svg/PDFBridgeContext.java +++ b/src/java/org/apache/fop/svg/PDFBridgeContext.java @@ -21,6 +21,7 @@ package org.apache.fop.svg; import java.awt.geom.AffineTransform; import org.apache.batik.bridge.BridgeContext; +import org.apache.batik.bridge.DocumentLoader; import org.apache.batik.bridge.UserAgent; import org.apache.fop.fonts.FontInfo; @@ -37,9 +38,28 @@ public class PDFBridgeContext extends BridgeContext { /** * Constructs a new bridge context. * @param userAgent the user agent - * @param fontInfo the font list for the text painter, may be null in which case text is - * painted as shapes - * @param linkTransform AffineTransform to properly place links, may be null + * @param loader the Document Loader to use for referenced documents. + * @param fontInfo the font list for the text painter, may be null + * in which case text is painted as shapes + * @param linkTransform AffineTransform to properly place links, + * may be null + */ + public PDFBridgeContext(UserAgent userAgent, + DocumentLoader loader, + FontInfo fontInfo, + AffineTransform linkTransform) { + super(userAgent, loader); + this.fontInfo = fontInfo; + this.linkTransform = linkTransform; + } + + /** + * Constructs a new bridge context. + * @param userAgent the user agent + * @param fontInfo the font list for the text painter, may be null + * in which case text is painted as shapes + * @param linkTransform AffineTransform to properly place links, + * may be null */ public PDFBridgeContext(UserAgent userAgent, FontInfo fontInfo, AffineTransform linkTransform) { @@ -51,8 +71,8 @@ public class PDFBridgeContext extends BridgeContext { /** * Constructs a new bridge context. * @param userAgent the user agent - * @param fontInfo the font list for the text painter, may be null in which case text is - * painted as shapes + * @param fontInfo the font list for the text painter, may be null + * in which case text is painted as shapes */ public PDFBridgeContext(UserAgent userAgent, FontInfo fontInfo) { this(userAgent, fontInfo, null); @@ -76,5 +96,10 @@ public class PDFBridgeContext extends BridgeContext { putBridge(new PDFImageElementBridge()); } - -} \ No newline at end of file + + // Make sure any 'sub bridge contexts' also have our bridges. + public BridgeContext createBridgeContext() { + return new PDFBridgeContext(getUserAgent(), getDocumentLoader(), + fontInfo, linkTransform); + } +} diff --git a/src/java/org/apache/fop/svg/PDFGraphics2D.java b/src/java/org/apache/fop/svg/PDFGraphics2D.java index 7a1454710..398e36f39 100644 --- a/src/java/org/apache/fop/svg/PDFGraphics2D.java +++ b/src/java/org/apache/fop/svg/PDFGraphics2D.java @@ -382,7 +382,10 @@ public class PDFGraphics2D extends AbstractGraphics2D { public void addJpegImage(JpegImage jpeg, float x, float y, float width, float height) { preparePainting(); - String key = "__AddJPEG_" + jpegCount[0]; + // Need to include hash code as when invoked from FO you + // may have several 'independent' PDFGraphics2D so the + // count is not enough. + String key = "__AddJPEG_" + hashCode() + "_" + jpegCount[0]; jpegCount[0]++; FopPDFImage fopimage = new FopPDFImage(jpeg, key); int xObjectNum = this.pdfDoc.addImage(resourceContext,