]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #37330:
authorJeremias Maerki <jeremias@apache.org>
Mon, 14 Nov 2005 14:28:59 +0000 (14:28 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 14 Nov 2005 14:28:59 +0000 (14:28 +0000)
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 <deweese.at.apache.org>

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@344130 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/svg/PDFBridgeContext.java
src/java/org/apache/fop/svg/PDFGraphics2D.java

index 486cadb9722946f9fef9800ac8a932500a764b27..354fec690102930491db589a9b72c93608b39d56 100644 (file)
@@ -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);
+    }
+}
index 7a1454710c76b5d07c5e6d767d0570d083532cd5..398e36f39b86477ebc66f94ea428d8b0dc38ba13 100644 (file)
@@ -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,