keiron 2003/02/18 21:49:29 Modified: src/org/apache/fop/layoutmgr AbstractLayoutManager.java BlockContainerLayoutManager.java BlockLayoutManager.java BlockStackingLayoutManager.java BreakPossPosIter.java ContentLayoutManager.java FlowLayoutManager.java InlineStackingLayoutManager.java LayoutManager.java LeafNodeLayoutManager.java LineLayoutManager.java MinOptMax.java PageLayoutManager.java StaticContentLayoutManager.java TextLayoutManager.java TraitSetter.java src/org/apache/fop/layoutmgr/list Item.java ListBlockLayoutManager.java ListItemLayoutManager.java src/org/apache/fop/layoutmgr/table Body.java Caption.java Cell.java Column.java Row.java TableAndCaptionLayoutManager.java TableLayoutManager.java Added: src/org/apache/fop/layoutmgr RetrieveMarkerLayoutManager.java Log: add and retrive markers use trait setter for area traits some style cleanups Revision Changes Path 1.21 +23 -65 xml-fop/src/org/apache/fop/layoutmgr/AbstractLayoutManager.java Index: AbstractLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/AbstractLayoutManager.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- AbstractLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.20 +++ AbstractLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.21 @@ -9,18 +9,16 @@ import org.apache.fop.fo.FObj; import org.apache.fop.fo.FOUserAgent; +import org.apache.fop.fo.flow.Marker; import org.apache.fop.area.Area; import org.apache.fop.area.Resolveable; import org.apache.fop.area.PageViewport; import org.apache.fop.fo.PropertyManager; -import org.apache.fop.area.Trait; -import org.apache.fop.layout.BorderAndPadding; -import org.apache.fop.layout.BackgroundProps; -import org.apache.fop.traits.BorderProps; import org.apache.avalon.framework.logger.Logger; import java.util.ListIterator; +import java.util.Map; /** * The base class for all LayoutManagers. @@ -30,6 +28,7 @@ protected LayoutManager parentLM = null; protected FObj fobj; protected String foID = null; + protected Map markers = null; /** True if this LayoutManager has handled all of its content. */ private boolean bFinished = false; @@ -37,7 +36,6 @@ protected ListIterator childLMiter; protected boolean bInited = false; - /** * Abstract layout manager. */ @@ -52,6 +50,7 @@ public void setFObj(FObj fo) { this.fobj = fo; foID = fobj.getID(); + markers = fobj.getMarkers(); childLMiter = new LMiter(fobj.getChildren()); } @@ -64,6 +63,11 @@ userAgent = ua; } + /** + * Get the user agent. + * + * @see org.apache.fop.layoutmgr.LayoutManager#getUserAgent() + */ public FOUserAgent getUserAgent() { return userAgent; } @@ -318,12 +322,22 @@ } /** + * Add the markers when adding an area. + */ + protected void addMarkers(boolean start) { + // add markers + if (markers != null) { + addMarkerMap(markers, start); + } + } + + /** * Delegate adding marker to the parent layout manager. * * @see org.apache.fop.layoutmgr.LayoutManager */ - public void addMarker(String name, LayoutManager lm, boolean start) { - parentLM.addMarker(name, lm, start); + public void addMarkerMap(Map marks, boolean start) { + parentLM.addMarkerMap(marks, start); } /** @@ -331,65 +345,9 @@ * * @see org.apache.fop.layoutmgr.LayoutManager */ - public LayoutManager retrieveMarker(String name, int pos, int boundary) { + public Marker retrieveMarker(String name, int pos, int boundary) { return parentLM.retrieveMarker(name, pos, boundary); } - /** - * Add borders to an area. - * Layout managers that create areas with borders can use this to - * add the borders to the area. - */ - public static void addBorders(Area curBlock, BorderAndPadding bordProps) { - BorderProps bps = getBorderProps(bordProps, BorderAndPadding.TOP); - if(bps.width != 0) { - curBlock.addTrait(Trait.BORDER_BEFORE, bps); - } - bps = getBorderProps(bordProps, BorderAndPadding.BOTTOM); - if(bps.width != 0) { - curBlock.addTrait(Trait.BORDER_AFTER, bps); - } - bps = getBorderProps(bordProps, BorderAndPadding.LEFT); - if(bps.width != 0) { - curBlock.addTrait(Trait.BORDER_START, bps); - } - bps = getBorderProps(bordProps, BorderAndPadding.RIGHT); - if(bps.width != 0) { - curBlock.addTrait(Trait.BORDER_END, bps); - } - } - - private static BorderProps getBorderProps(BorderAndPadding bordProps, int side) { - BorderProps bps; - bps = new BorderProps(bordProps.getBorderStyle(side), - bordProps.getBorderWidth(side, false), - bordProps.getBorderColor(side)); - return bps; - } - - /** - * Add background to an area. - * Layout managers that create areas with a background can use this to - * add the background to the area. - */ - public static void addBackground(Area curBlock, BackgroundProps backProps) { - Trait.Background back = new Trait.Background(); - back.color = backProps.backColor; - - if(backProps.backImage != null) { - back.url = backProps.backImage; - back.repeat = backProps.backRepeat; - if(backProps.backPosHorizontal != null) { - back.horiz = backProps.backPosHorizontal.mvalue(); - } - if(backProps.backPosVertical != null) { - back.vertical = backProps.backPosVertical.mvalue(); - } - } - - if(back.color != null || back.url != null) { - curBlock.addTrait(Trait.BACKGROUND, back); - } - } } 1.10 +22 -9 xml-fop/src/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java Index: BlockContainerLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- BlockContainerLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.9 +++ BlockContainerLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.10 @@ -7,13 +7,9 @@ package org.apache.fop.layoutmgr; -import org.apache.fop.fo.FObj; -import org.apache.fop.fo.TextInfo; import org.apache.fop.area.Area; -import org.apache.fop.area.BlockParent; import org.apache.fop.area.BlockViewport; import org.apache.fop.area.Block; -import org.apache.fop.area.LineArea; import org.apache.fop.fo.PropertyManager; import org.apache.fop.layout.AbsolutePositionProps; import org.apache.fop.fo.properties.AbsolutePosition; @@ -22,9 +18,9 @@ import org.apache.fop.area.CTM; import org.apache.fop.datatypes.FODimension; -import java.util.ListIterator; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.awt.geom.Rectangle2D; @@ -45,6 +41,9 @@ int overflow; PropertyManager propManager; + /** + * Create a new block container layout manager. + */ public BlockContainerLayoutManager() { } @@ -203,6 +202,9 @@ LayoutContext layoutContext) { getParentArea(null); + addID(); + addMarkers(true); + LayoutManager childLM ; int iStartPos = 0; LayoutContext lc = new LayoutContext(0); @@ -225,6 +227,13 @@ curBlockArea = null; } + /** + * Get the parent area for children of this block container. + * This returns the current block container area + * and creates it if required. + * + * @see org.apache.fop.layoutmgr.LayoutManager#getParentArea(Area) + */ public Area getParentArea(Area childArea) { if (curBlockArea == null) { viewportBlockArea = new BlockViewport(); @@ -272,7 +281,11 @@ return curBlockArea; } - + /** + * Add the child to the block container. + * + * @see org.apache.fop.layoutmgr.LayoutManager#addChild(Area) + */ public void addChild(Area childArea) { if (curBlockArea != null) { curBlockArea.addBlock((Block) childArea); @@ -285,8 +298,8 @@ } } - public void addMarker(String name, LayoutManager lm, boolean start) { - parentLM.addMarker(name, lm, start); + public void addMarkerMap(Map marks, boolean start) { + parentLM.addMarkerMap(marks, start); } } 1.28 +5 -7 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.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- BlockLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.27 +++ BlockLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.28 @@ -11,15 +11,11 @@ import org.apache.fop.fo.TextInfo; import org.apache.fop.fo.PropertyManager; import org.apache.fop.area.Area; -import org.apache.fop.area.BlockParent; import org.apache.fop.area.Block; import org.apache.fop.area.LineArea; -import org.apache.fop.area.Trait; import org.apache.fop.traits.LayoutProps; import org.apache.fop.layout.BorderAndPadding; import org.apache.fop.layout.BackgroundProps; -import org.apache.fop.traits.SpaceVal; -import org.apache.fop.traits.BorderProps; import java.util.ListIterator; import java.util.ArrayList; @@ -80,6 +76,7 @@ inlines.add(firstlm); while (proxy.hasNext()) { lm = (LayoutManager) proxy.next(); + lm.setParentLM(BlockLayoutManager.this); if (lm.generatesInlineAreas()) { inlines.add(lm); } else { @@ -222,6 +219,7 @@ addBlockSpacing(adjust, layoutProps.spaceBefore.space); addID(); + addMarkers(true); LayoutManager childLM ; LayoutContext lc = new LayoutContext(0); @@ -265,8 +263,8 @@ curBlockArea = new Block(); // set traits - addBorders(curBlockArea, borderProps); - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBorders(curBlockArea, borderProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); // Set up dimensions // Must get dimensions from parent area 1.16 +1 -4 xml-fop/src/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java Index: BlockStackingLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- BlockStackingLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.15 +++ BlockStackingLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.16 @@ -7,12 +7,9 @@ package org.apache.fop.layoutmgr; -import org.apache.fop.fo.FObj; import org.apache.fop.area.Area; import org.apache.fop.area.BlockParent; import org.apache.fop.area.Block; - -import java.util.Iterator; /** * Base LayoutManager class for all areas which stack their child 1.8 +2 -2 xml-fop/src/org/apache/fop/layoutmgr/BreakPossPosIter.java Index: BreakPossPosIter.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/BreakPossPosIter.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- BreakPossPosIter.java 13 Sep 2002 08:21:54 -0000 1.7 +++ BreakPossPosIter.java 19 Feb 2003 05:49:28 -0000 1.8 @@ -1,6 +1,6 @@ /* * $Id$ - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. + * Copyright (C) 2001-2003 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ 1.14 +6 -5 xml-fop/src/org/apache/fop/layoutmgr/ContentLayoutManager.java Index: ContentLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/ContentLayoutManager.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- ContentLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.13 +++ ContentLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.14 @@ -8,6 +8,7 @@ import org.apache.fop.fo.FObj; import org.apache.fop.fo.FOUserAgent; +import org.apache.fop.fo.flow.Marker; import org.apache.fop.area.Area; import org.apache.fop.area.Resolveable; import org.apache.fop.area.PageViewport; @@ -15,9 +16,9 @@ import org.apache.avalon.framework.logger.Logger; import java.util.List; +import java.util.Map; import java.util.ArrayList; - /** * Content Layout Manager. * For use with objects that contain inline areas such as @@ -213,12 +214,12 @@ } /** @see org.apache.fop.layoutmgr.LayoutManager */ - public void addMarker(String name, LayoutManager lm, boolean start) { - parentLM.addMarker(name, lm, start); + public void addMarkerMap(Map marks, boolean start) { + parentLM.addMarkerMap(marks, start); } /** @see org.apache.fop.layoutmgr.LayoutManager */ - public LayoutManager retrieveMarker(String name, int pos, int boundary) { + public Marker retrieveMarker(String name, int pos, int boundary) { return parentLM.retrieveMarker(name, pos, boundary); } } 1.19 +8 -10 xml-fop/src/org/apache/fop/layoutmgr/FlowLayoutManager.java Index: FlowLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/FlowLayoutManager.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- FlowLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.18 +++ FlowLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.19 @@ -1,16 +1,15 @@ /* * $Id$ - * Copyright (C) 2002 The Apache Software Foundation. All rights reserved. + * Copyright (C) 2002-2003 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ package org.apache.fop.layoutmgr; -import org.apache.fop.apps.FOPException; -import org.apache.fop.fo.FObj; -import org.apache.fop.fo.properties.Constants; -import org.apache.fop.area.*; +import org.apache.fop.fo.flow.Marker; +import org.apache.fop.area.Area; +import org.apache.fop.area.BlockParent; import java.util.ArrayList; import java.util.List; @@ -28,6 +27,8 @@ /** Array of areas currently being filled stored by area class */ private BlockParent[] currentAreas = new BlockParent[Area.CLASS_MAX]; + int iStartPos = 0; + /** * This is the top level layout manager. * It is created by the PageSequence FO. @@ -90,8 +91,6 @@ return null; } - int iStartPos = 0; - public void addAreas(PositionIterator parentIter, LayoutContext layoutContext) { LayoutManager childLM; @@ -111,7 +110,6 @@ flush(); } - /** * Add child area to a the correct container, depending on its * area class. A Flow can fill at most one area container of any class @@ -143,7 +141,7 @@ * * @see org.apache.fop.layoutmgr.LayoutManager */ - public LayoutManager retrieveMarker(String name, int pos, int boundary) { + public Marker retrieveMarker(String name, int pos, int boundary) { // error cannot retrieve markers in flow getLogger().error("Cannot retrieve a marker from the flow"); return null; 1.11 +3 -3 xml-fop/src/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java Index: InlineStackingLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- InlineStackingLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.10 +++ InlineStackingLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.11 @@ -509,10 +509,10 @@ borderProps, bAreaCreated, !bIsLast); if(borderProps != null) { - addBorders(getCurrentArea(), borderProps); + TraitSetter.addBorders(getCurrentArea(), borderProps); } if(backgroundProps != null) { - addBackground(getCurrentArea(), backgroundProps); + TraitSetter.addBackground(getCurrentArea(), backgroundProps); } parentLM.addChild(getCurrentArea()); 1.15 +53 -6 xml-fop/src/org/apache/fop/layoutmgr/LayoutManager.java Index: LayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/LayoutManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- LayoutManager.java 14 Feb 2003 04:15:07 -0000 1.14 +++ LayoutManager.java 19 Feb 2003 05:49:28 -0000 1.15 @@ -9,11 +9,14 @@ import org.apache.fop.fo.FOUserAgent; import org.apache.fop.fo.FObj; +import org.apache.fop.fo.flow.Marker; import org.apache.fop.area.Area; import org.apache.fop.area.Resolveable; import org.apache.fop.area.PageViewport; +import java.util.Map; + /** * The interface for all LayoutManagers. */ @@ -29,7 +32,8 @@ public void setFObj(FObj obj); /** - * Set the user agent. + * Set the user agent. For resolving user agent values + * and getting logger. * * @param ua the user agent */ @@ -50,6 +54,9 @@ */ public void setParentLM(LayoutManager lm); + /** + * Initialise this layout manager. + */ public void init(); /** @@ -64,27 +71,47 @@ /** * Return true if the next area which would be generated by this * LayoutManager could start a new line (or flow for block-level FO). + * + * @param lc the layout context + * @return true if can break before */ public boolean canBreakBefore(LayoutContext lc); /** * Generate and return the next break possibility. + * * @param context The layout context contains information about pending * space specifiers from ancestor areas or previous areas, reference * area inline-progression-dimension and various other layout-related * information. + * @return the next break position */ public BreakPoss getNextBreakPoss(LayoutContext context); - + /** + * Reset to the position. + * + * @param position + */ public void resetPosition(Position position); + /** + * Get the word chars between two positions and + * append to the string buffer. The positions could + * span multiple layout managers. + * + * @param sbChars the string buffer to append the word chars + * @param bp1 the start position + * @param bp2 the end position + */ public void getWordChars(StringBuffer sbChars, Position bp1, Position bp2); /** * Return a value indicating whether this LayoutManager has laid out * all its content (or generated BreakPossibilities for all content.) + * + * @return true if this layout manager is finished */ public boolean isFinished(); @@ -92,16 +119,37 @@ * Set a flag indicating whether the LayoutManager has laid out all * its content. This is generally called by the LM itself, but can * be called by a parentLM when backtracking. + * + * @param isFinished the value to set the finished flag to */ public void setFinished(boolean isFinished); + /** + * Get the parent area for an area. + * This should get the parent depending on the class of the + * area passed in. + * + * @param childArea the child area to get the parent for + * @return the parent Area + */ public Area getParentArea(Area childArea); + + /** + * Add the area as a child of the current area. + * This is called by child layout managers to add their + * areas as children of the current area. + * + * @param childArea the child area to add + */ public void addChild(Area childArea); /** * Tell the layout manager to add all the child areas implied * by Position objects which will be returned by the * Iterator. + * + * @param posIter the position iterator + * @param context the context */ public void addAreas(PositionIterator posIter, LayoutContext context); @@ -148,7 +196,7 @@ * @param lm the layout manager of the marker child * @param start true if the formatting object is starting false is finishing */ - public void addMarker(String name, LayoutManager lm, boolean start); + public void addMarkerMap(Map marks, boolean start); /** * Retrieve a marker. @@ -159,7 +207,6 @@ * @param boundary the boundary for retrieving the marker * @return the layout manaager of the retrieved marker if any */ - public LayoutManager retrieveMarker(String name, int pos, int boundary); + public Marker retrieveMarker(String name, int pos, int boundary); } - 1.22 +1 -2 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.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- LeafNodeLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.21 +++ LeafNodeLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.22 @@ -7,7 +7,6 @@ package org.apache.fop.layoutmgr; -import org.apache.fop.fo.FObj; import org.apache.fop.area.Area; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.fo.properties.VerticalAlign; 1.22 +1 -11 xml-fop/src/org/apache/fop/layoutmgr/LineLayoutManager.java Index: LineLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/LineLayoutManager.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- LineLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.21 +++ LineLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.22 @@ -7,30 +7,20 @@ package org.apache.fop.layoutmgr; - -import org.apache.fop.fo.FObj; -import org.apache.fop.fo.TextInfo; import org.apache.fop.fo.PropertyManager; import org.apache.fop.layout.MarginProps; import org.apache.fop.layout.HyphenationProps; import org.apache.fop.layout.hyphenation.Hyphenation; import org.apache.fop.layout.hyphenation.Hyphenator; import org.apache.fop.traits.BlockProps; -import org.apache.fop.area.Area; import org.apache.fop.area.LineArea; -import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.Resolveable; import org.apache.fop.fo.properties.TextAlign; -import org.apache.fop.area.inline.Word; -import org.apache.fop.area.inline.Space; -import org.apache.fop.area.inline.Character; - import java.util.ListIterator; import java.util.Iterator; import java.util.List; import java.util.ArrayList; - /** * LayoutManager for lines. It builds one or more lines containing 1.2 +16 -1 xml-fop/src/org/apache/fop/layoutmgr/MinOptMax.java Index: MinOptMax.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/MinOptMax.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MinOptMax.java 13 Feb 2003 04:24:17 -0000 1.1 +++ MinOptMax.java 19 Feb 2003 05:49:28 -0000 1.2 @@ -20,14 +20,29 @@ public int opt; public int max; + /** + * New min/opt/max with zero values. + */ public MinOptMax() { this(0); } + /** + * New min/opt/max with one fixed value. + * + * @param val the value for min, opt and max + */ public MinOptMax(int val) { this(val, val, val); } + /** + * New min/opt/max with the three values. + * + * @param min the minimum value + * @param opt the optimum value + * @param max the maximum value + */ public MinOptMax(int min, int opt, int max) { this.min = min; this.opt = opt; 1.29 +10 -10 xml-fop/src/org/apache/fop/layoutmgr/PageLayoutManager.java Index: PageLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/PageLayoutManager.java,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- PageLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.28 +++ PageLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.29 @@ -20,6 +20,7 @@ import org.apache.fop.area.BeforeFloat; import org.apache.fop.area.Footnote; import org.apache.fop.area.Resolveable; +import org.apache.fop.fo.flow.Marker; import org.apache.fop.fo.flow.StaticContent; import org.apache.fop.fo.pagination.PageSequence; import org.apache.fop.fo.pagination.Region; @@ -29,6 +30,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * LayoutManager for a PageSequence and its flow. @@ -264,12 +266,10 @@ * @param lm the layout manager for the marker contents * @param start true if starting marker area, false for ending */ - public void addMarker(String name, LayoutManager lm, boolean start) { - if (start) { - // add marker to page on area tree - } else { - // add end marker to page on area tree - } + public void addMarkerMap(Map marks, boolean start) { + getLogger().debug("adding markers: " + marks + ":" + start); + // add markers to page on area tree + curPage.addMarkers(marks, start); } /** @@ -280,9 +280,10 @@ * @param boundary the boundary for locating the marker * @return the layout manager for the marker contents */ - public LayoutManager retrieveMarker(String name, int pos, int boundary) { + public Marker retrieveMarker(String name, int pos, int boundary) { // get marker from the current markers on area tree - return null; + Marker mark = (Marker)curPage.getMarker(name, pos); + return mark; } /** @@ -342,7 +343,6 @@ protected void placeBeforeFloat(Area area) { } - protected void placeSideFloat(Area area) { } 1.10 +1 -2 xml-fop/src/org/apache/fop/layoutmgr/StaticContentLayoutManager.java Index: StaticContentLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/StaticContentLayoutManager.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- StaticContentLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.9 +++ StaticContentLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.10 @@ -7,7 +7,6 @@ package org.apache.fop.layoutmgr; -import org.apache.fop.fo.FObj; import org.apache.fop.area.RegionReference; import org.apache.fop.area.Area; import org.apache.fop.area.Block; 1.20 +1 -8 xml-fop/src/org/apache/fop/layoutmgr/TextLayoutManager.java Index: TextLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/TextLayoutManager.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- TextLayoutManager.java 14 Feb 2003 04:15:07 -0000 1.19 +++ TextLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.20 @@ -7,22 +7,15 @@ package org.apache.fop.layoutmgr; -import org.apache.fop.fo.FObj; import org.apache.fop.fo.TextInfo; import org.apache.fop.traits.SpaceVal; -import org.apache.fop.area.Area; -import org.apache.fop.area.LineArea; import org.apache.fop.area.Trait; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.inline.Word; import org.apache.fop.area.inline.Space; import org.apache.fop.util.CharUtilities; -import org.apache.fop.fo.properties.VerticalAlign; - -//import org.apache.fop.fo.properties.*; import java.util.ArrayList; -import java.util.List; /** * LayoutManager for text (a sequence of characters) which generates one 1.4 +58 -1 xml-fop/src/org/apache/fop/layoutmgr/TraitSetter.java Index: TraitSetter.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/TraitSetter.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TraitSetter.java 25 Oct 2002 09:29:45 -0000 1.3 +++ TraitSetter.java 19 Feb 2003 05:49:28 -0000 1.4 @@ -11,6 +11,7 @@ import org.apache.fop.traits.BorderProps; import org.apache.fop.area.Area; import org.apache.fop.area.Trait; +import org.apache.fop.layout.BackgroundProps; public class TraitSetter { @@ -66,4 +67,60 @@ } } + /** + * Add borders to an area. + * Layout managers that create areas with borders can use this to + * add the borders to the area. + */ + public static void addBorders(Area curBlock, BorderAndPadding bordProps) { + BorderProps bps = getBorderProps(bordProps, BorderAndPadding.TOP); + if(bps.width != 0) { + curBlock.addTrait(Trait.BORDER_BEFORE, bps); + } + bps = getBorderProps(bordProps, BorderAndPadding.BOTTOM); + if(bps.width != 0) { + curBlock.addTrait(Trait.BORDER_AFTER, bps); + } + bps = getBorderProps(bordProps, BorderAndPadding.LEFT); + if(bps.width != 0) { + curBlock.addTrait(Trait.BORDER_START, bps); + } + bps = getBorderProps(bordProps, BorderAndPadding.RIGHT); + if(bps.width != 0) { + curBlock.addTrait(Trait.BORDER_END, bps); + } + } + + private static BorderProps getBorderProps(BorderAndPadding bordProps, int side) { + BorderProps bps; + bps = new BorderProps(bordProps.getBorderStyle(side), + bordProps.getBorderWidth(side, false), + bordProps.getBorderColor(side)); + return bps; + } + + /** + * Add background to an area. + * Layout managers that create areas with a background can use this to + * add the background to the area. + */ + public static void addBackground(Area curBlock, BackgroundProps backProps) { + Trait.Background back = new Trait.Background(); + back.color = backProps.backColor; + + if(backProps.backImage != null) { + back.url = backProps.backImage; + back.repeat = backProps.backRepeat; + if(backProps.backPosHorizontal != null) { + back.horiz = backProps.backPosHorizontal.mvalue(); + } + if(backProps.backPosVertical != null) { + back.vertical = backProps.backPosVertical.mvalue(); + } + } + + if(back.color != null || back.url != null) { + curBlock.addTrait(Trait.BACKGROUND, back); + } + } } 1.1 xml-fop/src/org/apache/fop/layoutmgr/RetrieveMarkerLayoutManager.java Index: RetrieveMarkerLayoutManager.java =================================================================== /* * $Id: RetrieveMarkerLayoutManager.java,v 1.1 2003/02/19 05:49:28 keiron Exp $ * Copyright (C) 2003 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ package org.apache.fop.layoutmgr; import java.util.ArrayList; import java.util.List; import org.apache.fop.area.Area; import org.apache.fop.fo.flow.Marker; /** * LayoutManager for a block FO. */ public class RetrieveMarkerLayoutManager extends AbstractLayoutManager { private LayoutManager replaceLM = null; private boolean loaded = false; private String name; /** * Create a new block container layout manager. */ public RetrieveMarkerLayoutManager(String n, int pos, int bound) { name = n; } public boolean generatesInlineAreas() { loadLM(); if (replaceLM == null) { return true; } return replaceLM.generatesInlineAreas(); } public BreakPoss getNextBreakPoss(LayoutContext context) { loadLM(); if (replaceLM == null) { return null; } getLogger().debug("getting breaks"); return replaceLM.getNextBreakPoss(context); } public void addAreas(PositionIterator parentIter, LayoutContext layoutContext) { loadLM(); addID(); replaceLM.addAreas(parentIter, layoutContext); } public boolean isFinished() { if (replaceLM == null) { return true; } return replaceLM.isFinished(); } public void setFinished(boolean fin) { if (replaceLM != null) { replaceLM.setFinished(fin); } } protected void loadLM() { if (loaded) { return; } loaded = true; if (replaceLM == null) { List list = new ArrayList(); Marker marker = retrieveMarker(name, 0, 0); marker.addLayoutManager(list); if (list.size() > 0) { replaceLM = (LayoutManager)list.get(0); replaceLM.setParentLM(this); replaceLM.init(); getLogger().debug("retrieved: " + replaceLM + ":" + list.size()); } else { getLogger().debug("found no marker with name: " + name); } } } /** * Get the parent area for children of this block container. * This returns the current block container area * and creates it if required. * * @see org.apache.fop.layoutmgr.LayoutManager#getParentArea(Area) */ public Area getParentArea(Area childArea) { return parentLM.getParentArea(childArea); } /** * Add the child to the block container. * * @see org.apache.fop.layoutmgr.LayoutManager#addChild(Area) */ public void addChild(Area childArea) { parentLM.addChild(childArea); } public void resetPosition(Position resetPos) { loadLM(); if (resetPos == null) { reset(null); } if (replaceLM != null) { replaceLM.resetPosition(resetPos); } loaded = false; replaceLM = null; } } 1.9 +4 -4 xml-fop/src/org/apache/fop/layoutmgr/list/Item.java Index: Item.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/list/Item.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Item.java 14 Feb 2003 04:15:08 -0000 1.8 +++ Item.java 19 Feb 2003 05:49:29 -0000 1.9 @@ -16,7 +16,7 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; @@ -169,10 +169,10 @@ } if (borderProps != null) { - addBorders(curBlockArea, borderProps); + TraitSetter.addBorders(curBlockArea, borderProps); } if (backgroundProps != null) { - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); } flush(); 1.9 +4 -4 xml-fop/src/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java Index: ListBlockLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ListBlockLayoutManager.java 14 Feb 2003 04:15:08 -0000 1.8 +++ ListBlockLayoutManager.java 19 Feb 2003 05:49:29 -0000 1.9 @@ -16,7 +16,7 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; @@ -162,10 +162,10 @@ } if(borderProps != null) { - addBorders(curBlockArea, borderProps); + TraitSetter.addBorders(curBlockArea, borderProps); } if(backgroundProps != null) { - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); } flush(); 1.10 +1 -2 xml-fop/src/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java Index: ListItemLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- ListItemLayoutManager.java 14 Feb 2003 04:15:08 -0000 1.9 +++ ListItemLayoutManager.java 19 Feb 2003 05:49:29 -0000 1.10 @@ -16,7 +16,6 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; 1.11 +3 -3 xml-fop/src/org/apache/fop/layoutmgr/table/Body.java Index: Body.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/Body.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- Body.java 14 Feb 2003 04:15:08 -0000 1.10 +++ Body.java 19 Feb 2003 05:49:29 -0000 1.11 @@ -16,7 +16,7 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; @@ -258,7 +258,7 @@ Area curBlockArea = new Block(); if(backgroundProps != null) { - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); } return curBlockArea; } 1.7 +1 -2 xml-fop/src/org/apache/fop/layoutmgr/table/Caption.java Index: Caption.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/Caption.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Caption.java 14 Feb 2003 04:15:08 -0000 1.6 +++ Caption.java 19 Feb 2003 05:49:29 -0000 1.7 @@ -15,7 +15,6 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; 1.11 +4 -4 xml-fop/src/org/apache/fop/layoutmgr/table/Cell.java Index: Cell.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/Cell.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- Cell.java 14 Feb 2003 04:15:08 -0000 1.10 +++ Cell.java 19 Feb 2003 05:49:29 -0000 1.11 @@ -16,7 +16,7 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; @@ -189,10 +189,10 @@ } if(borderProps != null) { - addBorders(curBlockArea, borderProps); + TraitSetter.addBorders(curBlockArea, borderProps); } if(backgroundProps != null) { - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); } curBlockArea.setHeight(height); 1.4 +3 -2 xml-fop/src/org/apache/fop/layoutmgr/table/Column.java Index: Column.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/Column.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Column.java 14 Feb 2003 04:15:08 -0000 1.3 +++ Column.java 19 Feb 2003 05:49:29 -0000 1.4 @@ -13,6 +13,7 @@ import org.apache.fop.layoutmgr.BreakPoss; import org.apache.fop.layoutmgr.LayoutContext; import org.apache.fop.layoutmgr.PositionIterator; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.fo.flow.TableColumn; import org.apache.fop.area.Area; import org.apache.fop.area.Block; @@ -103,7 +104,7 @@ Area curBlockArea = new Block(); if(backgroundProps != null) { - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); } return curBlockArea; } 1.12 +3 -3 xml-fop/src/org/apache/fop/layoutmgr/table/Row.java Index: Row.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/Row.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Row.java 14 Feb 2003 04:15:08 -0000 1.11 +++ Row.java 19 Feb 2003 05:49:29 -0000 1.12 @@ -16,7 +16,7 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; @@ -367,7 +367,7 @@ public Area getRowArea() { Area block = new Block(); if(backgroundProps != null) { - addBackground(block, backgroundProps); + TraitSetter.addBackground(block, backgroundProps); } return block; } 1.7 +1 -2 xml-fop/src/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java Index: TableAndCaptionLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- TableAndCaptionLayoutManager.java 14 Feb 2003 04:15:08 -0000 1.6 +++ TableAndCaptionLayoutManager.java 19 Feb 2003 05:49:29 -0000 1.7 @@ -15,7 +15,6 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; 1.11 +4 -4 xml-fop/src/org/apache/fop/layoutmgr/table/TableLayoutManager.java Index: TableLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/TableLayoutManager.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- TableLayoutManager.java 14 Feb 2003 04:15:08 -0000 1.10 +++ TableLayoutManager.java 19 Feb 2003 05:49:29 -0000 1.11 @@ -16,7 +16,7 @@ import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; -import org.apache.fop.fo.FObj; +import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; import org.apache.fop.layoutmgr.MinOptMax; @@ -288,10 +288,10 @@ curBlockArea.setHeight(tableHeight); if(borderProps != null) { - addBorders(curBlockArea, borderProps); + TraitSetter.addBorders(curBlockArea, borderProps); } if(backgroundProps != null) { - addBackground(curBlockArea, backgroundProps); + TraitSetter.addBackground(curBlockArea, backgroundProps); } flush();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]