xmlgraphics-fop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jerem...@apache.org
Subject 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
Date Thu, 08 Dec 2005 15:55:30 GMT
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


Mime
View raw message