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 2005/12/08 16:55:30 UTC

svn commit: r355131 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java test/layoutengine/standard-testcases/block-container_overflow_1.xml

Author: jeremias
Date: Thu Dec  8 07:55:19 2005
New Revision: 355131

URL: http://svn.apache.org/viewcvs?rev=355131&view=rev
Log:
Better approach for enforcing the overflow property on block-containers.
Fixed a bug in the PDF and PS renderers concerning the clipping of viewport areas. The order of clipping and establishing the new coordinate system was wrong. Removed an unnecessary save/restoreGraphicsState() pair.

Added:
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml   (with props)
Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java?rev=355131&r1=355130&r2=355131&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java Thu Dec  8 07:55:19 2005
@@ -48,7 +48,6 @@
     private CommonAbsolutePosition abProps;
     private FODimension relDims;
     private CTM absoluteCTM;
-    private boolean clip = false;
     private Length width;
     private Length height;
     //private int vpContentIPD;
@@ -139,6 +138,11 @@
                 .getOptimum(this).getLength().getValue(this);
     }
 
+    private boolean needClip() {
+        int overflow = getBlockContainerFO().getOverflow();
+        return (overflow == EN_HIDDEN || overflow == EN_ERROR_IF_OVERFLOW);
+    }
+    
     private int getSpaceBefore() {
         return foBlockSpaceBefore.opt;
     }
@@ -351,11 +355,8 @@
 
             if (contentOverflows) {
                 log.warn("Contents overflow block-container viewport: clipping");
-                if (getBlockContainerFO().getOverflow() == EN_HIDDEN) {
-                    clip = true;
-                } else if (getBlockContainerFO().getOverflow() == EN_ERROR_IF_OVERFLOW) {
+                if (getBlockContainerFO().getOverflow() == EN_ERROR_IF_OVERFLOW) {
                     //TODO Throw layout exception
-                    clip = true;
                 }
             }
         }
@@ -497,11 +498,8 @@
             //TODO Maybe check for page overflow when autoHeight=true
             if (!autoHeight & (contentOverflows/*usedBPD > relDims.bpd*/)) {
                 log.warn("Contents overflow block-container viewport: clipping");
-                if (getBlockContainerFO().getOverflow() == EN_HIDDEN) {
-                    clip = true;
-                } else if (getBlockContainerFO().getOverflow() == EN_ERROR_IF_OVERFLOW) {
+                if (getBlockContainerFO().getOverflow() == EN_ERROR_IF_OVERFLOW) {
                     //TODO Throw layout exception
-                    clip = true;
                 }
             }
         }
@@ -867,7 +865,7 @@
                     this);
             
             viewportBlockArea.setCTM(absoluteCTM);
-            viewportBlockArea.setClip(clip);
+            viewportBlockArea.setClip(needClip());
             /*
             if (getSpaceBefore() != 0) {
                 viewportBlockArea.addTrait(Trait.SPACE_BEFORE, new Integer(getSpaceBefore()));

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java?rev=355131&r1=355130&r2=355131&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java Thu Dec  8 07:55:19 2005
@@ -509,26 +509,21 @@
             x += borderPaddingStart / 1000f;
             y += borderPaddingBefore / 1000f;
 
+            if (ctm != null) {
+                startVParea(ctm);
+                currentIPPosition = 0;
+                currentBPPosition = 0;
+            }
             // clip if necessary
             if (bv.getClip()) {
-                saveGraphicsState();
                 float width = (float)bv.getIPD() / 1000f;
                 float height = (float)bv.getBPD() / 1000f;
                 clipRect(x, y, width, height);
             }
 
-            if (ctm != null) {
-                startVParea(ctm);
-                currentIPPosition = 0;
-                currentBPPosition = 0;
-            }
             renderBlocks(bv, children);
             if (ctm != null) {
                 endVParea();
-            }
-
-            if (bv.getClip()) {
-                restoreGraphicsState();
             }
 
             currentIPPosition = saveIP;

Added: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml?rev=355131&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml (added)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml Thu Dec  8 07:55:19 2005
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2005 The Apache Software Foundation
+
+  Licensed 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$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks overflowing content on block-containers.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in" margin="20pt">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" text-align="justify">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block-container id="auto" background-color="lightgray" space-after="5pt">
+             <fo:block start-indent="-5pt" end-indent="-5pt">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque hendrerit euismod velit. Nulla facilisi. Etiam et risus at neque ultrices facilisis. Donec lectus est, nonummy quis, rhoncus bibendum, porta at, nisl.</fo:block>
+          </fo:block-container>
+          <fo:block-container id="visible" background-color="lightgray" space-after="5pt" overflow="visible">
+             <fo:block start-indent="-5pt" end-indent="-5pt">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque hendrerit euismod velit. Nulla facilisi. Etiam et risus at neque ultrices facilisis. Donec lectus est, nonummy quis, rhoncus bibendum, porta at, nisl.</fo:block>
+          </fo:block-container>
+          <fo:block-container id="hidden" background-color="lightgray" space-after="5pt" overflow="hidden">
+             <fo:block start-indent="-5pt" end-indent="-5pt">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque hendrerit euismod velit. Nulla facilisi. Etiam et risus at neque ultrices facilisis. Donec lectus est, nonummy quis, rhoncus bibendum, porta at, nisl.</fo:block>
+          </fo:block-container>
+          <fo:block-container id="scroll" background-color="lightgray" space-after="5pt" overflow="scroll">
+             <fo:block start-indent="-5pt" end-indent="-5pt">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque hendrerit euismod velit. Nulla facilisi. Etiam et risus at neque ultrices facilisis. Donec lectus est, nonummy quis, rhoncus bibendum, porta at, nisl.</fo:block>
+          </fo:block-container>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <true xpath="not(//block[@prod-id='auto' and @is-viewport-area='true']/@clipped)"/>
+    <true xpath="not(//block[@prod-id='visible' and @is-viewport-area='true']/@clipped)"/>
+    <true xpath="//block[@prod-id='hidden' and @is-viewport-area='true']/@clipped"/>
+    <true xpath="not(//block[@prod-id='scroll' and @is-viewport-area='true']/@clipped)"/>
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block-container_overflow_1.xml
------------------------------------------------------------------------------
    svn:keywords = Id



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