You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2006/01/20 14:09:18 UTC

svn commit: r370801 - in /xmlgraphics/fop/trunk/src/java/org/apache/fop: area/ layoutmgr/ render/ render/java2d/ render/pdf/ render/ps/ render/xml/

Author: jeremias
Date: Fri Jan 20 05:09:05 2006
New Revision: 370801

URL: http://svn.apache.org/viewcvs?rev=370801&view=rev
Log:
(Re?)added integer page number to the PageViewport.
Serializing both the integer and the formatted value to the area tree XML. In the XML "nr" is now "formatted-nr" and "nr" is now the integer value. This doesn't have any impact on our layout engine tests as we don't seem to use a non-default for page numbers.
Make the current PageViewport available to XMLHandler through the RenderContext.
I need this for Barcode4J so the current page number can be used as part of a barcode message.

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/area/PageViewport.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/Page.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/RendererContextConstants.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeParser.java Fri Jan 20 05:09:05 2006
@@ -218,7 +218,9 @@
                             throw new IllegalStateException("currentPageViewport must be null");
                         }
                         Rectangle2D viewArea = parseRect(attributes.getValue("bounds"));
-                        currentPageViewport = new PageViewport(viewArea, attributes.getValue("nr"));
+                        int pageNumber = getAttributeAsInteger(attributes, "nr", -1);
+                        String pageNumberString = attributes.getValue("formatted-nr");
+                        currentPageViewport = new PageViewport(viewArea, pageNumber, pageNumberString);
                     } else if ("page".equals(localName)) {
                         Page p = new Page();
                         currentPageViewport.setPage(p);

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/PageViewport.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/PageViewport.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/PageViewport.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/PageViewport.java Fri Jan 20 05:09:05 2006
@@ -48,6 +48,7 @@
     private Page page;
     private Rectangle2D viewArea;
     private String simplePageMasterName;
+    private int pageNumber = -1;
     private String pageNumberString = null;
     private int pageIndex = -1; //-1 = undetermined
     private boolean blank;
@@ -82,18 +83,20 @@
     /**
      * Create a page viewport.
      * @param spm SimplePageMaster indicating the page and region dimensions
+     * @param pageNumber the page number
      * @param pageStr String representation of the page number
      * @param blank true if this is a blank page
      */
-    public PageViewport(SimplePageMaster spm, String pageStr, boolean blank) {
+    public PageViewport(SimplePageMaster spm, int pageNumber, String pageStr, boolean blank) {
         this.simplePageMasterName = spm.getMasterName();
         this.extensionAttachments = spm.getExtensionAttachments();
         this.blank = blank;
         int pageWidth = spm.getPageWidth().getValue();
         int pageHeight = spm.getPageHeight().getValue();
-        pageNumberString = pageStr;
-        viewArea = new Rectangle(0, 0, pageWidth, pageHeight);
-        page = new Page(spm);
+        this.pageNumber = pageNumber;
+        this.pageNumberString = pageStr;
+        this.viewArea = new Rectangle(0, 0, pageWidth, pageHeight);
+        this.page = new Page(spm);
         createSpan(false);
     }
 
@@ -103,6 +106,7 @@
      */
     public PageViewport(PageViewport original) {
         this.extensionAttachments = new java.util.ArrayList(original.extensionAttachments);
+        this.pageNumber = original.pageNumber;
         this.pageNumberString = original.pageNumberString;
         this.page = (Page)original.page.clone();
         this.viewArea = (Rectangle2D)original.viewArea.clone();
@@ -111,10 +115,12 @@
     /**
      * Constructor used by the area tree parser.
      * @param viewArea the view area
+     * @param pageNumber the page number
      * @param pageStr String representation of the page number
      */
-    public PageViewport(Rectangle2D viewArea, String pageStr) {
+    public PageViewport(Rectangle2D viewArea, int pageNumber, String pageStr) {
         this.viewArea = viewArea;
+        this.pageNumber = pageNumber;
         this.pageNumberString = pageStr;
     }
     
@@ -144,6 +150,14 @@
 
     /**
      * Get the page number of this page.
+     * @return the integer value that represents this page
+     */
+    public int getPageNumber() {
+        return pageNumber;
+    }
+
+    /**
+     * Get the page number of this page.
      * @return the string that represents this page
      */
     public String getPageNumberString() {
@@ -152,6 +166,7 @@
 
     /**
      * Sets the page index of the page in this rendering run.
+     * (This is not the same as the page number!)
      * @param index the page index (zero-based), -1 if it is undetermined
      */
     public void setPageIndex(int index) {

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/Page.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/Page.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/Page.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/Page.java Fri Jan 20 05:09:05 2006
@@ -35,12 +35,13 @@
     /**
      * Main constructor
      * @param spm the simple-page-master used for this page
+     * @param pageNumber the page number (as an int)
      * @param pageNumberStr the page number (as a String) 
      * @param blank true if this is a blank page
      */
-    public Page(SimplePageMaster spm, String pageNumberStr, boolean blank) {
+    public Page(SimplePageMaster spm, int pageNumber, String pageNumberStr, boolean blank) {
         this.spm = spm;
-        this.pageViewport = new PageViewport(spm, pageNumberStr, blank);
+        this.pageViewport = new PageViewport(spm, pageNumber, pageNumberStr, blank);
     }
     
     /** @return the simple-page-master that created this page */

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java Fri Jan 20 05:09:05 2006
@@ -882,7 +882,7 @@
                         + spm.getMasterName() + "'.  FOP presently "
                         + "does not support this.");
                 }
-                Page page = new Page(spm, pageNumberString, bIsBlank);
+                Page page = new Page(spm, index, pageNumberString, bIsBlank);
                 cachedPages.add(page);
             } catch (FOPException e) {
                 //TODO Maybe improve. It'll mean to propagate this exception up several

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractRenderer.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractRenderer.java Fri Jan 20 05:09:05 2006
@@ -111,6 +111,9 @@
      */
     protected int containingIPPosition = 0;
 
+    /** the currently active PageViewport */
+    protected PageViewport currentPageViewport;
+    
     private Set warnedXMLHandlers;
     
     /**
@@ -161,6 +164,11 @@
         return null;
     }
     
+    /** @return the current PageViewport or null, if none is active */
+    protected PageViewport getCurrentPageViewport() {
+        return this.currentPageViewport;
+    }
+    
     /**
      * Prepare a page for rendering. This is called if the renderer supports
      * out of order rendering. The renderer should prepare the page so that a
@@ -216,8 +224,13 @@
     public void renderPage(PageViewport page)
         throws IOException, FOPException {
 
-        Page p = page.getPage();
-        renderPageAreas(p);
+        this.currentPageViewport = page;
+        try {
+            Page p = page.getPage();
+            renderPageAreas(p);
+        } finally {
+            this.currentPageViewport = null;
+        }
     }
 
     /**

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/RendererContextConstants.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/RendererContextConstants.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/RendererContextConstants.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/RendererContextConstants.java Fri Jan 20 05:09:05 2006
@@ -26,6 +26,9 @@
     /** The output stream that the document is being sent to. */
     String OUTPUT_STREAM = "outputStream";
     
+    /** The current PageViewport being rendered. */
+    String PAGE_VIEWPORT = "pageViewport";
+    
     /** The target width of the image being painted. */
     String WIDTH = "width";
 

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java Fri Jan 20 05:09:05 2006
@@ -263,67 +263,72 @@
      */
     public BufferedImage getPageImage(PageViewport pageViewport) {
 
-        Rectangle2D bounds = pageViewport.getViewArea();
-        pageWidth = (int) Math.round(bounds.getWidth() / 1000f);
-        pageHeight = (int) Math.round(bounds.getHeight() / 1000f);
-
-        log.info(
-                "Rendering Page " + pageViewport.getPageNumberString()
-                        + " (pageWidth " + pageWidth + ", pageHeight "
-                        + pageHeight + ")");
-
-        double scaleX = scaleFactor 
-            * (25.4 / FOUserAgent.DEFAULT_TARGET_RESOLUTION) 
-            / userAgent.getTargetPixelUnitToMillimeter();
-        double scaleY = scaleFactor
-            * (25.4 / FOUserAgent.DEFAULT_TARGET_RESOLUTION)
-            / userAgent.getTargetPixelUnitToMillimeter();
-        int bitmapWidth = (int) ((pageWidth * scaleX) + 0.5);
-        int bitmapHeight = (int) ((pageHeight * scaleY) + 0.5);
-                
-        
-        BufferedImage currentPageImage = new BufferedImage(
-                bitmapWidth, bitmapHeight, BufferedImage.TYPE_INT_ARGB);
-        // FIXME TYPE_BYTE_BINARY ?
-
-        Graphics2D graphics = currentPageImage.createGraphics();
-        graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
-                RenderingHints.VALUE_FRACTIONALMETRICS_ON);
-        if (antialiasing) {
-            graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-                    RenderingHints.VALUE_ANTIALIAS_ON);
-            graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
-                    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-        }
-        if (qualityRendering) {
-            graphics.setRenderingHint(RenderingHints.KEY_RENDERING,
-                    RenderingHints.VALUE_RENDER_QUALITY);
-        }
-
-        // transform page based on scale factor supplied
-        AffineTransform at = graphics.getTransform();
-        at.scale(scaleX, scaleY);
-        graphics.setTransform(at);
-
-        // draw page frame
-        graphics.setColor(Color.white);
-        graphics.fillRect(0, 0, pageWidth, pageHeight);
-        graphics.setColor(Color.black);
-        graphics.drawRect(-1, -1, pageWidth + 2, pageHeight + 2);
-        graphics.drawLine(pageWidth + 2, 0, pageWidth + 2, pageHeight + 2);
-        graphics.drawLine(pageWidth + 3, 1, pageWidth + 3, pageHeight + 3);
-        graphics.drawLine(0, pageHeight + 2, pageWidth + 2, pageHeight + 2);
-        graphics.drawLine(1, pageHeight + 3, pageWidth + 3, pageHeight + 3);
-
-        state = new Java2DGraphicsState(graphics, this.fontInfo, at);
-
-        // reset the current Positions
-        currentBPPosition = 0;
-        currentIPPosition = 0;
-
-        // this toggles the rendering of all areas
-        renderPageAreas(pageViewport.getPage());
-        return currentPageImage;
+        this.currentPageViewport = pageViewport;
+        try {
+            Rectangle2D bounds = pageViewport.getViewArea();
+            pageWidth = (int) Math.round(bounds.getWidth() / 1000f);
+            pageHeight = (int) Math.round(bounds.getHeight() / 1000f);
+
+            log.info(
+                    "Rendering Page " + pageViewport.getPageNumberString()
+                            + " (pageWidth " + pageWidth + ", pageHeight "
+                            + pageHeight + ")");
+
+            double scaleX = scaleFactor 
+                * (25.4 / FOUserAgent.DEFAULT_TARGET_RESOLUTION) 
+                / userAgent.getTargetPixelUnitToMillimeter();
+            double scaleY = scaleFactor
+                * (25.4 / FOUserAgent.DEFAULT_TARGET_RESOLUTION)
+                / userAgent.getTargetPixelUnitToMillimeter();
+            int bitmapWidth = (int) ((pageWidth * scaleX) + 0.5);
+            int bitmapHeight = (int) ((pageHeight * scaleY) + 0.5);
+                    
+            
+            BufferedImage currentPageImage = new BufferedImage(
+                    bitmapWidth, bitmapHeight, BufferedImage.TYPE_INT_ARGB);
+            // FIXME TYPE_BYTE_BINARY ?
+
+            Graphics2D graphics = currentPageImage.createGraphics();
+            graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
+                    RenderingHints.VALUE_FRACTIONALMETRICS_ON);
+            if (antialiasing) {
+                graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                        RenderingHints.VALUE_ANTIALIAS_ON);
+                graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
+                        RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            }
+            if (qualityRendering) {
+                graphics.setRenderingHint(RenderingHints.KEY_RENDERING,
+                        RenderingHints.VALUE_RENDER_QUALITY);
+            }
+
+            // transform page based on scale factor supplied
+            AffineTransform at = graphics.getTransform();
+            at.scale(scaleX, scaleY);
+            graphics.setTransform(at);
+
+            // draw page frame
+            graphics.setColor(Color.white);
+            graphics.fillRect(0, 0, pageWidth, pageHeight);
+            graphics.setColor(Color.black);
+            graphics.drawRect(-1, -1, pageWidth + 2, pageHeight + 2);
+            graphics.drawLine(pageWidth + 2, 0, pageWidth + 2, pageHeight + 2);
+            graphics.drawLine(pageWidth + 3, 1, pageWidth + 3, pageHeight + 3);
+            graphics.drawLine(0, pageHeight + 2, pageWidth + 2, pageHeight + 2);
+            graphics.drawLine(1, pageHeight + 3, pageWidth + 3, pageHeight + 3);
+
+            state = new Java2DGraphicsState(graphics, this.fontInfo, at);
+
+            // reset the current Positions
+            currentBPPosition = 0;
+            currentIPPosition = 0;
+
+            // this toggles the rendering of all areas
+            renderPageAreas(pageViewport.getPage());
+            return currentPageImage;
+        } finally {
+            this.currentPageViewport = null;
+        }
     }
 
         
@@ -1169,6 +1174,8 @@
                             new Integer((int)pos.getWidth()));
         context.setProperty(Java2DRendererContextConstants.HEIGHT,
                             new Integer((int) pos.getHeight()));
+        context.setProperty(Java2DRendererContextConstants.PAGE_VIEWPORT, 
+                            getCurrentPageViewport());
         
         renderXML(context, doc, ns);
     }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderer.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFRenderer.java Fri Jan 20 05:09:05 2006
@@ -470,8 +470,7 @@
         
         currentFontName = "";
 
-        Page p = page.getPage();
-        renderPageAreas(p);
+        super.renderPage(page);
 
         this.pdfDoc.registerObject(currentStream);
         currentPage.setContents(currentStream);
@@ -1353,6 +1352,7 @@
 
         context.setProperty(PDFRendererContextConstants.PDF_DOCUMENT, pdfDoc);
         context.setProperty(PDFRendererContextConstants.OUTPUT_STREAM, ostream);
+        context.setProperty(PDFRendererContextConstants.PAGE_VIEWPORT, getCurrentPageViewport());
         context.setProperty(PDFRendererContextConstants.PDF_STATE, currentState);
         context.setProperty(PDFRendererContextConstants.PDF_PAGE, currentPage);
         context.setProperty(PDFRendererContextConstants.PDF_CONTEXT,

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSRenderer.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/ps/PSRenderer.java Fri Jan 20 05:09:05 2006
@@ -1079,6 +1079,8 @@
                             new Integer(currentIPPosition + (int) pos.getX()));
         context.setProperty(PSRendererContextConstants.YPOS,
                             new Integer(currentBPPosition + (int) pos.getY()));
+        context.setProperty(PSRendererContextConstants.PAGE_VIEWPORT, 
+                            getCurrentPageViewport());
         
         renderXML(context, doc, ns);
     }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java?rev=370801&r1=370800&r2=370801&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/xml/XMLRenderer.java Fri Jan 20 05:09:05 2006
@@ -442,7 +442,8 @@
     public void renderPage(PageViewport page) throws IOException, FOPException {
         atts.clear();
         addAttribute("bounds", page.getViewArea());
-        addAttribute("nr", page.getPageNumberString());
+        addAttribute("nr", page.getPageNumber());
+        addAttribute("formatted-nr", page.getPageNumberString());
         startElement("pageViewport", atts);
         startElement("page");
         



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org