Browse Source

Merged revisions 655791,655801 via svnmerge from

https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk

........
  r655791 | adelmelle | 2008-05-13 10:58:01 +0100 (Tue, 13 May 2008) | 3 lines
  
  Undo r655765, which was causing NPEs in the layout-tests
........
  r655801 | adelmelle | 2008-05-13 11:37:59 +0100 (Tue, 13 May 2008) | 1 line
  
  Use absolute initial value instead of percentage (better for memory consumption)
........


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_AFPGOCAResources@656234 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-1_0
Adrian Cumiskey 16 years ago
parent
commit
a3a8de8682

+ 0
- 13
src/java/org/apache/fop/fo/FOEventHandler.java View File

@@ -79,10 +79,6 @@ public abstract class FOEventHandler {
* This is used so we know if the FO tree contains duplicates.
*/
private Set idReferences = new HashSet();
/**
* Keeps track of the last automatically generated id in the current document
*/
private long lastGeneratedId = 1;
/**
* The property list maker.
@@ -181,15 +177,6 @@ public abstract class FOEventHandler {
return this.inMarker;
}
/**
* Return the next value for automatically generated ids
*
* @return the next value to append to automatically generated ids
*/
public long getNextId() {
return this.lastGeneratedId++;
}
/**
* This method is called to indicate the start of a new document run.
* @throws SAXException In case of a problem

+ 18
- 18
src/java/org/apache/fop/fo/FOPropertyMapping.java View File

@@ -601,8 +601,8 @@ public final class FOPropertyMapping implements Constants {
// background-position-horizontal
m = new LengthProperty.Maker(PR_BACKGROUND_POSITION_HORIZONTAL);
m.setInherited(false);
m.setDefault("0%");
m.addKeyword("left", "0%");
m.setDefault("0pt");
m.addKeyword("left", "0pt");
m.addKeyword("center", "50%");
m.addKeyword("right", "100%");
m.setPercentBase(LengthBase.IMAGE_BACKGROUND_POSITION_HORIZONTAL);
@@ -612,8 +612,8 @@ public final class FOPropertyMapping implements Constants {
// background-position-vertical
m = new LengthProperty.Maker(PR_BACKGROUND_POSITION_VERTICAL);
m.setInherited(false);
m.setDefault("0%");
m.addKeyword("top", "0%");
m.setDefault("0pt");
m.addKeyword("top", "0pt");
m.addKeyword("center", "50%");
m.addKeyword("bottom", "100%");
m.setPercentBase(LengthBase.IMAGE_BACKGROUND_POSITION_VERTICAL);
@@ -2503,7 +2503,7 @@ public final class FOPropertyMapping implements Constants {
addPropertyMaker("content-type", m);

// id
m = new StringProperty.IdMaker(PR_ID);
m = new StringProperty.Maker(PR_ID);
m.setInherited(false);
m.setDefault("");
addPropertyMaker("id", m);
@@ -2568,29 +2568,29 @@ public final class FOPropertyMapping implements Constants {
// background-position
m = new BackgroundPositionShorthand.Maker(PR_BACKGROUND_POSITION);
m.setInherited(false);
m.addKeyword("left", "0% 50%");
m.addKeyword("left center", "0% 50%");
m.addKeyword("center left", "0% 50%");
m.addKeyword("left", "0pt 50%");
m.addKeyword("left center", "0pt 50%");
m.addKeyword("center left", "0pt 50%");
m.addKeyword("right", "100% 50%");
m.addKeyword("right center", "100% 50%");
m.addKeyword("center right", "100% 50%");
m.addKeyword("center", "50% 50%");
m.addKeyword("center center", "50% 50%");
m.addKeyword("top", "50% 0%");
m.addKeyword("top center", "50% 0%");
m.addKeyword("center top", "50% 0%");
m.addKeyword("top", "50% 0pt");
m.addKeyword("top center", "50% 0pt");
m.addKeyword("center top", "50% 0pt");
m.addKeyword("bottom", "50% 100%");
m.addKeyword("bottom center", "50% 100%");
m.addKeyword("center bottom", "50% 100%");
m.addKeyword("top left", "0% 0%");
m.addKeyword("left top", "0% 0%");
m.addKeyword("top right", "100% 0%");
m.addKeyword("right top", "100% 0%");
m.addKeyword("bottom left", "0% 100%");
m.addKeyword("left bottom", "0% 100%");
m.addKeyword("top left", "0pt 0pt");
m.addKeyword("left top", "0pt 0pt");
m.addKeyword("top right", "100% 0pt");
m.addKeyword("right top", "100% 0pt");
m.addKeyword("bottom left", "0pt 100%");
m.addKeyword("left bottom", "0pt 100%");
m.addKeyword("bottom right", "100% 100%");
m.addKeyword("right bottom", "100% 100%");
m.setDefault("0% 0%");
m.setDefault("0pt 0pt");
m.setPercentBase(LengthBase.CUSTOM_BASE);
m.setDatatypeParser(new BackgroundPositionShorthand.Parser());
addPropertyMaker("background-position", m);

+ 1
- 43
src/java/org/apache/fop/fo/properties/StringProperty.java View File

@@ -81,49 +81,7 @@ public final class StringProperty extends Property {
}

}

/**
* Inner class dedicated to the "id" property, which should provide a random
* unique identifier as an initial value.
* The values for "id" are never cached, as they're typically valid for one
* document.
*/
public static class IdMaker extends PropertyMaker {

/**
* @param propId the id of the property for which the maker should be created
*/
public IdMaker(int propId) {
super(propId);
}

/** {@inheritDoc} */
public Property make(PropertyList propertyList) throws PropertyException {
String newId = "FO_";
newId += propertyList.getFObj().getFOEventHandler().getNextId();
return new StringProperty(newId);
}
/** {@inheritDoc} */
public Property make(PropertyList propertyList,
String value,
FObj fo) throws PropertyException {
Property idProp;
//no parsing necessary; just return a new StringProperty
//TODO: Should we move validation here? (see FObj#checkId())
if ("".equals(value)) {
//if an empty string was specified, return the default
idProp = this.make(propertyList);
} else {
idProp = new StringProperty(value);
}
return idProp;
}
}

/** cache containing all canonical StringProperty instances */
private static final PropertyCache cache = new PropertyCache(StringProperty.class);

+ 0
- 28
test/fotree/testcases/id_auto.fo View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:test="http://xmlgraphics.apache.org/fop/test">
<test:assert property="id" expected="FO_1" />
<fo:layout-master-set>
<test:assert property="id" expected="FO_2" />
<fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
<test:assert property="id" expected="FO_3" />
<fo:region-body>
<test:assert property="id" expected="FO_4" />
</fo:region-body>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simpleA4">
<test:assert property="id" expected="FO_5" />
<fo:flow flow-name="xsl-region-body">
<test:assert property="id" expected="FO_6" />
<fo:block font-size="14pt" id="block">Hello
<test:assert property="id" expected="block"/>
<fo:inline> World!
<test:assert property="id" expected="FO_7" />
</fo:inline>
</fo:block>
<fo:block font-family="ZapfDingbats">&#2702;
<test:assert property="id" expected="FO_8" />
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>

Loading…
Cancel
Save