aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2006-02-28 10:00:46 +0000
committerJeremias Maerki <jeremias@apache.org>2006-02-28 10:00:46 +0000
commit17f7dbd53db372bdbd9e6155e2bd03836b9ffbe7 (patch)
tree27278260deda41c75a22dd159962395e8f2bee18
parent2e2d2e6cd25ff610b2221e14873ae68d8f9813f0 (diff)
downloadxmlgraphics-fop-17f7dbd53db372bdbd9e6155e2bd03836b9ffbe7.tar.gz
xmlgraphics-fop-17f7dbd53db372bdbd9e6155e2bd03836b9ffbe7.zip
Fixed bug in handling of text-align-last. Value "relative" was not the default and the resolved property was wrong when it was inherited.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@381618 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/fop/fo/FOPropertyMapping.java46
-rw-r--r--test/fotree/testcases/text-align.fo59
2 files changed, 89 insertions, 16 deletions
diff --git a/src/java/org/apache/fop/fo/FOPropertyMapping.java b/src/java/org/apache/fop/fo/FOPropertyMapping.java
index 476810715..75d3b6f08 100644
--- a/src/java/org/apache/fop/fo/FOPropertyMapping.java
+++ b/src/java/org/apache/fop/fo/FOPropertyMapping.java
@@ -1688,31 +1688,45 @@ public class FOPropertyMapping implements Constants {
// text-align-last
m = new EnumProperty.Maker(PR_TEXT_ALIGN_LAST) {
- public Property compute(PropertyList propertyList) throws PropertyException {
- Property corresponding = propertyList.get(PR_TEXT_ALIGN);
- if (corresponding == null) {
- return null;
- }
- int correspondingValue = corresponding.getEnum();
- if (correspondingValue == EN_JUSTIFY) {
- return getEnumProperty(EN_START, "START");
- } else if (correspondingValue == EN_END) {
- return getEnumProperty(EN_END, "END");
- } else if (correspondingValue == EN_START) {
- return getEnumProperty(EN_START, "START");
- } else if (correspondingValue == EN_CENTER) {
- return getEnumProperty(EN_CENTER, "CENTER");
+ public Property convertProperty(Property p,
+ PropertyList propertyList,
+ FObj fo) throws PropertyException {
+ int en = p.getEnum();
+ if (en == EN_RELATIVE) {
+ Property corresponding = propertyList.get(PR_TEXT_ALIGN);
+ if (corresponding == null) {
+ return p;
+ }
+ int correspondingValue = corresponding.getEnum();
+ if (correspondingValue == EN_JUSTIFY) {
+ return getEnumProperty(EN_START, "START");
+ } else if (correspondingValue == EN_END) {
+ return getEnumProperty(EN_END, "END");
+ } else if (correspondingValue == EN_START) {
+ return getEnumProperty(EN_START, "START");
+ } else if (correspondingValue == EN_CENTER) {
+ return getEnumProperty(EN_CENTER, "CENTER");
+ } else {
+ return p;
+ }
} else {
- return null;
+ return p;
}
}
};
m.setInherited(true);
+ // Note: both 'end', 'right' and 'outside' are mapped to END
+ // both 'start', 'left' and 'inside' are mapped to START
+ m.addEnum("relative", getEnumProperty(EN_RELATIVE, "RELATIVE"));
m.addEnum("center", getEnumProperty(EN_CENTER, "CENTER"));
m.addEnum("end", getEnumProperty(EN_END, "END"));
+ m.addEnum("right", getEnumProperty(EN_END, "END"));
m.addEnum("start", getEnumProperty(EN_START, "START"));
+ m.addEnum("left", getEnumProperty(EN_START, "START"));
m.addEnum("justify", getEnumProperty(EN_JUSTIFY, "JUSTIFY"));
- m.setDefault("start");
+ m.addEnum("inside", getEnumProperty(EN_START, "START"));
+ m.addEnum("outside", getEnumProperty(EN_END, "END"));
+ m.setDefault("relative", true);
addPropertyMaker("text-align-last", m);
// text-indent
diff --git a/test/fotree/testcases/text-align.fo b/test/fotree/testcases/text-align.fo
new file mode 100644
index 000000000..66aae818b
--- /dev/null
+++ b/test/fotree/testcases/text-align.fo
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2006 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$ -->
+<!-- This test verifies inheritance of text-align and text-align-last. -->
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:test="http://xmlgraphics.apache.org/fop/test">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="A4" page-height="29.7cm" page-width="21cm" margin="2cm">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="A4">
+ <fo:flow flow-name="xsl-region-body">
+ <!--fo:block text-align="justify">Hello World!
+ <test:assert property="text-align" expected="JUSTIFY"/>
+ <test:assert property="text-align-last" expected="START"/>
+ </fo:block>
+ <fo:block text-align="justify" text-align-last="relative">Hello World!
+ <test:assert property="text-align" expected="JUSTIFY"/>
+ <test:assert property="text-align-last" expected="START"/>
+ </fo:block-->
+ <fo:block text-align="end">Hello World!
+ <test:assert property="text-align" expected="END"/>
+ <test:assert property="text-align-last" expected="END"/>
+ </fo:block>
+ <fo:block text-align="end" text-align-last="relative">Hello World!
+ <test:assert property="text-align" expected="END"/>
+ <test:assert property="text-align-last" expected="END"/>
+ </fo:block>
+ <fo:block text-align="end" text-align-last="start">Hello World!
+ <test:assert property="text-align" expected="END"/>
+ <test:assert property="text-align-last" expected="START"/>
+ </fo:block>
+ <fo:block text-align="justify" text-align-last="justify">Hello World!
+ <test:assert property="text-align" expected="JUSTIFY"/>
+ <test:assert property="text-align-last" expected="JUSTIFY"/>
+ </fo:block>
+ <fo:block text-align="justify" text-align-last="justify">
+ <fo:block>Hello World!
+ <test:assert property="text-align" expected="JUSTIFY"/>
+ <test:assert property="text-align-last" expected="JUSTIFY"/>
+ </fo:block>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>