/** Mapping of resourceInfo to AbstractCachedObject */
private final Map<AFPResourceInfo, AbstractCachedObject> includeObjectCache
= new java.util.HashMap<AFPResourceInfo, AbstractCachedObject>();
-
private AFPResourceLevelDefaults resourceLevelDefaults = new AFPResourceLevelDefaults();
/**
resourceInfo.setName(resourceName);
resourceInfo.setUri(uri.toASCIIString());
- AbstractCachedObject cachedObject = (AbstractCachedObject)
- includeObjectCache.get(resourceInfo);
-
+ AbstractCachedObject cachedObject = (AbstractCachedObject) includeObjectCache.get(resourceInfo);
if (cachedObject == null) {
ResourceGroup resourceGroup = streamer.getResourceGroup(resourceLevel);
@Override
protected void writeEnd(OutputStream os) throws IOException { }
};
-
resourceGroup.addObject(resourceObject);
cachedObject = new CachedObject(resourceName, null);
includeObjectCache.put(resourceInfo, cachedObject);
/** Property constant - FOP proprietary prototype (in XSL-FO 2.0 Requirements) */
int PR_X_XML_BASE = 275;
-
/** Property constant FOP proprietary*/
int PR_X_BORDER_BEFORE_RADIUS_START = 276;
genericCondCornerRadius.setPercentBase(LengthBase.CONTAINING_BLOCK_HEIGHT);
genericCondCornerRadius.addShorthand(generics[PR_X_BORDER_RADIUS]);
-
// GenericBreak
genericBreak = new EnumProperty.Maker(0);
genericBreak.setInherited(false);
PROPERTY_ATTRIBUTES.add("disable-column-balancing");
//These are FOP's extension properties for accessibility
PROPERTY_ATTRIBUTES.add("alt-text");
-
//fox:border-*-radius-*
PROPERTY_ATTRIBUTES.add("border-before-radius-start");
PROPERTY_ATTRIBUTES.add("border-before-radius-end");
if (this == obj) {
return true;
}
- if (obj instanceof BorderInfo) {
- BorderInfo bi = (BorderInfo)obj;
- return (this.mColor == bi.mColor
- && this.mStyle == bi.mStyle
- && this.mWidth == bi.mWidth
- && this.radiusStart == bi.radiusStart
- && this.radiusEnd == bi.radiusEnd);
+ if (!(obj instanceof BorderInfo)) {
+ return false;
}
- BorderInfo other = (BorderInfo) obj;
- return CompareUtil.equal(mColor, other.mColor)
- && mStyle == other.mStyle
- && CompareUtil.equal(mWidth, other.mWidth);
+ BorderInfo bi = (BorderInfo)obj;
+ return (this.mColor == bi.mColor
+ && this.mStyle == bi.mStyle
+ && this.mWidth == bi.mWidth
+ && this.radiusStart == bi.radiusStart
+ && this.radiusEnd == bi.radiusEnd);
}
@Override
* 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 final BorderInfo DEFAULT_BORDER_INFO
- = BorderInfo.getInstance(Constants.EN_NONE, new ConditionalNullLength(), null,
- new ConditionalNullLength(), new ConditionalNullLength());
-
-
-
+ private static final BorderInfo DEFAULT_BORDER_INFO = BorderInfo.getInstance(
+ Constants.EN_NONE, new ConditionalNullLength(), null, new ConditionalNullLength(),
+ new ConditionalNullLength());
/**
* A conditional length of value 0. Returned by the
drawBackground(startx, starty, width, height,
(Trait.Background) backgroundArea.getTrait(Trait.BACKGROUND),
bpsBefore, bpsAfter, bpsStart, bpsEnd, backgroundArea.getBidiLevel());
-
// TODO what is the default bg color? Should we serialize it?
Color bg = Color.white;
if (backgroundTrait != null && backgroundTrait.getColor() != null) {
* @param bpsAfter the border-after traits
* @param bpsStart the border-start traits
* @param bpsEnd the border-end traits
+ * @param innerBackgroundColor the background color of the block
*/
protected void clipBackground (float startx, float starty,
float width, float height,
import java.awt.Dimension;
import java.awt.geom.AffineTransform;
import java.io.IOException;
-import java.util.HashMap;
import java.net.URI;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
= new Area[]{new Area(), new Area(), new Area(), new Area()};
if (roundCorner[TOP_LEFT]) {
-
AffineTransform transform = new AffineTransform();
int beforeRadius = (int)(esf * bpsBefore.getRadiusStart());
int startRadius = (int)(esf * bpsStart.getRadiusStart());
int width = borderRect.width;
int height = borderRect.height;
boolean[] b = new boolean[] {
- (bpsTop != null), (bpsRight != null),
- (bpsBottom != null), (bpsLeft != null)};
- if (!b[0] && !b[1] && !b[2] && !b[3]) {
+ (bpsTop != null), (bpsRight != null),
+ (bpsBottom != null), (bpsLeft != null)};
+ if (!b[TOP] && !b[RIGHT] && !b[BOTTOM] && !b[LEFT]) {
return;
}
int[] bw = new int[] {
- (b[0] ? bpsTop.width : 0),
- (b[1] ? bpsRight.width : 0),
- (b[2] ? bpsBottom.width : 0),
- (b[3] ? bpsLeft.width : 0)};
+ (b[TOP] ? bpsTop.width : 0),
+ (b[RIGHT] ? bpsRight.width : 0),
+ (b[BOTTOM] ? bpsBottom.width : 0),
+ (b[LEFT] ? bpsLeft.width : 0)};
int[] clipw = new int[] {
- BorderProps.getClippedWidth(bpsTop),
- BorderProps.getClippedWidth(bpsRight),
- BorderProps.getClippedWidth(bpsBottom),
- BorderProps.getClippedWidth(bpsLeft)};
- starty += clipw[0];
- height -= clipw[0];
- height -= clipw[2];
- startx += clipw[3];
- width -= clipw[3];
- width -= clipw[1];
+ BorderProps.getClippedWidth(bpsTop),
+ BorderProps.getClippedWidth(bpsRight),
+ BorderProps.getClippedWidth(bpsBottom),
+ BorderProps.getClippedWidth(bpsLeft)};
+ starty += clipw[TOP];
+ height -= clipw[TOP];
+ height -= clipw[BOTTOM];
+ startx += clipw[LEFT];
+ width -= clipw[LEFT];
+ width -= clipw[RIGHT];
boolean[] slant = new boolean[] {
- (b[3] && b[0]), (b[0] && b[1]), (b[1] && b[2]), (b[2] && b[3])};
+ (b[LEFT] && b[TOP]),
+ (b[TOP] && b[RIGHT]),
+ (b[RIGHT] && b[BOTTOM]),
+ (b[BOTTOM] && b[LEFT])};
if (bpsTop != null) {
int sx1 = startx;
int sx2 = (slant[TOP_LEFT] ? sx1 + bw[LEFT] - clipw[LEFT] : sx1);
int ex1a = ex1;
if (bpsTop.mode == BorderProps.COLLAPSE_OUTER) {
if (bpsLeft != null && bpsLeft.mode == BorderProps.COLLAPSE_OUTER) {
- sx1a -= clipw[3];
+ sx1a -= clipw[LEFT];
}
if (bpsRight != null && bpsRight.mode == BorderProps.COLLAPSE_OUTER) {
- ex1a += clipw[1];
+ ex1a += clipw[RIGHT];
}
lineTo(sx1a, outery);
lineTo(ex1a, outery);
int outerx = startx + width + clipw[RIGHT];
int clipx = outerx - clipw[RIGHT];
int innerx = outerx - bw[RIGHT];
-
saveGraphicsState();
moveTo(clipx, sy1);
int sy1a = sy1;
int outery = starty + height + clipw[BOTTOM];
int clipy = outery - clipw[BOTTOM];
int innery = outery - bw[BOTTOM];
-
saveGraphicsState();
moveTo(ex1, clipy);
int sx1a = sx1;
int outerx = startx - clipw[LEFT];
int clipx = outerx + clipw[LEFT];
int innerx = outerx + bw[LEFT];
-
+
saveGraphicsState();
moveTo(clipx, ey1);
(b[RIGHT] ? bpsEnd.width : 0),
(b[BOTTOM] ? bpsAfter.width : 0),
(b[LEFT] ? bpsStart.width : 0)};
-
int[] clipw = new int[] {
BorderProps.getClippedWidth(bpsBefore),
BorderProps.getClippedWidth(bpsEnd),
boolean[] slant = new boolean[] {
(b[LEFT] && b[TOP]), (b[TOP] && b[RIGHT]),
(b[RIGHT] && b[BOTTOM]), (b[LEFT] && b[BOTTOM])};
-
//Determine scale factor if any adjacent elliptic corners overlap
double esf = cornerScaleFactor(width, height, bpsBefore, bpsAfter, bpsStart, bpsEnd);
import java.util.Map;
import org.w3c.dom.Document;
+
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
public int width; // CSOK: VisibilityModifier
private int radiusStart = 0;
+
private int radiusEnd = 0;
-
-
-
+
/** Border mode (one of SEPARATE, COLLAPSE_INNER and COLLAPSE_OUTER) */
public int mode; // CSOK: VisibilityModifier