From 8a862123768654c3e55653d12fc4910dc99184bb Mon Sep 17 00:00:00 2001
From: Jeremias Maerki <jeremias@apache.org>
Date: Tue, 3 Jun 2008 14:13:27 +0000
Subject: Bugzilla #45115: Added a PCL-specific extension attribute on
 simple-page-master for controlling the simplex/duplex mode. Submitted by:
 Martin Edge <Martin.Edge.at.asmorphic.net.au>

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@662807 13f79535-47bb-0310-9956-ffa450edef68
---
 src/java/org/apache/fop/render/pcl/PCLGenerator.java | 13 +++++++++++++
 src/java/org/apache/fop/render/pcl/PCLRenderer.java  | 11 ++++++++---
 2 files changed, 21 insertions(+), 3 deletions(-)

(limited to 'src/java')

diff --git a/src/java/org/apache/fop/render/pcl/PCLGenerator.java b/src/java/org/apache/fop/render/pcl/PCLGenerator.java
index 5ca9a8bf9..6a4425012 100644
--- a/src/java/org/apache/fop/render/pcl/PCLGenerator.java
+++ b/src/java/org/apache/fop/render/pcl/PCLGenerator.java
@@ -229,6 +229,19 @@ public class PCLGenerator {
         writeCommand("&l" + selector + "H");
     }
 
+    /**
+     * Selects the duplexing mode for the page. 
+     * The parameter is usually printer-specific. 
+     * "0" means Simplex,
+     * "1" means Duplex, Long-Edge Binding,
+     * "2" means Duplex, Short-Edge Binding.
+     * @param selector the integer representing the duplexing mode of the page
+     * @throws IOException In case of an I/O error
+     */
+    public void selectDuplexMode(int selector) throws IOException {
+        writeCommand("&l" + selector + "S");
+    }
+
     /**
      * Clears the horizontal margins.
      * @throws IOException In case of an I/O error
diff --git a/src/java/org/apache/fop/render/pcl/PCLRenderer.java b/src/java/org/apache/fop/render/pcl/PCLRenderer.java
index 007ce4828..988517cc7 100644
--- a/src/java/org/apache/fop/render/pcl/PCLRenderer.java
+++ b/src/java/org/apache/fop/render/pcl/PCLRenderer.java
@@ -395,9 +395,7 @@ public class PCLRenderer extends PrintRenderer {
         return MIME_TYPE;
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    /** {@inheritDoc} */
     public void renderPage(PageViewport page) throws IOException, FOPException {
         saveGraphicsState();
 
@@ -408,6 +406,13 @@ public class PCLRenderer extends PrintRenderer {
             gen.selectPaperSource(Integer.parseInt(paperSource));
         }
 
+        // Is Page duplex?
+        String pageDuplex = page.getForeignAttributeValue(
+                new QName(PCLElementMapping.NAMESPACE, null, "duplex-mode"));
+        if (pageDuplex != null) {
+            gen.selectDuplexMode(Integer.parseInt(pageDuplex));
+        }
+
         //Page size
         final long pagewidth = Math.round(page.getViewArea().getWidth());
         final long pageheight = Math.round(page.getViewArea().getHeight());
-- 
cgit v1.2.3