Browse Source

Use a singleton for a default BorderInfo of style none, instead of every time a new instance


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@594584 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_95beta
Vincent Hennebert 16 years ago
parent
commit
fdad001c2b

+ 1
- 1
src/java/org/apache/fop/fo/flow/table/EmptyGridUnit.java View File

@@ -42,7 +42,7 @@ public class EmptyGridUnit extends GridUnit {
/** {@inheritDoc} */
protected void setBorder(int side) {
resolvedBorders[side] = new BorderSpecification(
new CommonBorderPaddingBackground.BorderInfo(Constants.EN_NONE, null, null),
CommonBorderPaddingBackground.getDefaultBorderInfo(),
Constants.FO_TABLE_CELL);
}


+ 21
- 2
src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java View File

@@ -83,7 +83,7 @@ public class CommonBorderPaddingBackground {
private Color mColor; // Border color
private CondLengthProperty mWidth;

public BorderInfo(int style, CondLengthProperty width, Color color) {
BorderInfo(int style, CondLengthProperty width, Color color) {
mStyle = style;
mWidth = width;
mColor = color;
@@ -124,6 +124,25 @@ public class CommonBorderPaddingBackground {
}
}

/**
* A border info with style none. Used as a singleton, in the collapsing-border model,
* for elements which don't specify any border on some of their sides.
*/
private static BorderInfo defaultBorderInfo;

/**
* Returns a default BorderInfo of style none.
*
* @return a BorderInfo instance with style set to {@link Constants#EN_NONE}
*/
public static synchronized BorderInfo getDefaultBorderInfo() {
if (defaultBorderInfo == null) {
/* It is enough to set color and width to null, as they should never be consulted */
defaultBorderInfo = new BorderInfo(Constants.EN_NONE, null, null);
}
return defaultBorderInfo;
}

private BorderInfo[] borderInfo = new BorderInfo[4];
private CondLengthProperty[] padding = new CondLengthProperty[4];

@@ -228,7 +247,7 @@ public class CommonBorderPaddingBackground {
*/
public BorderInfo getBorderInfo(int side) {
if (this.borderInfo[side] == null) {
return new BorderInfo(Constants.EN_NONE, null, null); // TODO
return getDefaultBorderInfo();
} else {
return this.borderInfo[side];
}

Loading…
Cancel
Save