Author: vhennebert
Date: Tue Aug 31 14:20:22 2010
New Revision: 991203

URL: http://svn.apache.org/viewvc?rev=991203&view=rev
Log:
Do not issue a warning if renderer configured to output PostScript level 3. 
Throw an error instead when it is not the case.
Pass the event producer around.

Modified:
    
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
    
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
    
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
    
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
    
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java

Modified: 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSDocumentHandler.java
 Tue Aug 31 14:20:22 2010
@@ -49,6 +49,7 @@ import org.apache.xmlgraphics.ps.dsc.Res
 import org.apache.xmlgraphics.ps.dsc.events.DSCCommentBoundingBox;
 import org.apache.xmlgraphics.ps.dsc.events.DSCCommentHiResBoundingBox;
 
+import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.MimeConstants;
 import 
org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler;
 import org.apache.fop.render.intermediate.IFContext;
@@ -104,6 +105,8 @@ public class PSDocumentHandler extends A
     private static final int COMMENT_DOCUMENT_TRAILER = 1;
     private static final int COMMENT_PAGE_TRAILER = 2;
 
+    private PSEventProducer eventProducer;
+
     /**
      * Default constructor.
      */
@@ -123,7 +126,9 @@ public class PSDocumentHandler extends A
     /** {...@inheritdoc} */
     public void setContext(IFContext context) {
         super.setContext(context);
-        this.psUtil = new PSRenderingUtil(context.getUserAgent());
+        FOUserAgent userAgent = context.getUserAgent();
+        this.psUtil = new PSRenderingUtil(userAgent);
+        eventProducer = 
PSEventProducer.Provider.get(userAgent.getEventBroadcaster());
     }
 
     /** {...@inheritdoc} */
@@ -142,7 +147,7 @@ public class PSDocumentHandler extends A
         try {
             OutputStream out;
             if (psUtil.isOptimizeResources()) {
-                this.tempFile = File.createTempFile("fop", null);
+                this.tempFile = File.createTempFile("fop", ".ps");
                 out = new java.io.FileOutputStream(this.tempFile);
                 out = new java.io.BufferedOutputStream(out);
             } else {
@@ -200,8 +205,7 @@ public class PSDocumentHandler extends A
         gen.writeDSCComment(DSCConstants.BEGIN_SETUP);
         PSRenderingUtil.writeSetupCodeList(gen, setupCodeList, "SetupCode");
         if (!psUtil.isOptimizeResources()) {
-            this.fontResources.addAll(PSFontUtils.writeFontDict(gen, fontInfo,
-                    
PSEventProducer.Provider.get(getUserAgent().getEventBroadcaster())));
+            this.fontResources.addAll(PSFontUtils.writeFontDict(gen, fontInfo, 
eventProducer));
         } else {
             gen.commentln("%FOPFontSetup"); //Place-holder, will be replaced 
in the second pass
         }
@@ -256,8 +260,8 @@ public class PSDocumentHandler extends A
         in = new java.io.BufferedInputStream(in);
         try {
             try {
-                ResourceHandler handler = new ResourceHandler(getUserAgent(), 
this.fontInfo,
-                        resTracker, this.formResources);
+                ResourceHandler handler = new ResourceHandler(getUserAgent(), 
eventProducer,
+                        this.fontInfo, resTracker, this.formResources);
                 handler.process(in, this.outputStream,
                         this.currentPageNumber, this.documentBoundingBox);
                 this.outputStream.flush();

Modified: 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.java
 Tue Aug 31 14:20:22 2010
@@ -29,7 +29,7 @@ public interface PSEventProducer extends
 
     /** Provider class for the event producer. */
     final class Provider {
-        
+
         private Provider() {
         }
 
@@ -54,10 +54,10 @@ public interface PSEventProducer extends
     void postscriptDictionaryParseError(Object source, String content, 
Exception e);
 
     /**
-     * PostScript Level 3 features are being used.
+     * PostScript Level 3 features are necessary.
      *
      * @param source the event source
-     * @event.severity WARN
+     * @event.severity FATAL
      */
-    void postscriptLevel3Used(Object source);
+    void postscriptLevel3Needed(Object source);
 }

Modified: 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
 (original)
+++ 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSEventProducer.xml
 Tue Aug 31 14:20:22 2010
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <catalogue xml:lang="en">
   <message key="postscriptDictionaryParseError">Failed to parse dictionary 
string. Reason: {e}, content = "{content}"</message>
-  <message key="postscriptLevel3Used">PostScript Level 3 features are needed 
to handle this document. Please make sure that your printer supports PostScript 
Level 3.</message>
+  <message key="postscriptLevel3Needed">PostScript Level 3 features are needed 
to handle this document.</message>
 </catalogue>

Modified: 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/PSFontUtils.java
 Tue Aug 31 14:20:22 2010
@@ -77,9 +77,19 @@ public class PSFontUtils extends org.apa
      */
     public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo)
                 throws IOException {
-        return writeFontDict(gen, fontInfo, (PSEventProducer) null);
+        return writeFontDict(gen, fontInfo, null);
     }
 
+    /**
+     * Generates the PostScript code for the font dictionary. This method 
should only be
+     * used if no "resource optimization" is performed, i.e. when the fonts 
are not embedded
+     * in a second pass.
+     * @param gen PostScript generator to use for output
+     * @param fontInfo available fonts
+     * @param eventProducer to report events
+     * @return a Map of PSResource instances representing all defined fonts 
(key: font key)
+     * @throws IOException in case of an I/O problem
+     */
     public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo,
             PSEventProducer eventProducer) throws IOException {
         return writeFontDict(gen, fontInfo, fontInfo.getFonts(), true, 
eventProducer);
@@ -92,12 +102,13 @@ public class PSFontUtils extends org.apa
      * @param gen PostScript generator to use for output
      * @param fontInfo available fonts
      * @param fonts the set of fonts to work with
+     * @param eventProducer the event producer
      * @return a Map of PSResource instances representing all defined fonts 
(key: font key)
      * @throws IOException in case of an I/O problem
      */
-    public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo, Map 
fonts)
-                throws IOException {
-        return writeFontDict(gen, fontInfo, fonts, false, null);
+    public static Map writeFontDict(PSGenerator gen, FontInfo fontInfo, Map 
fonts,
+            PSEventProducer eventProducer) throws IOException {
+        return writeFontDict(gen, fontInfo, fonts, false, eventProducer);
     }
 
     /**
@@ -224,14 +235,12 @@ public class PSFontUtils extends org.apa
                     if (in != null) {
                         if (fontType == FontType.TYPE0) {
                             if (gen.embedIdentityH()) {
+                                checkPostScriptVersion(gen, eventProducer);
                                 /*
                                  * First CID-keyed font to be embedded; add
                                  * %%IncludeResource: comment for ProcSet 
CIDInit.
                                  */
                                 gen.includeProcsetCIDInitResource();
-                                if (eventProducer != null) {
-                                    eventProducer.postscriptLevel3Used(gen);
-                                }
                             }
                             PSResource cidFontResource = embedCIDFont(gen, 
(MultiByteFont) tf, in);
                             fontResource = 
PSFontResource.createFontResource(fontRes,
@@ -268,6 +277,19 @@ public class PSFontUtils extends org.apa
         return fontResource;
     }
 
+    private static void checkPostScriptVersion(PSGenerator gen, 
PSEventProducer eventProducer) {
+        if (gen.getPSLevel() < 3) {
+            if (eventProducer != null) {
+                eventProducer.postscriptLevel3Needed(gen);
+            } else {
+                throw new IllegalStateException("PostScript Level 3 is"
+                        + " required to use TrueType fonts,"
+                        + " configured level is "
+                        + gen.getPSLevel());
+            }
+        }
+    }
+
     private static void embedTrueTypeFont(PSGenerator gen,
             SingleByteFont font, InputStream fontStream) throws IOException {
         /* See Adobe Technical Note #5012, "The Type 42 Font Format 
Specification" */
@@ -607,6 +629,7 @@ public class PSFontUtils extends org.apa
     private static PSResource defineDerivedTrueTypeFont(PSGenerator gen,
             PSEventProducer eventProducer, String baseFontName, String 
fontName,
             SingleByteEncoding encoding, List cmaps) throws IOException {
+        checkPostScriptVersion(gen, eventProducer);
         PSResource res = new PSResource(PSResource.TYPE_FONT, fontName);
         gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE, res);
         gen.commentln("%XGCDependencies: font " + baseFontName);

Modified: 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java?rev=991203&r1=991202&r2=991203&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/ps/ResourceHandler.java
 Tue Aug 31 14:20:22 2010
@@ -83,6 +83,8 @@ public class ResourceHandler implements 
     private FOUserAgent userAgent;
     private FontInfo fontInfo;
 
+    private PSEventProducer eventProducer;
+
     private ResourceTracker resTracker;
 
     //key: URI, values PSImageFormResource
@@ -93,13 +95,15 @@ public class ResourceHandler implements 
     /**
      * Main constructor.
      * @param userAgent the FO user agent
+     * @param eventProducer the event producer
      * @param fontInfo the font information
      * @param resTracker the resource tracker to use
      * @param formResources Contains all forms used by this document 
(maintained by PSRenderer)
      */
-    public ResourceHandler(FOUserAgent userAgent, FontInfo fontInfo,
-            ResourceTracker resTracker, Map formResources) {
+    public ResourceHandler(FOUserAgent userAgent, PSEventProducer 
eventProducer,
+            FontInfo fontInfo, ResourceTracker resTracker, Map formResources) {
         this.userAgent = userAgent;
+        this.eventProducer = eventProducer;
         this.fontInfo = fontInfo;
         this.resTracker = resTracker;
         determineInlineForms(formResources);
@@ -222,7 +226,7 @@ public class ResourceHandler implements 
         if (fontSetupPlaceholder == null) {
             throw new DSCException("Didn't find %FOPFontSetup comment in 
stream");
         }
-        PSFontUtils.writeFontDict(gen, fontInfo, fontInfo.getUsedFonts());
+        PSFontUtils.writeFontDict(gen, fontInfo, fontInfo.getUsedFonts(), 
eventProducer);
         generateForms(globalFormResources, gen);
 
         //Skip the prolog and to the first page



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to