Kaynağa Gözat

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
tags/fop-0_92-beta
Jeremias Maerki 18 yıl önce
ebeveyn
işleme
17f7dbd53d

+ 30
- 16
src/java/org/apache/fop/fo/FOPropertyMapping.java Dosyayı Görüntüle

@@ -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

+ 59
- 0
test/fotree/testcases/text-align.fo Dosyayı Görüntüle

@@ -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>

Loading…
İptal
Kaydet