keiron 2002/08/22 06:57:49 Modified: src/org/apache/fop/area LineArea.java src/org/apache/fop/area/inline Leader.java Stretch.java src/org/apache/fop/fo/flow Leader.java src/org/apache/fop/layoutmgr BlockLayoutManager.java LayoutContext.java LeafNodeLayoutManager.java LineBPLayoutManager.java src/org/apache/fop/render AbstractRenderer.java src/org/apache/fop/render/pdf PDFRenderer.java src/org/apache/fop/render/svg SVGRenderer.java src/org/apache/fop/render/xml XMLRenderer.java src/org/apache/fop/tools AreaTreeBuilder.java Log: implemeneted leader with leader-pattern of rule adjusts line area ipd to best fit (spaces not handled yet) and aligns Revision Changes Path 1.9 +12 -4 xml-fop/src/org/apache/fop/area/LineArea.java Index: LineArea.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/area/LineArea.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- LineArea.java 16 Aug 2002 13:06:38 -0000 1.8 +++ LineArea.java 22 Aug 2002 13:57:47 -0000 1.9 @@ -45,9 +45,9 @@ } public void addChild(Area childArea) { - if (childArea instanceof InlineArea) { - addInlineArea((InlineArea)childArea); - } + if (childArea instanceof InlineArea) { + addInlineArea((InlineArea)childArea); + } } public void addInlineArea(InlineArea area) { @@ -56,6 +56,14 @@ public List getInlineAreas() { return inlineAreas; + } + + public void setStartIndent(int si) { + startIndent = si; + } + + public int getStartIndent() { + return startIndent; } } 1.3 +3 -9 xml-fop/src/org/apache/fop/area/inline/Leader.java Index: Leader.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/area/inline/Leader.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Leader.java 26 Oct 2001 09:27:00 -0000 1.2 +++ Leader.java 22 Aug 2002 13:57:47 -0000 1.3 @@ -8,6 +8,7 @@ package org.apache.fop.area.inline; import org.apache.fop.render.Renderer; +import org.apache.fop.fo.properties.RuleStyle; public class Leader extends Stretch { @@ -18,14 +19,7 @@ // if space replaced with a space // otherwise this is a holder for a line - public static final int DOTTED = 0; - public static final int DASHED = 1; - public static final int SOLID = 2; - public static final int DOUBLE = 3; - public static final int GROOVE = 4; - public static final int RIDGE = 5; - - int ruleStyle = SOLID; + int ruleStyle = RuleStyle.SOLID; int ruleThickness = 1000; public Leader() { 1.3 +2 -2 xml-fop/src/org/apache/fop/area/inline/Stretch.java Index: Stretch.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/area/inline/Stretch.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Stretch.java 26 Apr 2002 09:40:55 -0000 1.2 +++ Stretch.java 22 Aug 2002 13:57:47 -0000 1.3 @@ -10,7 +10,7 @@ import org.apache.fop.area.MinOptMax; public class Stretch extends InlineArea { - MinOptMax contentIPD; + MinOptMax contentIPD = null; public void setAllocationIPD(MinOptMax mom) { contentIPD = mom; 1.22 +64 -37 xml-fop/src/org/apache/fop/fo/flow/Leader.java Index: Leader.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/Leader.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- Leader.java 16 Aug 2002 12:44:07 -0000 1.21 +++ Leader.java 22 Aug 2002 13:57:47 -0000 1.22 @@ -17,6 +17,7 @@ import org.apache.fop.apps.FOPException; import org.apache.fop.layoutmgr.LayoutManager; import org.apache.fop.layoutmgr.LeafNodeLayoutManager; +import org.apache.fop.layoutmgr.LayoutContext; import org.apache.fop.area.MinOptMax; import java.util.List; @@ -27,24 +28,39 @@ * The pattern use-content is ignored, i.e. it still must be implemented. */ public class Leader extends FObjMixed { + int ruleStyle; + int ruleThickness; + int leaderPattern; public Leader(FONode parent) { super(parent); } public void addLayoutManager(List list) { - list.add(new LeafNodeLayoutManager(this) { - public InlineArea get() { - int contentIPD = parentLM.getContentIPD(); - return getInlineArea(contentIPD); - } - }); + LeafNodeLayoutManager lm = new LeafNodeLayoutManager(this) { + public InlineArea get(LayoutContext context) { + int refIPD = context.getRefIPD(); + return getInlineArea(refIPD); + } + }; + lm.setAlignment(properties.get("leader-alignment").getEnum()); + list.add(lm); } - protected InlineArea getInlineArea(int maxIPD) { + protected InlineArea getInlineArea(int refIPD) { + setup(); + org.apache.fop.area.inline.Leader leader = new org.apache.fop.area.inline.Leader(); - leader.setWidth(maxIPD / 2); - leader.setAllocationIPD(new MinOptMax(0, maxIPD / 2, maxIPD)); + + MinOptMax alloc = getAllocationIPD(refIPD); + leader.setAllocationIPD(alloc); + leader.setWidth(alloc.opt); + + if(leaderPattern == LeaderPattern.RULE) { + leader.setRuleStyle(ruleStyle); + leader.setRuleThickness(ruleThickness); + } + return leader; } @@ -99,40 +115,51 @@ // fo:leader specific properties // determines the pattern of leader; allowed values: space, rule,dots, use-content - int leaderPattern = this.properties.get("leader-pattern").getEnum(); - // length of the leader - int leaderLengthOptimum = - this.properties.get("leader-length.optimum").getLength().mvalue(); - int leaderLengthMinimum = - this.properties.get("leader-length.minimum").getLength().mvalue(); - Length maxlength = this.properties.get("leader-length.maximum").getLength(); - int leaderLengthMaximum; - if(maxlength instanceof PercentLength) { - //leaderLengthMaximum = (int)(((PercentLength)maxlength).value() - // * area.getAllocationWidth()); - } else { - leaderLengthMaximum = maxlength.mvalue(); + leaderPattern = this.properties.get("leader-pattern").getEnum(); + switch(leaderPattern) { + case LeaderPattern.SPACE: + // use Space + break; + case LeaderPattern.RULE: + // the following properties only apply + // for leader-pattern = "rule" + ruleThickness = + properties.get("rule-thickness").getLength().mvalue(); + ruleStyle = properties.get("rule-style").getEnum(); + break; + case LeaderPattern.DOTS: + break; + case LeaderPattern.USECONTENT: + // use inline layout manager to create inline areas + // add the inline parent multiple times until leader full + break; } - // the following properties only apply for leader-pattern = "rule" - int ruleThickness = - this.properties.get("rule-thickness").getLength().mvalue(); - int ruleStyle = this.properties.get("rule-style").getEnum(); + // if leaderPatternWidth = 0 = default = use-font-metric int leaderPatternWidth = this.properties.get("leader-pattern-width").getLength().mvalue(); - int leaderAlignment = - this.properties.get("leader-alignment").getEnum(); } - /* - * //should only be necessary for use-content - * protected void addCharacters(char data[], int start, int length) { - * FOText textNode = new FOText(data,start,length, this); - * textNode.setLogger(log); - * children.addElement(textNode); - * } - */ + protected MinOptMax getAllocationIPD(int ipd) { + // length of the leader + int opt = getLength("leader-length.optimum", ipd); + int min = getLength("leader-length.minimum", ipd); + int max = getLength("leader-length.maximum", ipd); + + return new MinOptMax(min, opt, max); + } + protected int getLength(String prop, int dim) { + int length; + Length maxlength = properties.get(prop).getLength(); + if(maxlength instanceof PercentLength) { + length = (int)(((PercentLength)maxlength).value() + * dim); + } else { + length = maxlength.mvalue(); + } + return length; + } } 1.15 +2 -1 xml-fop/src/org/apache/fop/layoutmgr/BlockLayoutManager.java Index: BlockLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/BlockLayoutManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- BlockLayoutManager.java 21 Aug 2002 09:17:42 -0000 1.14 +++ BlockLayoutManager.java 22 Aug 2002 13:57:48 -0000 1.15 @@ -130,6 +130,7 @@ if (curLM.generatesInlineAreas()) { // set stackLimit for lines childLC.setStackLimit(new MinOptMax(ipd/* - m_iIndents - m_iTextIndent*/)); + childLC.setRefIPD(ipd); } else { childLC.setStackLimit( MinOptMax.subtract(context.getStackLimit(), 1.9 +12 -1 xml-fop/src/org/apache/fop/layoutmgr/LayoutContext.java Index: LayoutContext.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/LayoutContext.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- LayoutContext.java 18 Aug 2002 13:47:13 -0000 1.8 +++ LayoutContext.java 22 Aug 2002 13:57:48 -0000 1.9 @@ -67,6 +67,9 @@ private HyphContext m_hyphContext = null; /** Stretch or shrink value when making areas. */ + private double ipdAdjust = 0.0; + + /** Stretch or shrink value when adding spaces. */ private double m_dSpaceAdjust = 0.0; private int m_iLineHeight; @@ -183,6 +186,14 @@ public double getSpaceAdjust() { return m_dSpaceAdjust; + } + + public void setIPDAdjust(double ipdA) { + ipdAdjust = ipdA; + } + + public double getIPDAdjust() { + return ipdAdjust; } public void setLineHeight(int lh) { 1.11 +13 -3 xml-fop/src/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java Index: LeafNodeLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- LeafNodeLayoutManager.java 16 Aug 2002 12:44:07 -0000 1.10 +++ LeafNodeLayoutManager.java 22 Aug 2002 13:57:48 -0000 1.11 @@ -28,7 +28,7 @@ super(fobj); } - public InlineArea get() { + public InlineArea get(LayoutContext context) { return curArea; } @@ -68,7 +68,7 @@ public BreakPoss getNextBreakPoss(LayoutContext context, Position prevBreakPoss) { - curArea = get(); + curArea = get(context); if (curArea == null) { setFinished(true); return null; @@ -127,6 +127,16 @@ curArea.setOffset(context.getBaseline() - bpd); break; } + + double dAdjust = context.getIPDAdjust(); + MinOptMax ipd = curArea.getAllocationIPD(); + int width = ipd.opt; + if(dAdjust < 0) { + width = (int)(width + dAdjust * (ipd.opt - ipd.min)); + } else if(dAdjust > 0) { + width = (int)(width + dAdjust * (ipd.max - ipd.opt)); + } + curArea.setWidth(width); while (posIter.hasNext()) { posIter.next(); 1.15 +100 -45 xml-fop/src/org/apache/fop/layoutmgr/LineBPLayoutManager.java Index: LineBPLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/LineBPLayoutManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- LineBPLayoutManager.java 21 Aug 2002 09:17:42 -0000 1.14 +++ LineBPLayoutManager.java 22 Aug 2002 13:57:48 -0000 1.15 @@ -47,14 +47,18 @@ private static class LineBreakPosition extends LeafPosition { // int m_iPos; double m_dAdjust; // Percentage to adjust (stretch or shrink) + double ipdAdjust; // Percentage to adjust (stretch or shrink) + int startIndent; int lineHeight; int baseline; LineBreakPosition(BPLayoutManager lm, int iBreakIndex, - double dAdjust, int lh, int bl) { + double ipdA, double dAdjust, int ind, int lh, int bl) { super(lm, iBreakIndex); // m_iPos = iBreakIndex; + ipdAdjust = ipdA; m_dAdjust = dAdjust; + startIndent = ind; lineHeight = lh; baseline = bl; } @@ -65,7 +69,7 @@ private ArrayList m_vecInlineBreaks = new ArrayList(); private BreakPoss m_prevBP = null; // Last confirmed break position - private boolean m_bJustify = false; // True if fo:block text-align=JUSTIFY + private int bTextAlignment = TextAlign.JUSTIFY; private int m_iTextIndent = 0; private int m_iIndents = 0; private HyphenationProps m_hyphProps; @@ -90,7 +94,7 @@ MarginProps marginProps = propMgr.getMarginProps(); m_iIndents = marginProps.startIndent + marginProps.endIndent; BlockProps blockProps = propMgr.getBlockProps(); - m_bJustify = (blockProps.textAlign == TextAlign.JUSTIFY); + bTextAlignment = blockProps.textAlign; m_iTextIndent = blockProps.firstIndent; m_hyphProps = propMgr.getHyphenationProps(); } @@ -177,7 +181,7 @@ // This break position doesn't fit // TODO: If we are in nowrap, we use it as is! - if (m_bJustify || m_prevBP == null) { + if (bTextAlignment == TextAlign.JUSTIFY || m_prevBP == null) { // If we are already in a hyphenation loop, then stop. if (inlineLC.tryHyphenate()) { @@ -261,29 +265,15 @@ if (bp != m_prevBP && !bp.couldEndLine()) { reset(); } - // Distribute space in the line - MinOptMax actual; - if (bp != m_prevBP) { - MinOptMax mom = getPrevIPD(m_prevBP.getLayoutManager()); - if (mom != null) { - actual = MinOptMax.add(m_prevBP.getStackingSize(), mom); - } else { - actual = m_prevBP.getStackingSize(); - } - } else { - actual = m_prevBP.getStackingSize(); - } - // ATTENTION: make sure this hasn't gotten start space for next - // LM added onto it! - actual.add(m_prevBP.resolveTrailingSpace(true)); - //log.error("Target opt=" + availIPD.opt + " bp.opt=" + - // actual.opt + " bp.max=" + actual.max + " bm.min=" + - // actual.min); // Don't justify last line in the sequence or if forced line-end - boolean bJustify = (m_bJustify && !m_prevBP.isForcedBreak() && - !isFinished()); - return makeLineBreak(iPrevLineEnd, availIPD, actual, bJustify); + int talign = bTextAlignment; + if((bTextAlignment == TextAlign.JUSTIFY + && (m_prevBP.isForcedBreak() + || isFinished()))) { + talign = TextAlign.START; + } + return makeLineBreak(iPrevLineEnd, availIPD, talign); } @@ -399,23 +389,9 @@ private BreakPoss makeLineBreak(int prevLineEnd, MinOptMax target, - MinOptMax actual, boolean bJustify) { + int textalign) { // make a new BP // Store information needed to make areas in the LineBreakPosition! - // Calculate stretch or shrink factor - - double dAdjust = 0.0; - if (bJustify) { - if (actual.opt < target.opt) { - // Stretch - dAdjust = (double)(target.opt - actual.opt) / - (double)(actual.max - actual.opt); - } else { - // Shrink - dAdjust = (double)(target.opt - actual.opt) / - (double)(actual.opt - actual.min); - } - } // lead to baseline is // max of: baseline fixed alignment and middle/2 @@ -428,6 +404,11 @@ int maxtb = follow + halfLeading; // max size of middle alignment below baseline int middlefollow = maxtb; + + // calculate actual ipd + MinOptMax actual = new MinOptMax(); + BreakPoss lastBP = null; + LayoutManager lastLM = null; for(Iterator iter = m_vecInlineBreaks.listIterator(prevLineEnd); iter.hasNext(); ) { BreakPoss bp = (BreakPoss)iter.next(); @@ -439,15 +420,87 @@ } if(bp.getMiddle() > middlefollow) { middlefollow = bp.getMiddle(); - } + } + + // the stacking size of textLM accumulate for each break + // so the ipd is only added at the end of each LM + if(bp.getLayoutManager() != lastLM) { + if(lastLM != null) { + actual.add(lastBP.getStackingSize()); + } + lastLM = bp.getLayoutManager(); + } + lastBP = bp; } + if(lastBP != null) { + // add final ipd + actual.add(lastBP.getStackingSize()); + // ATTENTION: make sure this hasn't gotten start space for next + // LM added onto it! + actual.add(lastBP.resolveTrailingSpace(true)); + } + if(maxtb - lineLead > middlefollow) { middlefollow = maxtb - lineLead; } - //log.debug("Adjustment factor=" + dAdjust); - BreakPoss curLineBP = new BreakPoss( new LineBreakPosition(this, - m_vecInlineBreaks.size() - 1, dAdjust, lineLead + middlefollow, lineLead)); + // in 7.21.4 the spec suggests that the leader and other + // similar min/opt/max areas should be adjusted before + // adjusting word spacing + + // Calculate stretch or shrink factor + double ipdAdjust = 0; + int targetWith = target.opt; + int realWidth = actual.opt; + if (actual.opt > targetWith) { + if (actual.opt - targetWith < + (actual.opt - actual.min)) { + ipdAdjust = -(actual.opt - targetWith) / + (float)(actual.opt - actual.min); + realWidth = targetWith; + } else { + ipdAdjust = -1; + realWidth = actual.max; + } + } else { + if (targetWith - actual.opt < + actual.max - actual.opt) { + ipdAdjust = (targetWith - actual.opt) / + (float)(actual.max - actual.opt); + realWidth = targetWith; + } else { + ipdAdjust = 1; + realWidth = actual.min; + } + } + + // if justifying then set the space adjustment + // after the normal ipd adjustment + double dAdjust = 0.0; + int indent = 0; + switch (textalign) { + case TextAlign.JUSTIFY: + if(realWidth != 0) { + dAdjust = (targetWith - realWidth) / realWidth; + } + break; + case TextAlign.START: + //indent = 0; + break; + case TextAlign.CENTER: + indent = (targetWith - realWidth) / 2; + break; + case TextAlign.END: + indent = targetWith - realWidth; + break; + } + + LineBreakPosition lbp; + lbp = new LineBreakPosition(this, + m_vecInlineBreaks.size() - 1, + ipdAdjust, dAdjust, indent, + lineLead + middlefollow, lineLead); + BreakPoss curLineBP = new BreakPoss(lbp); curLineBP.setFlag(BreakPoss.ISLAST, isFinished()); curLineBP.setStackingSize(new MinOptMax(lineLead + middlefollow)); @@ -488,6 +541,7 @@ while (parentIter.hasNext()) { LineBreakPosition lbp = (LineBreakPosition) parentIter.next(); LineArea lineArea = new LineArea(); + lineArea.setStartIndent(lbp.startIndent); lineArea.setHeight(lbp.lineHeight); lc.setBaseline(lbp.baseline); lc.setLineHeight(lbp.lineHeight); @@ -498,6 +552,7 @@ lbp.getLeafPos() + 1); iStartPos = lbp.getLeafPos() + 1; lc.setSpaceAdjust(lbp.m_dAdjust); + lc.setIPDAdjust(lbp.ipdAdjust); lc.setLeadingSpace(new SpaceSpecifier(true)); lc.setFlags(LayoutContext.RESOLVE_LEADING_SPACE, true); setChildContext(lc); 1.19 +3 -2 xml-fop/src/org/apache/fop/render/AbstractRenderer.java Index: AbstractRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/AbstractRenderer.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- AbstractRenderer.java 7 Aug 2002 16:54:57 -0000 1.18 +++ AbstractRenderer.java 22 Aug 2002 13:57:48 -0000 1.19 @@ -320,7 +320,8 @@ // a line area is rendered from the top left position // of the line, each inline object is offset from there LineArea line = (LineArea) obj; - currentBlockIPPosition = currentIPPosition; + currentBlockIPPosition = currentIPPosition + + line.getStartIndent(); renderLineArea(line); currentBPPosition += line.getHeight(); } 1.116 +73 -9 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.115 retrieving revision 1.116 diff -u -r1.115 -r1.116 --- PDFRenderer.java 19 Aug 2002 11:54:53 -0000 1.115 +++ PDFRenderer.java 22 Aug 2002 13:57:48 -0000 1.116 @@ -618,15 +618,79 @@ } public void renderLeader(Leader area) { + closeText(); currentStream.add("ET\n"); - currentStream.add((((float) currentBlockIPPosition) / 1000f) + - " " + ((currentBPPosition + area.getOffset()) / - 1000f) + " m\n"); - currentStream.add( - ((currentBlockIPPosition + area.getWidth()) / 1000f) + - " " + ((currentBPPosition + area.getOffset()) / - 1000f) + " l\n"); - currentStream.add("S\n"); + currentStream.add("q\n"); + int style = area.getRuleStyle(); + boolean alt = false; + switch(style) { + case RuleStyle.SOLID: + currentStream.add("[] 0 d\n"); + break; + case RuleStyle.DOTTED: + currentStream.add("[2] 0 d\n"); + break; + case RuleStyle.DASHED: + currentStream.add("[6 4] 0 d\n"); + break; + case RuleStyle.DOUBLE: + case RuleStyle.GROOVE: + case RuleStyle.RIDGE: + alt = true; + break; + } + float startx = ((float) currentBlockIPPosition) / 1000f; + float starty = ((currentBPPosition + area.getOffset()) / 1000f); + float endx = (currentBlockIPPosition + area.getWidth()) / 1000f; + if(!alt) { + currentStream.add(area.getRuleThickness() / 1000f + " w\n"); + + currentStream.add(startx + " " + starty + " m\n"); + currentStream.add(endx + " " + starty + " l\n"); + currentStream.add("S\n"); + } else { + if(style == RuleStyle.DOUBLE) { + float third = area.getRuleThickness() / 3000f; + currentStream.add(third + " w\n"); + currentStream.add(startx + " " + starty + " m\n"); + currentStream.add(endx + " " + starty + " l\n"); + currentStream.add("S\n"); + + currentStream.add(startx + " " + (starty + 2 * third) + " m\n"); + currentStream.add(endx + " " + (starty + 2 * third) + " l\n"); + currentStream.add("S\n"); + } else { + float half = area.getRuleThickness() / 2000f; + + currentStream.add("1 g\n"); + currentStream.add(startx + " " + starty + " m\n"); + currentStream.add(endx + " " + starty + " l\n"); + currentStream.add(endx + " " + (starty + 2 * half) + " l\n"); + currentStream.add(startx + " " + (starty + 2 * half) + " l\n"); + currentStream.add("h\n"); + currentStream.add("f\n"); + if(style == RuleStyle.GROOVE) { + currentStream.add("0 g\n"); + currentStream.add(startx + " " + starty + " m\n"); + currentStream.add(endx + " " + starty + " l\n"); + currentStream.add(endx + " " + (starty + half) + " l\n"); + currentStream.add((startx + half) + " " + (starty + half) + " l\n"); + currentStream.add(startx + " " + (starty + 2 * half) + " l\n"); + } else { + currentStream.add("0 g\n"); + currentStream.add(endx + " " + starty + " m\n"); + currentStream.add(endx + " " + (starty + 2 * half) + " l\n"); + currentStream.add(startx + " " + (starty + 2 * half) + " l\n"); + currentStream.add(startx + " " + (starty + half) + " l\n"); + currentStream.add((endx - half) + " " + (starty + half) + " l\n"); + } + currentStream.add("h\n"); + currentStream.add("f\n"); + } + + } + + currentStream.add("Q\n"); currentStream.add("BT\n"); super.renderLeader(area); } 1.9 +8 -7 xml-fop/src/org/apache/fop/render/svg/SVGRenderer.java Index: SVGRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/svg/SVGRenderer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SVGRenderer.java 7 Aug 2002 16:54:58 -0000 1.8 +++ SVGRenderer.java 22 Aug 2002 13:57:49 -0000 1.9 @@ -15,6 +15,7 @@ import org.apache.fop.svg.SVGUtilities; import org.apache.fop.layout.FontInfo; import org.apache.fop.fo.FOUserAgent; +import org.apache.fop.fo.properties.RuleStyle; import org.w3c.dom.Node; import org.w3c.dom.ProcessingInstruction; @@ -316,19 +317,19 @@ String style = "stroke:black;stroke-width:" + (area.getRuleThickness() / 1000) + ";"; switch (area.getRuleStyle()) { - case Leader.DOTTED: + case RuleStyle.DOTTED: style += "stroke-dasharray:1,1"; break; - case Leader.DASHED: + case RuleStyle.DASHED: style += "stroke-dasharray:5,1"; break; - case Leader.SOLID: + case RuleStyle.SOLID: break; - case Leader.DOUBLE: + case RuleStyle.DOUBLE: break; - case Leader.GROOVE: + case RuleStyle.GROOVE: break; - case Leader.RIDGE: + case RuleStyle.RIDGE: break; } Element line = SVGUtilities.createLine(svgDocument, 1.41 +8 -7 xml-fop/src/org/apache/fop/render/xml/XMLRenderer.java Index: XMLRenderer.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/xml/XMLRenderer.java,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- XMLRenderer.java 7 Aug 2002 16:54:58 -0000 1.40 +++ XMLRenderer.java 22 Aug 2002 13:57:49 -0000 1.41 @@ -20,6 +20,7 @@ import org.apache.fop.fo.FOUserAgent; import org.apache.fop.layout.FontInfo; import org.apache.fop.apps.FOPException; +import org.apache.fop.fo.properties.RuleStyle; // Avalon import org.apache.avalon.framework.logger.Logger; @@ -364,21 +365,21 @@ public void renderLeader(Leader area) { String style = "solid"; switch (area.getRuleStyle()) { - case Leader.DOTTED: + case RuleStyle.DOTTED: style = "dotted"; break; - case Leader.DASHED: + case RuleStyle.DASHED: style = "dashed"; break; - case Leader.SOLID: + case RuleStyle.SOLID: break; - case Leader.DOUBLE: + case RuleStyle.DOUBLE: style = "double"; break; - case Leader.GROOVE: + case RuleStyle.GROOVE: style = "groove"; break; - case Leader.RIDGE: + case RuleStyle.RIDGE: style = "ridge"; break; } 1.12 +8 -7 xml-fop/src/org/apache/fop/tools/AreaTreeBuilder.java Index: AreaTreeBuilder.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/tools/AreaTreeBuilder.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- AreaTreeBuilder.java 7 Aug 2002 16:54:58 -0000 1.11 +++ AreaTreeBuilder.java 22 Aug 2002 13:57:49 -0000 1.12 @@ -20,6 +20,7 @@ import org.apache.fop.layout.FontState; import org.apache.fop.layout.FontMetric; import org.apache.fop.fo.FOUserAgent; +import org.apache.fop.fo.properties.RuleStyle; import org.apache.avalon.framework.logger.ConsoleLogger; import org.apache.avalon.framework.logger.AbstractLogEnabled; @@ -603,17 +604,17 @@ Leader leader = new Leader(); String rs = root.getAttribute("ruleStyle"); if ("solid".equals(rs)) { - leader.setRuleStyle(Leader.SOLID); + leader.setRuleStyle(RuleStyle.SOLID); } else if ("dotted".equals(rs)) { - leader.setRuleStyle(Leader.DOTTED); + leader.setRuleStyle(RuleStyle.DOTTED); } else if ("dashed".equals(rs)) { - leader.setRuleStyle(Leader.DASHED); + leader.setRuleStyle(RuleStyle.DASHED); } else if ("double".equals(rs)) { - leader.setRuleStyle(Leader.DOUBLE); + leader.setRuleStyle(RuleStyle.DOUBLE); } else if ("groove".equals(rs)) { - leader.setRuleStyle(Leader.GROOVE); + leader.setRuleStyle(RuleStyle.GROOVE); } else if ("ridge".equals(rs)) { - leader.setRuleStyle(Leader.RIDGE); + leader.setRuleStyle(RuleStyle.RIDGE); } String rt = root.getAttribute("ruleThickness"); int thick = Integer.parseInt(rt);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]