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 vh...@apache.org on 2013/10/24 17:17:37 UTC

svn commit: r1535410 - in /xmlgraphics/fop/branches/Temp_InlineContainer: src/java/org/apache/fop/layoutmgr/inline/ test/layoutengine/standard-testcases/

Author: vhennebert
Date: Thu Oct 24 15:17:36 2013
New Revision: 1535410

URL: http://svn.apache.org/r1535410
Log:
When inline-progression-dimension has been left to auto on fo:inline-container, fall back to the IPD of the nearest ancestor reference-area.

Added:
    xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml   (with props)
Modified:
    xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java
    xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.java
    xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.xml

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java?rev=1535410&r1=1535409&r2=1535410&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java Thu Oct 24 15:17:36 2013
@@ -75,7 +75,7 @@ public class InlineContainerLayoutManage
     @Override
     public List<KnuthSequence> getNextKnuthElements(LayoutContext context, int alignment) {
         InlineContainer ic = (InlineContainer) fobj;
-        contentAreaIPD = getLength(ic.getInlineProgressionDimension());
+        determineIPD(context);
         contentAreaBPD = getLength(ic.getBlockProgressionDimension());
         LayoutContext childLC = LayoutContext.offspringOf(context); // TODO copyOf?
         childLC.setRefIPD(contentAreaIPD);
@@ -90,6 +90,19 @@ public class InlineContainerLayoutManage
         return knuthElements;
     }
 
+    private void determineIPD(LayoutContext layoutContext) {
+        LengthRangeProperty ipd = ((InlineContainer) fobj).getInlineProgressionDimension();
+        Property optimum = ipd.getOptimum(this); // TODO percent base context
+        if (optimum.isAuto()) {
+            contentAreaIPD = layoutContext.getRefIPD();
+            InlineLevelEventProducer eventProducer = InlineLevelEventProducer.Provider.get(
+                    fobj.getUserAgent().getEventBroadcaster());
+            eventProducer.inlineContainerAutoIPDNotSupported(this, contentAreaIPD / 1000f);
+        } else {
+            contentAreaIPD = optimum.getLength().getValue(this); // TODO percent base context
+        }
+    }
+
     private int getLength(LengthRangeProperty property) {
         Property optimum = property.getOptimum(this); // TODO percent base context
         if (optimum.isAuto()) {

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.java?rev=1535410&r1=1535409&r2=1535410&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.java Thu Oct 24 15:17:36 2013
@@ -67,4 +67,13 @@ public interface InlineLevelEventProduce
      */
     void lineOverflows(Object source, String elementName, int line, int overflowLength, Locator loc);
 
+    /**
+     * Auto IPD on inline-container is not supported.
+     *
+     * @param source the event source
+     * @param fallback the value in points that will be used as a fallback
+     * @event.severity WARN
+     */
+    void inlineContainerAutoIPDNotSupported(Object source, float fallback);
+
 }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.xml?rev=1535410&r1=1535409&r2=1535410&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.xml (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLevelEventProducer.xml Thu Oct 24 15:17:36 2013
@@ -20,4 +20,5 @@
   <message key="locator">[ (See position {loc})| (See {#gatherContextInfo})| (No context info available)]</message>
   <message key="leaderWithoutContent">fo:leader is set to "use-content" but has no content.{{locator}}</message>
   <message key="lineOverflows">The contents of {elementName} line {line} exceed the available area in the inline-progression direction by {overflowLength,choice,50000#{overflowLength} millipoints|50000&lt;more than 50 points}.{{locator}}</message>
+  <message key="inlineContainerAutoIPDNotSupported">A value of "auto" for the inline-progression-dimension property on fo:inline-container is not supported. Falling back to {fallback}pt.{{locator}}</message>
 </catalogue>

Added: xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml?rev=1535410&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml (added)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml Thu Oct 24 15:17:36 2013
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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>
+      When inline-progression-dimension has been left to auto on fo:inline-container, fall back to 
+      the IPD of the nearest ancestor reference-area.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="page"
+          page-height="220pt" page-width="320pt" margin="10pt">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="page">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block>Before: <fo:inline-container height="20pt">
+              <fo:block>Text inside inline-container.</fo:block>
+          </fo:inline-container> After.</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+      <fo:page-sequence master-reference="page">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block-container space-before="10pt" start-indent="100pt" width="100pt">
+            <fo:block start-indent="0">
+              Before: <fo:inline-container height="20pt">
+                <fo:block>Inside the inline-container.</fo:block>
+              </fo:inline-container> After.
+            </fo:block>
+          </fo:block-container>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+
+  <checks>
+    <eval expected="3" xpath="count(//pageSequence[1]//flow/block/lineArea)"/>
+    <eval expected="300000"  xpath="//pageSequence[1]//flow/block/lineArea[2]/viewport/@ipd"/>
+    <eval expected="3" xpath="count(//pageSequence[2]//flow/block/block/block/lineArea)"/>
+    <eval expected="100000"  xpath="//pageSequence[2]//flow/block/block/block/lineArea[2]/viewport/@ipd"/>
+  </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_auto-ipd.xml
------------------------------------------------------------------------------
    svn:keywords = Revision Id



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