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/11/07 13:29:17 UTC
svn commit: r1539611 - in /xmlgraphics/fop/branches/Temp_InlineContainer:
src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java
test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml
Author: vhennebert
Date: Thu Nov 7 12:29:17 2013
New Revision: 1539611
URL: http://svn.apache.org/r1539611
Log:
Added support for alignment-baseline on fo:inline-container
Added:
xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml (with props)
Modified:
xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineContainerLayoutManager.java
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=1539611&r1=1539610&r2=1539611&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 Nov 7 12:29:17 2013
@@ -57,7 +57,6 @@ import org.apache.fop.layoutmgr.TraitSet
public class InlineContainerLayoutManager extends AbstractLayoutManager implements InlineLevelLayoutManager {
private CommonBorderPaddingBackground borderProps;
- private int alignmentBaseline = EN_BASELINE;
private int contentAreaIPD;
private int contentAreaBPD;
@@ -77,6 +76,11 @@ public class InlineContainerLayoutManage
borderProps = node.getCommonBorderPaddingBackground();
}
+ private InlineContainer getInlineContainer() {
+ assert fobj instanceof InlineContainer;
+ return (InlineContainer) fobj;
+ }
+
@Override
public List<KnuthSequence> getNextKnuthElements(LayoutContext context, int alignment) {
determineIPD(context);
@@ -95,7 +99,7 @@ public class InlineContainerLayoutManage
}
private void determineIPD(LayoutContext layoutContext) {
- LengthRangeProperty ipd = ((InlineContainer) fobj).getInlineProgressionDimension();
+ LengthRangeProperty ipd = getInlineContainer().getInlineProgressionDimension();
Property optimum = ipd.getOptimum(this);
if (optimum.isAuto()) {
contentAreaIPD = layoutContext.getRefIPD();
@@ -114,7 +118,7 @@ public class InlineContainerLayoutManage
LayoutContext childLC = LayoutContext.offspringOf(layoutContext); // TODO copyOf? newInstance?
childLC.setRefIPD(layoutContext.getRefIPD());
@SuppressWarnings("unchecked")
- List<ListElement> childElements = childLM.getNextKnuthElements(childLC, alignmentBaseline);
+ List<ListElement> childElements = childLM.getNextKnuthElements(childLC, alignment);
allChildElements.addAll(childElements);
// TODO breaks, keeps, empty content
}
@@ -127,7 +131,7 @@ public class InlineContainerLayoutManage
}
private void determineBPD() {
- LengthRangeProperty bpd = ((InlineContainer) fobj).getBlockProgressionDimension();
+ LengthRangeProperty bpd = getInlineContainer().getBlockProgressionDimension();
Property optimum = bpd.getOptimum(this);
int actualBPD = ElementListUtils.calcContentLength(childElements);
if (optimum.isAuto()) {
@@ -181,15 +185,15 @@ public class InlineContainerLayoutManage
}
private boolean canRecoverFromOverflow() {
- return ((InlineContainer) fobj).getOverflow() != EN_ERROR_IF_OVERFLOW;
+ return getInlineContainer().getOverflow() != EN_ERROR_IF_OVERFLOW;
}
private int getAlignmentPoint() {
- Length alignmentAdjust = ((InlineContainer) fobj).getAlignmentAdjust();
+ Length alignmentAdjust = getInlineContainer().getAlignmentAdjust();
int baseline = alignmentAdjust.getEnum();
if (baseline == Constants.EN_AUTO
|| baseline == Constants.EN_BASELINE) {
- return getInlineContainerBaselineOffset(alignmentBaseline);
+ return getInlineContainerBaselineOffset(getInlineContainer().getAlignmentBaseline());
} else if (baseline != 0) {
return getInlineContainerBaselineOffset(baseline);
} else {
@@ -294,7 +298,7 @@ public class InlineContainerLayoutManage
}
private boolean needClip() {
- int overflow = ((InlineContainer) fobj).getOverflow();
+ int overflow = getInlineContainer().getOverflow();
return (overflow == EN_HIDDEN || overflow == EN_ERROR_IF_OVERFLOW);
}
Added: xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml?rev=1539611&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml (added)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml Thu Nov 7 12:29:17 2013
@@ -0,0 +1,74 @@
+<?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>
+ Checks that the alignment-baseline property on inline-container behaves properly.
+ </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="170pt" page-width="220pt" 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 space-after="10pt">alignment-baseline="before-edge":</fo:block>
+ <fo:block>The line before. The line before. Before: <fo:inline-container width="100pt"
+ alignment-baseline="before-edge">
+ <fo:block>Inside the inline-container.</fo:block>
+ </fo:inline-container> After the inline-container.</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference="page">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block space-after="10pt">alignment-baseline="central":</fo:block>
+ <fo:block>The line before. The line before. Before: <fo:inline-container width="100pt"
+ alignment-baseline="central">
+ <fo:block>Inside the inline-container.</fo:block>
+ </fo:inline-container> After the inline-container.</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ </fo:root>
+ </fo>
+
+ <checks>
+
+ <!-- before-edge -->
+ <eval expected="28800" xpath="//pageSequence[1]//flow/block[2]/lineArea[2]/@bpd"/>
+ <eval expected="0" xpath="//pageSequence[1]//flow/block[2]/lineArea[2]/text[1]/@offset"/>
+ <eval expected="8616" xpath="//pageSequence[1]//flow/block[2]/lineArea[2]/text[1]/@baseline"/>
+ <eval expected="28800" xpath="//pageSequence[1]//flow/block[2]/lineArea[2]/viewport/@bpd"/>
+ <eval expected="0" xpath="//pageSequence[1]//flow/block[2]/lineArea[2]/viewport/@offset"/>
+
+ <!-- central -->
+ <eval expected="28800" xpath="//pageSequence[2]//flow/block[2]/lineArea[2]/@bpd"/>
+ <eval expected="8850" xpath="//pageSequence[2]//flow/block[2]/lineArea[2]/text[1]/@offset"/>
+ <eval expected="8616" xpath="//pageSequence[2]//flow/block[2]/lineArea[2]/text[1]/@baseline"/>
+ <eval expected="28800" xpath="//pageSequence[2]//flow/block[2]/lineArea[2]/viewport/@bpd"/>
+ <eval expected="0" xpath="//pageSequence[2]//flow/block[2]/lineArea[2]/viewport/@offset"/>
+
+ </checks>
+</testcase>
Propchange: xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: xmlgraphics/fop/branches/Temp_InlineContainer/test/layoutengine/standard-testcases/inline-container_alignment-baseline.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