]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Now using the "font" filter list entry for font streams.
authorJeremias Maerki <jeremias@apache.org>
Mon, 16 Feb 2009 08:09:29 +0000 (08:09 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 16 Feb 2009 08:09:29 +0000 (08:09 +0000)
Made T1 and TTF streams children of a commons base class.
Refactored default filter addition a bit.

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

src/java/org/apache/fop/pdf/AbstractPDFFontStream.java [new file with mode: 0644]
src/java/org/apache/fop/pdf/AbstractPDFStream.java
src/java/org/apache/fop/pdf/PDFImageXObject.java
src/java/org/apache/fop/pdf/PDFMetadata.java
src/java/org/apache/fop/pdf/PDFT1Stream.java
src/java/org/apache/fop/pdf/PDFTTFStream.java

diff --git a/src/java/org/apache/fop/pdf/AbstractPDFFontStream.java b/src/java/org/apache/fop/pdf/AbstractPDFFontStream.java
new file mode 100644 (file)
index 0000000..f3d005b
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.pdf;
+
+
+/**
+ * Base class for PDF font streams.
+ */
+public abstract class AbstractPDFFontStream extends AbstractPDFStream {
+
+    /**
+     * Main constructor.
+     */
+    public AbstractPDFFontStream() {
+        super();
+    }
+
+    /** {@inheritDoc} */
+    protected void setupFilterList() {
+        addDefaultFilter(PDFFilterList.FONT_FILTER);
+        super.setupFilterList();
+    }
+
+}
index 1e1f1f259af0b7f020203ce3c13836876e95ba3f..fc853b5121eab7da4cbc9668cc8255be0850a3f4 100644 (file)
@@ -47,13 +47,21 @@ public abstract class AbstractPDFStream extends PDFDictionary {
      * from outside.
      */
     protected void setupFilterList() {
+        addDefaultFilter(PDFFilterList.DEFAULT_FILTER);
+        prepareImplicitFilters();
+        getDocument().applyEncryption(this);
+    }
+
+    /**
+     * Adds the default filter to the filter list if the filter list hasn't been initialized, yet.
+     * @param filterName the name of the default filter to use
+     */
+    protected void addDefaultFilter(String filterName) {
         if (!getFilterList().isInitialized()) {
             getFilterList().addDefaultFilters(
                 getDocumentSafely().getFilterMap(),
-                PDFFilterList.DEFAULT_FILTER);
+                filterName);
         }
-        prepareImplicitFilters();
-        getDocument().applyEncryption(this);
     }
 
     /**
index 7104422e7f4b049163b7aa8b050d56924c4ece40..a69d9e8def6f4a899ce19bda1a9c486d829896c5 100644 (file)
@@ -164,11 +164,7 @@ public class PDFImageXObject extends PDFXObject {
      * {@inheritDoc}
      */
     protected void setupFilterList() {
-        if (!getFilterList().isInitialized()) {
-            getFilterList().addDefaultFilters(
-                getDocumentSafely().getFilterMap(),
-                pdfimage.getFilterHint());
-        }
+        addDefaultFilter(pdfimage.getFilterHint());
         super.setupFilterList();
     }
 
index 6d15a67d4c1e56c262e6778d7e9abd4fb129b65e..5008183ef62f4c350189ded1a7534891555df9c7 100644 (file)
@@ -60,11 +60,7 @@ public class PDFMetadata extends PDFStream {
 
     /** {@inheritDoc} */
     protected void setupFilterList() {
-        if (!getFilterList().isInitialized()) {
-            getFilterList().addDefaultFilters(
-                getDocumentSafely().getFilterMap(),
-                PDFFilterList.METADATA_FILTER);
-        }
+        addDefaultFilter(PDFFilterList.METADATA_FILTER);
         super.setupFilterList();
     }
 
index 8181287b58f2175d1b3bfa5bebdd14d0a337ed4c..d723625ebe845f85ed49e9df15aae367340c9fbb 100644 (file)
@@ -28,13 +28,11 @@ import org.apache.fop.fonts.type1.PFBData;
 /**
  * Special PDFStream for embedding Type 1 fonts.
  */
-public class PDFT1Stream extends AbstractPDFStream {
+public class PDFT1Stream extends AbstractPDFFontStream {
 
     private PFBData pfb;
 
-    /**
-     * {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     protected int getSizeHint() throws IOException {
         if (this.pfb != null) {
             return pfb.getLength();
index 6c68ea8bf3bf61f25e26358f3881f35e1243b014..643ddb1e857b8f06f0a3d2f207291f6672b61c35 100644 (file)
 package org.apache.fop.pdf;
 
 import java.io.IOException;
+import java.io.OutputStream;
 
 /**
  * Special PDFStream for embeddable TrueType fonts.
  */
-public class PDFTTFStream extends PDFStream {
+public class PDFTTFStream extends AbstractPDFFontStream {
 
     private int origLength;
+    private byte[] ttfData;
 
     /**
      * Main constructor
@@ -37,6 +39,15 @@ public class PDFTTFStream extends PDFStream {
         origLength = len;
     }
 
+    /** {@inheritDoc} */
+    protected int getSizeHint() throws IOException {
+        if (this.ttfData != null) {
+            return ttfData.length;
+        } else {
+            return 0; //no hint available
+        }
+    }
+
     /**
      * Overload the base object method so we don't have to copy
      * byte arrays around so much
@@ -53,6 +64,11 @@ public class PDFTTFStream extends PDFStream {
         return length;
     }
 
+    /** {@inheritDoc} */
+    protected void outputRawStreamData(OutputStream out) throws IOException {
+        out.write(this.ttfData);
+    }
+
     /** {@inheritDoc} */
     protected void populateStreamDict(Object lengthEntry) {
         put("Length1", origLength);
@@ -66,8 +82,8 @@ public class PDFTTFStream extends PDFStream {
      * @throws IOException in case of an I/O problem
      */
     public void setData(byte[] data, int size) throws IOException {
-        this.data.clear();
-        getBufferOutputStream().write(data, 0, size);
+        this.ttfData = new byte[size];
+        System.arraycopy(data, 0, this.ttfData, 0, size);
     }
 
 }