ASF Bugzilla – Attachment 13325 Details for
Bug 32054
Pluggable area creation: AreaFactory
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
AreaFactory patch
AreaFactoryPhase2.patch (text/plain), 51.34 KB, created by
Tibor Vyletel
on 2004-11-04 11:32:02 UTC
(
hide
)
Description:
AreaFactory patch
Filename:
MIME Type:
Creator:
Tibor Vyletel
Created:
2004-11-04 11:32:02 UTC
Size:
51.34 KB
patch
obsolete
>Index: apps/FOUserAgent.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/apps/FOUserAgent.java,v >retrieving revision 1.19 >diff -u -r1.19 FOUserAgent.java >--- apps/FOUserAgent.java 24 Oct 2004 00:03:49 -0000 1.19 >+++ apps/FOUserAgent.java 4 Nov 2004 03:16:20 -0000 >@@ -35,6 +35,8 @@ > import org.apache.commons.logging.LogFactory; > > // FOP >+import org.apache.fop.area.AreaFactory; >+import org.apache.fop.area.DefaultAreaFactory; > import org.apache.fop.fo.ElementMapping; > import org.apache.fop.fo.FOEventHandler; > import org.apache.fop.pdf.PDFEncryptionParams; >@@ -74,6 +76,8 @@ > private InputHandler inputHandler = null; > private Renderer rendererOverride = null; > private FOEventHandler foEventHandlerOverride = null; >+ private AreaFactory areaFactory = null; >+ > /* user configuration */ > private Configuration userConfig = null; > private Log log = LogFactory.getLog("FOP"); >@@ -341,6 +345,17 @@ > */ > public boolean linkToFootnotes() { > return true; >+ } >+ >+ public void setAreaFactory(AreaFactory factory) { >+ this.areaFactory = factory; >+ } >+ >+ public AreaFactory getAreaFactory() { >+ if (areaFactory == null) >+ return DefaultAreaFactory.getInstance(); >+ else >+ return areaFactory; > } > > } >Index: area/RegionViewport.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/area/RegionViewport.java,v >retrieving revision 1.5 >diff -u -r1.5 RegionViewport.java >--- area/RegionViewport.java 22 Sep 2004 08:19:48 -0000 1.5 >+++ area/RegionViewport.java 4 Nov 2004 03:16:20 -0000 >@@ -32,13 +32,17 @@ > private Rectangle2D viewArea; > private boolean clip = false; > >+ public RegionViewport() { >+ super(); >+ } > /** > * Create a new region viewport. > * > * @param viewArea the view area of this viewport > */ > public RegionViewport(Rectangle2D viewArea) { >- this.viewArea = viewArea; >+ this(); >+ setViewArea(viewArea); > } > > /** >@@ -75,6 +79,10 @@ > */ > public Rectangle2D getViewArea() { > return viewArea; >+ } >+ >+ public void setViewArea(Rectangle2D viewArea) { >+ this.viewArea = viewArea; > } > > private void writeObject(java.io.ObjectOutputStream out) >Index: area/Span.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/area/Span.java,v >retrieving revision 1.2 >diff -u -r1.2 Span.java >--- area/Span.java 27 Feb 2004 17:41:26 -0000 1.2 >+++ area/Span.java 4 Nov 2004 03:16:20 -0000 >@@ -30,6 +30,9 @@ > private List flowAreas; > private int height; > >+ public Span() { >+ this(1); >+ } > /** > * Create a span area with the number of columns for this span area. > * >Index: area/inline/Viewport.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/area/inline/Viewport.java,v >retrieving revision 1.4 >diff -u -r1.4 Viewport.java >--- area/inline/Viewport.java 27 Feb 2004 17:40:58 -0000 1.4 >+++ area/inline/Viewport.java 4 Nov 2004 03:16:20 -0000 >@@ -38,13 +38,17 @@ > // position of the cild area relative to this area > private Rectangle2D contentPosition; > >+ public Viewport() { >+ >+ } > /** > * Create a new viewport area with the content area. > * > * @param child the child content area of this viewport > */ > public Viewport(Area child) { >- content = child; >+ this(); >+ setContent(child); > } > > /** >@@ -83,6 +87,9 @@ > return contentPosition; > } > >+ public void setContent(Area child) { >+ content = child; >+ } > /** > * Get the content area for this viewport. > * >Index: layoutmgr/AbstractLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/AbstractLayoutManager.java,v >retrieving revision 1.30 >diff -u -r1.30 AbstractLayoutManager.java >--- layoutmgr/AbstractLayoutManager.java 24 Oct 2004 00:03:50 -0000 1.30 >+++ layoutmgr/AbstractLayoutManager.java 4 Nov 2004 03:16:20 -0000 >@@ -20,7 +20,9 @@ > > import org.apache.fop.fo.FObj; > import org.apache.fop.fo.FONode; >+import org.apache.fop.apps.FOUserAgent; > import org.apache.fop.area.Area; >+import org.apache.fop.area.AreaFactory; > import org.apache.fop.area.Resolvable; > import org.apache.fop.area.PageViewport; > import org.apache.fop.fo.Constants; >@@ -43,6 +45,7 @@ > protected List childLMs = new ArrayList(10); > protected ListIterator fobjIter = null; > protected Map markers = null; >+ protected FOUserAgent userAgent = null; > > /** True if this LayoutManager has handled all of its content. */ > private boolean bFinished = false; >@@ -84,6 +87,7 @@ > markers = fo.getMarkers(); > fobjIter = fo.getChildNodes(); > childLMiter = new LMiter(this); >+ userAgent = fo.getUserAgent(); > } > > /** >@@ -460,5 +464,8 @@ > } > } > >+ protected AreaFactory getAreaFactory() { >+ return (userAgent != null) ? userAgent.getAreaFactory() : null; >+ } > } > >Index: layoutmgr/BlockContainerLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java,v >retrieving revision 1.26 >diff -u -r1.26 BlockContainerLayoutManager.java >--- layoutmgr/BlockContainerLayoutManager.java 28 Oct 2004 15:21:54 -0000 1.26 >+++ layoutmgr/BlockContainerLayoutManager.java 4 Nov 2004 03:16:20 -0000 >@@ -275,7 +275,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- viewportBlockArea = new BlockViewport(); >+ viewportBlockArea = getAreaFactory().createBlockViewport(fobj, this); >+ > TraitSetter.addBorders(viewportBlockArea, fobj.getCommonBorderPaddingBackground()); > TraitSetter.addBackground(viewportBlockArea, fobj.getCommonBorderPaddingBackground()); > >@@ -316,7 +317,7 @@ > } > } > >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); > > if (abProps.absolutePosition == AbsolutePosition.ABSOLUTE) { > viewportBlockArea.setPositioning(Block.ABSOLUTE); >Index: layoutmgr/BlockLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java,v >retrieving revision 1.32 >diff -u -r1.32 BlockLayoutManager.java >--- layoutmgr/BlockLayoutManager.java 20 Oct 2004 11:55:32 -0000 1.32 >+++ layoutmgr/BlockLayoutManager.java 4 Nov 2004 03:16:21 -0000 >@@ -18,18 +18,18 @@ > > package org.apache.fop.layoutmgr; > >-import java.util.ListIterator; > import java.util.ArrayList; > import java.util.List; >+import java.util.ListIterator; > >-import org.apache.fop.datatypes.PercentBase; >-import org.apache.fop.fonts.Font; > import org.apache.fop.area.Area; > import org.apache.fop.area.Block; > import org.apache.fop.area.BlockParent; > import org.apache.fop.area.LineArea; >-import org.apache.fop.traits.SpaceVal; >+import org.apache.fop.datatypes.PercentBase; >+import org.apache.fop.fonts.Font; > import org.apache.fop.traits.MinOptMax; >+import org.apache.fop.traits.SpaceVal; > > /** > * LayoutManager for a block FO. >@@ -312,7 +312,7 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); > > // set traits > TraitSetter.addBorders(curBlockArea, fobj.getCommonBorderPaddingBackground()); >Index: layoutmgr/BlockStackingLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java,v >retrieving revision 1.9 >diff -u -r1.9 BlockStackingLayoutManager.java >--- layoutmgr/BlockStackingLayoutManager.java 20 Oct 2004 13:41:06 -0000 1.9 >+++ layoutmgr/BlockStackingLayoutManager.java 4 Nov 2004 03:16:21 -0000 >@@ -35,7 +35,7 @@ > */ > protected LayoutManager curChildLM = null; > protected BlockParent parentArea = null; >- >+ > public BlockStackingLayoutManager(FObj node) { > super(node); > } >@@ -86,7 +86,7 @@ > sp = sp + (int)(adjust * (minoptmax.opt - minoptmax.min)); > } > if (sp != 0) { >- Block spacer = new Block(); >+ Block spacer = getAreaFactory().createBlock(null, this); > spacer.setBPD(sp); > parentLM.addChild(spacer); > } >Index: layoutmgr/CharacterLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/CharacterLayoutManager.java,v >retrieving revision 1.7 >diff -u -r1.7 CharacterLayoutManager.java >--- layoutmgr/CharacterLayoutManager.java 20 Oct 2004 13:19:24 -0000 1.7 >+++ layoutmgr/CharacterLayoutManager.java 4 Nov 2004 03:16:21 -0000 >@@ -56,9 +56,7 @@ > } > > private InlineArea getCharacterInlineArea(Character node) { >- org.apache.fop.area.inline.Character ch = >- new org.apache.fop.area.inline.Character(node.getCharacter()); >- return ch; >+ return getAreaFactory().createCharacter(node, this); > } > > /** >Index: layoutmgr/ExternalGraphicLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/ExternalGraphicLayoutManager.java,v >retrieving revision 1.13 >diff -u -r1.13 ExternalGraphicLayoutManager.java >--- layoutmgr/ExternalGraphicLayoutManager.java 29 Oct 2004 09:17:34 -0000 1.13 >+++ layoutmgr/ExternalGraphicLayoutManager.java 4 Nov 2004 03:16:21 -0000 >@@ -22,7 +22,6 @@ > import java.awt.geom.Rectangle2D; > > // FOP >-import org.apache.fop.area.inline.Image; > import org.apache.fop.area.inline.InlineArea; > import org.apache.fop.area.inline.Viewport; > import org.apache.fop.datatypes.Length; >@@ -210,8 +209,9 @@ > * @return the viewport containing the image area > */ > public InlineArea getExternalGraphicInlineArea() { >- Image imArea = new Image(fobj.getSrc()); >- Viewport vp = new Viewport(imArea); >+ Viewport vp = getAreaFactory().createViewport(null, this); >+ vp.setContent(getAreaFactory().createImage(fobj, this)); >+ > vp.setIPD(viewWidth); > vp.setBPD(viewHeight); > vp.setClip(clip); >Index: layoutmgr/InlineStackingLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java,v >retrieving revision 1.15 >diff -u -r1.15 InlineStackingLayoutManager.java >--- layoutmgr/InlineStackingLayoutManager.java 20 Oct 2004 21:07:02 -0000 1.15 >+++ layoutmgr/InlineStackingLayoutManager.java 4 Nov 2004 03:16:21 -0000 >@@ -56,6 +56,7 @@ > } > > >+ private FObj fobj; > /** > * Size of any start or end borders and padding. > */ >@@ -88,6 +89,7 @@ > */ > public InlineStackingLayoutManager(FObj node) { > super(node); >+ this.fobj = node; > } > > /** >@@ -410,7 +412,7 @@ > *****/ > > protected InlineParent createArea() { >- return new InlineParent(); >+ return getAreaFactory().createInlineParent(fobj, this); > } > > /** >@@ -557,7 +559,7 @@ > } > if (iAdjust != 0) { > //getLogger().debug("Add leading space: " + iAdjust); >- Space ls = new Space(); >+ Space ls = getAreaFactory().createSpace(fobj, this); > ls.setIPD(iAdjust); > parentArea.addChild(ls); > } >Index: layoutmgr/InstreamForeignObjectLM.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/InstreamForeignObjectLM.java,v >retrieving revision 1.9 >diff -u -r1.9 InstreamForeignObjectLM.java >--- layoutmgr/InstreamForeignObjectLM.java 28 Oct 2004 15:21:54 -0000 1.9 >+++ layoutmgr/InstreamForeignObjectLM.java 4 Nov 2004 03:16:21 -0000 >@@ -26,7 +26,6 @@ > import org.apache.fop.datatypes.Length; > import org.apache.fop.fo.XMLObj; > import org.apache.fop.fo.flow.InstreamForeignObject; >-import org.apache.fop.area.inline.ForeignObject; > import org.apache.fop.area.inline.Viewport; > > /** >@@ -169,19 +168,16 @@ > > Rectangle2D placement = new Rectangle2D.Float(xoffset, yoffset, cwidth, cheight); > >- org.w3c.dom.Document doc = child.getDOMDocument(); >- String ns = child.getDocumentNamespace(); >- >- fobj.childNodes = null; >- ForeignObject foreign = new ForeignObject(doc, ns); >- >- Viewport areaCurrent = new Viewport(foreign); >+ Viewport areaCurrent = getAreaFactory().createViewport(fobj, this); >+ areaCurrent.setContent(getAreaFactory().createForeignObject(fobj, this)); >+ > areaCurrent.setIPD(ipd); > areaCurrent.setBPD(bpd); > areaCurrent.setContentPosition(placement); > areaCurrent.setClip(clip); > areaCurrent.setOffset(0); > >+ fobj.childNodes = null; > return areaCurrent; > } > >Index: layoutmgr/LeaderLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/LeaderLayoutManager.java,v >retrieving revision 1.11 >diff -u -r1.11 LeaderLayoutManager.java >--- layoutmgr/LeaderLayoutManager.java 20 Oct 2004 21:07:02 -0000 1.11 >+++ layoutmgr/LeaderLayoutManager.java 4 Nov 2004 03:16:21 -0000 >@@ -72,15 +72,11 @@ > InlineArea leaderArea = null; > > if (fobj.getLeaderPattern() == LeaderPattern.RULE) { >- org.apache.fop.area.inline.Leader leader = >- new org.apache.fop.area.inline.Leader(); >- leader.setRuleStyle(fobj.getRuleStyle()); >- leader.setRuleThickness(fobj.getRuleThickness().getValue()); >- leaderArea = leader; >+ leaderArea = getAreaFactory().createLeader(fobj, this); > } else if (fobj.getLeaderPattern() == LeaderPattern.SPACE) { >- leaderArea = new Space(); >+ leaderArea = getAreaFactory().createSpace(fobj, this); > } else if (fobj.getLeaderPattern() == LeaderPattern.DOTS) { >- TextArea t = new TextArea(); >+ TextArea t = getAreaFactory().createTextArea(fobj, this); > char dot = '.'; // userAgent.getLeaderDotCharacter(); > > t.setTextArea("" + dot); >@@ -91,11 +87,11 @@ > int width = font.getCharWidth(dot); > Space spacer = null; > if (fobj.getLeaderPatternWidth().getValue() > width) { >- spacer = new Space(); >+ spacer = getAreaFactory().createSpace(fobj, this); > spacer.setIPD(fobj.getLeaderPatternWidth().getValue() - width); > width = fobj.getLeaderPatternWidth().getValue(); > } >- FilledArea fa = new FilledArea(); >+ FilledArea fa = getAreaFactory().createFilledArea(fobj, this); > fa.setUnitWidth(width); > fa.addChild(t); > if (spacer != null) { >@@ -114,7 +110,7 @@ > fobjIter = null; > > // get breaks then add areas to FilledArea >- FilledArea fa = new FilledArea(); >+ FilledArea fa = getAreaFactory().createFilledArea(fobj, this); > > ContentLayoutManager clm = new ContentLayoutManager(fa); > clm.setUserAgent(fobj.getUserAgent()); >@@ -128,7 +124,7 @@ > int width = clm.getStackingSize(); > Space spacer = null; > if (fobj.getLeaderPatternWidth().getValue() > width) { >- spacer = new Space(); >+ spacer = getAreaFactory().createSpace(fobj, lm); > spacer.setIPD(fobj.getLeaderPatternWidth().getValue() - width); > width = fobj.getLeaderPatternWidth().getValue(); > } >Index: layoutmgr/LineLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java,v >retrieving revision 1.31 >diff -u -r1.31 LineLayoutManager.java >--- layoutmgr/LineLayoutManager.java 24 Oct 2004 00:03:50 -0000 1.31 >+++ layoutmgr/LineLayoutManager.java 4 Nov 2004 03:16:22 -0000 >@@ -1410,7 +1410,7 @@ > LayoutManager lastLM = null; > > LineBreakPosition lbp = (LineBreakPosition) parentIter.next(); >- LineArea lineArea = new LineArea(); >+ LineArea lineArea = getAreaFactory().createLine(fobj, this); > lineArea.setStartIndent(lbp.startIndent); > lineArea.setBPD(lbp.lineHeight); > lc.setBaseline(lbp.baseline); >Index: layoutmgr/PageNumberCitationLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/PageNumberCitationLayoutManager.java,v >retrieving revision 1.10 >diff -u -r1.10 PageNumberCitationLayoutManager.java >--- layoutmgr/PageNumberCitationLayoutManager.java 24 Oct 2004 00:03:50 -0000 1.10 >+++ layoutmgr/PageNumberCitationLayoutManager.java 4 Nov 2004 03:16:22 -0000 >@@ -76,7 +76,7 @@ > if (page != null) { > String str = page.getPageNumber(); > // get page string from parent, build area >- TextArea text = new TextArea(); >+ TextArea text = getAreaFactory().createTextArea(fobj, this); > inline = text; > int width = getStringWidth(str); > text.setTextArea(str); >Index: layoutmgr/PageNumberLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/PageNumberLayoutManager.java,v >retrieving revision 1.5 >diff -u -r1.5 PageNumberLayoutManager.java >--- layoutmgr/PageNumberLayoutManager.java 20 Oct 2004 21:07:02 -0000 1.5 >+++ layoutmgr/PageNumberLayoutManager.java 4 Nov 2004 03:16:22 -0000 >@@ -45,7 +45,7 @@ > > public InlineArea get(LayoutContext context) { > // get page string from parent, build area >- TextArea inline = new TextArea(); >+ TextArea inline = getAreaFactory().createTextArea(fobj, this); > String str = parentLM.getCurrentPageNumber(); > int width = 0; > for (int count = 0; count < str.length(); count++) { >Index: layoutmgr/PageSequenceLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java,v >retrieving revision 1.10 >diff -u -r1.10 PageSequenceLayoutManager.java >--- layoutmgr/PageSequenceLayoutManager.java 24 Oct 2004 00:03:50 -0000 1.10 >+++ layoutmgr/PageSequenceLayoutManager.java 4 Nov 2004 03:16:22 -0000 >@@ -31,7 +31,6 @@ > import org.apache.fop.area.RegionViewport; > import org.apache.fop.area.RegionReference; > import org.apache.fop.area.BodyRegion; >-import org.apache.fop.area.MainReference; > import org.apache.fop.area.Span; > import org.apache.fop.area.BeforeFloat; > import org.apache.fop.area.Footnote; >@@ -194,7 +193,7 @@ > */ > private LineArea getTitleArea(Title foTitle) { > // get breaks then add areas to title >- LineArea title = new LineArea(); >+ LineArea title = getAreaFactory().createLine(foTitle, this); > > ContentLayoutManager clm = new ContentLayoutManager(title); > clm.setUserAgent(foTitle.getUserAgent()); >@@ -598,14 +597,14 @@ > if (aclass == Area.CLASS_BEFORE_FLOAT) { > BeforeFloat bf = curBody.getBeforeFloat(); > if (bf == null) { >- bf = new BeforeFloat(); >+ bf = getAreaFactory().createBeforeFloat(fobj, this); > curBody.setBeforeFloat(bf); > } > return bf; > } else if (aclass == Area.CLASS_FOOTNOTE) { > Footnote fn = curBody.getFootnote(); > if (fn == null) { >- fn = new Footnote(); >+ fn = getAreaFactory().createFootnote(fobj, this); > curBody.setFootnote(fn); > } > return fn; >@@ -689,11 +688,12 @@ > } > > private void createBodyMainReferenceArea() { >- curBody.setMainReference(new MainReference()); >+ curBody.setMainReference(getAreaFactory().createMainReference(fobj, this)); > } > > private Flow createFlow() { >- curFlow = new Flow(); >+ curFlow = getAreaFactory().createFlow(fobj, this); >+ > curFlow.setIPD(curSpan.getIPD()); // adjust for columns > //curFlow.setBPD(100000); > // Set IPD and max BPD on the curFlow from curBody >@@ -713,7 +713,7 @@ > //newpos.add(curSpan.getDimension(BPD)); > //} > //else newpos = new MinOptMax(); >- curSpan = new Span(numCols); >+ curSpan = getAreaFactory().createSpan(fobj, this); // new Span(numCols); > curSpanColumns = numCols; > // get Width or Height as IPD for span > >@@ -831,7 +831,8 @@ > Rectangle2D absRegionRect = pageCTM.transform(relRegionRect); > // Get the region viewport rectangle in absolute coords by > // transforming it using the page CTM >- RegionViewport rv = new RegionViewport(absRegionRect); >+ RegionViewport rv = getAreaFactory().createRegionViewport(fobj, this); >+ rv.setViewArea(absRegionRect); > setRegionViewportTraits(r, rv); > return rv; > } >@@ -852,7 +853,7 @@ > private RegionReference makeRegionBodyReferenceArea(RegionBody r, > Rectangle2D absRegVPRect) { > // Should set some column stuff here I think, or put it elsewhere >- BodyRegion body = new BodyRegion(); >+ BodyRegion body = getAreaFactory().createBodyRegion(r, this); > setRegionPosition(r, body, absRegVPRect); > int columnCount = r.getColumnCount(); > if ((columnCount > 1) && (r.getOverflow() == Overflow.SCROLL)) { >@@ -878,7 +879,7 @@ > */ > private RegionReference makeRegionReferenceArea(Region r, > Rectangle2D absRegVPRect) { >- RegionReference rr = new RegionReference(r.getNameId()); >+ RegionReference rr = getAreaFactory().createRegionReference(r, this); > setRegionPosition(r, rr, absRegVPRect); > return rr; > } >Index: layoutmgr/TextLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java,v >retrieving revision 1.25 >diff -u -r1.25 TextLayoutManager.java >--- layoutmgr/TextLayoutManager.java 20 Oct 2004 13:41:06 -0000 1.25 >+++ layoutmgr/TextLayoutManager.java 4 Nov 2004 03:16:23 -0000 >@@ -26,6 +26,7 @@ > import org.apache.fop.fo.FOText; > import org.apache.fop.fonts.Font; > import org.apache.fop.traits.SpaceVal; >+import org.apache.fop.area.AreaFactory; > import org.apache.fop.area.Trait; > import org.apache.fop.area.inline.InlineArea; > import org.apache.fop.area.inline.TextArea; >@@ -607,7 +608,7 @@ > * @return the new word area > */ > protected TextArea createTextArea(String str, int width, int base) { >- TextArea textArea = new TextArea(); >+ TextArea textArea = getAreaFactory().createTextArea(null, this); > textArea.setIPD(width); > textArea.setBPD(fs.getAscender() - fs.getDescender()); > textArea.setOffset(fs.getAscender()); >@@ -1002,6 +1003,11 @@ > sbChars.append(new String(textArray, ai.iStartIndex, > ai.iBreakIndex - ai.iStartIndex)); > } >+ } >+ >+ >+ protected AreaFactory getAreaFactory() { >+ return foText.getUserAgent().getAreaFactory(); > } > } > >Index: layoutmgr/list/Item.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/list/Item.java,v >retrieving revision 1.10 >diff -u -r1.10 Item.java >--- layoutmgr/list/Item.java 20 Oct 2004 13:39:33 -0000 1.10 >+++ layoutmgr/list/Item.java 4 Nov 2004 03:16:23 -0000 >@@ -222,7 +222,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); >+ > curBlockArea.setPositioning(Block.ABSOLUTE); > // set position > curBlockArea.setXOffset(xoffset); >Index: layoutmgr/list/ListBlockLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java,v >retrieving revision 1.9 >diff -u -r1.9 ListBlockLayoutManager.java >--- layoutmgr/list/ListBlockLayoutManager.java 20 Oct 2004 13:19:25 -0000 1.9 >+++ layoutmgr/list/ListBlockLayoutManager.java 4 Nov 2004 03:16:24 -0000 >@@ -190,7 +190,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); >+ > // Set up dimensions > // Must get dimensions from parent area > Area parentArea = parentLM.getParentArea(curBlockArea); >Index: layoutmgr/list/ListItemLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java,v >retrieving revision 1.16 >diff -u -r1.16 ListItemLayoutManager.java >--- layoutmgr/list/ListItemLayoutManager.java 20 Oct 2004 13:19:25 -0000 1.16 >+++ layoutmgr/list/ListItemLayoutManager.java 4 Nov 2004 03:16:24 -0000 >@@ -257,7 +257,7 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); > > // Set up dimensions > Area parentArea = parentLM.getParentArea(curBlockArea); >Index: layoutmgr/table/Body.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/Body.java,v >retrieving revision 1.11 >diff -u -r1.11 Body.java >--- layoutmgr/table/Body.java 20 Oct 2004 13:19:25 -0000 1.11 >+++ layoutmgr/table/Body.java 4 Nov 2004 03:16:24 -0000 >@@ -251,7 +251,7 @@ > * @return the new body area > */ > public Area createColumnArea() { >- Area curBlockArea = new Block(); >+ Area curBlockArea = getAreaFactory().createBlock(fobj, this); > > TraitSetter.addBackground(curBlockArea, fobj.getCommonBorderPaddingBackground()); > return curBlockArea; >Index: layoutmgr/table/Caption.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/Caption.java,v >retrieving revision 1.5 >diff -u -r1.5 Caption.java >--- layoutmgr/table/Caption.java 20 Oct 2004 13:19:25 -0000 1.5 >+++ layoutmgr/table/Caption.java 4 Nov 2004 03:16:24 -0000 >@@ -176,7 +176,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); >+ > // Set up dimensions > // Must get dimensions from parent area > Area parentArea = parentLM.getParentArea(curBlockArea); >Index: layoutmgr/table/Cell.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/Cell.java,v >retrieving revision 1.11 >diff -u -r1.11 Cell.java >--- layoutmgr/table/Cell.java 19 Oct 2004 21:48:17 -0000 1.11 >+++ layoutmgr/table/Cell.java 4 Nov 2004 03:16:25 -0000 >@@ -223,7 +223,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); >+ > curBlockArea.setPositioning(Block.ABSOLUTE); > // set position > curBlockArea.setXOffset(xoffset); >Index: layoutmgr/table/Column.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/Column.java,v >retrieving revision 1.8 >diff -u -r1.8 Column.java >--- layoutmgr/table/Column.java 20 Oct 2004 13:19:25 -0000 1.8 >+++ layoutmgr/table/Column.java 4 Nov 2004 03:16:25 -0000 >@@ -26,7 +26,6 @@ > 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; > > /** > * LayoutManager for a table-column FO. >@@ -97,7 +96,7 @@ > * @return the new column area > */ > public Area createColumnArea() { >- Area curBlockArea = new Block(); >+ Area curBlockArea = getAreaFactory().createBlock(fobj, this); > > TraitSetter.addBackground(curBlockArea, fobj.getCommonBorderPaddingBackground()); > return curBlockArea; >Index: layoutmgr/table/Row.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/Row.java,v >retrieving revision 1.15 >diff -u -r1.15 Row.java >--- layoutmgr/table/Row.java 20 Oct 2004 13:19:25 -0000 1.15 >+++ layoutmgr/table/Row.java 4 Nov 2004 03:16:25 -0000 >@@ -29,7 +29,6 @@ > import org.apache.fop.layoutmgr.Position; > import org.apache.fop.layoutmgr.TraitSetter; > import org.apache.fop.area.Area; >-import org.apache.fop.area.Block; > import org.apache.fop.traits.MinOptMax; > > import java.util.Iterator; >@@ -363,7 +362,7 @@ > * @return the row area > */ > public Area getRowArea() { >- Area block = new Block(); >+ Area block = getAreaFactory().createBlock(fobj, this); > TraitSetter.addBackground(block, fobj.getCommonBorderPaddingBackground()); > return block; > } >Index: layoutmgr/table/TableAndCaptionLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java,v >retrieving revision 1.5 >diff -u -r1.5 TableAndCaptionLayoutManager.java >--- layoutmgr/table/TableAndCaptionLayoutManager.java 20 Oct 2004 13:19:25 -0000 1.5 >+++ layoutmgr/table/TableAndCaptionLayoutManager.java 4 Nov 2004 03:16:25 -0000 >@@ -177,7 +177,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); >+ > // Set up dimensions > // Must get dimensions from parent area > Area parentArea = parentLM.getParentArea(curBlockArea); >Index: layoutmgr/table/TableLayoutManager.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java,v >retrieving revision 1.14 >diff -u -r1.14 TableLayoutManager.java >--- layoutmgr/table/TableLayoutManager.java 19 Oct 2004 21:48:17 -0000 1.14 >+++ layoutmgr/table/TableLayoutManager.java 4 Nov 2004 03:16:25 -0000 >@@ -116,17 +116,17 @@ > */ > public BreakPoss getNextBreakPoss(LayoutContext context) { > Body curLM; // currently active LM >- >+ > MinOptMax stackSize = new MinOptMax(); > // if starting add space before > // stackSize.add(spaceBefore); > BreakPoss lastPos = null; >- >+ > fobj.setLayoutDimension(PercentBase.BLOCK_IPD, context.getRefIPD()); > fobj.setLayoutDimension(PercentBase.BLOCK_BPD, context.getStackLimit().opt); > fobj.setLayoutDimension(PercentBase.REFERENCE_AREA_IPD, context.getRefIPD()); > fobj.setLayoutDimension(PercentBase.REFERENCE_AREA_BPD, context.getStackLimit().opt); >- >+ > // either works out table of column widths or if proportional-column-width function > // is used works out total factor, so that value of single unit can be computed. > int sumCols = 0; >@@ -155,7 +155,7 @@ > headerSize = headerBreak.getStackingSize(); > stackSize.add(headerSize); > } >- >+ > MinOptMax footerSize = null; > if (tableFooter != null) { > tableFooter.resetPosition(null); >@@ -163,7 +163,7 @@ > footerSize = footerBreak.getStackingSize(); > stackSize.add(footerSize); > } >- >+ > if (stackSize.opt > context.getStackLimit().max) { > BreakPoss breakPoss = new BreakPoss( > new LeafPosition(this, 0)); >@@ -171,21 +171,21 @@ > breakPoss.setStackingSize(stackSize); > return breakPoss; > } >- >+ > while ((curLM = (Body)getChildLM()) != null) { > // Make break positions > // Set up a LayoutContext > int ipd = context.getRefIPD(); > BreakPoss bp; >- >+ > LayoutContext childLC = new LayoutContext(0); > childLC.setStackLimit( > MinOptMax.subtract(context.getStackLimit(), > stackSize)); > childLC.setRefIPD(ipd); >- >+ > curLM.setColumns(columns); >- >+ > boolean over = false; > while (!curLM.isFinished()) { > if ((bp = curLM.getNextBreakPoss(childLC)) != null) { >@@ -206,12 +206,12 @@ > stackSize.add(bp.getStackingSize()); > lastPos = bp; > bodyBreaks.add(bp); >- >+ > if (bp.nextBreakOverflows()) { > over = true; > break; > } >- >+ > childLC.setStackLimit(MinOptMax.subtract( > context.getStackLimit(), stackSize)); > } >@@ -344,7 +344,8 @@ > */ > public Area getParentArea(Area childArea) { > if (curBlockArea == null) { >- curBlockArea = new Block(); >+ curBlockArea = getAreaFactory().createBlock(fobj, this); >+ > // Set up dimensions > // Must get dimensions from parent area > Area parentArea = parentLM.getParentArea(curBlockArea); >Index: render/awt/AWTRenderer.java >=================================================================== >RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/render/awt/AWTRenderer.java,v >retrieving revision 1.32 >diff -u -r1.32 AWTRenderer.java >--- render/awt/AWTRenderer.java 22 Sep 2004 13:12:38 -0000 1.32 >+++ render/awt/AWTRenderer.java 4 Nov 2004 03:16:26 -0000 >@@ -113,6 +113,7 @@ > return userAgent; > } > >+ > /** > * @see org.apache.fop.render.Renderer > */ >@@ -159,8 +160,10 @@ > > public void stopRenderer() > throws IOException { >- frame.setStatus(translator.getString("Status.Show")); >- frame.showPage(); >+ if (frame != null){ >+ frame.setStatus(translator.getString("Status.Show")); >+ frame.showPage(); >+ } > } > > // Printable Interface >@@ -180,7 +183,7 @@ > return 0; > } > >- private PreviewDialog createPreviewDialog() { >+ protected PreviewDialog createPreviewDialog() { > frame = new PreviewDialog(userAgent); > frame.addWindowListener(new WindowAdapter() { > public void windowClosed(WindowEvent we) { >Index: area/AreaFactory.java >=================================================================== >RCS file: area/AreaFactory.java >diff -N area/AreaFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ area/AreaFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,80 @@ >+/* >+ * Copyright 1999-2004 The Apache Software Foundation. >+ * >+ * Licensed under the Apache License, Version 2.0 (the "License"); >+ * you may not use this file except in compliance with the License. >+ * You may obtain a copy of the License at >+ * >+ * http://www.apache.org/licenses/LICENSE-2.0 >+ * >+ * Unless required by applicable law or agreed to in writing, software >+ * distributed under the License is distributed on an "AS IS" BASIS, >+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >+ * See the License for the specific language governing permissions and >+ * limitations under the License. >+ */ >+ >+package org.apache.fop.area; >+ >+import org.apache.fop.area.inline.Character; >+import org.apache.fop.area.inline.FilledArea; >+import org.apache.fop.area.inline.ForeignObject; >+import org.apache.fop.area.inline.Image; >+import org.apache.fop.area.inline.InlineParent; >+import org.apache.fop.area.inline.Leader; >+import org.apache.fop.area.inline.Space; >+import org.apache.fop.area.inline.TextArea; >+import org.apache.fop.area.inline.Viewport; >+import org.apache.fop.fo.FObj; >+import org.apache.fop.layoutmgr.LayoutManager; >+ >+/** >+ * Interface for objects serving as creators of area classes. >+ * >+ */ >+public interface AreaFactory { >+ >+ // generic area creation: >+ Area create(Class areaType, FObj fobj, LayoutManager caller); >+ >+ // types area creation: >+ BeforeFloat createBeforeFloat(FObj fobj, LayoutManager caller); >+ >+ Block createBlock(FObj fobj, LayoutManager caller); >+ >+ BlockViewport createBlockViewport(FObj fobj, LayoutManager caller); >+ >+ BodyRegion createBodyRegion(FObj fobj, LayoutManager caller); >+ >+ Character createCharacter(FObj fobj, LayoutManager caller); >+ >+ FilledArea createFilledArea(FObj fobj, LayoutManager caller); >+ >+ Flow createFlow(FObj fobj, LayoutManager caller); >+ >+ Footnote createFootnote(FObj fobj, LayoutManager caller); >+ >+ ForeignObject createForeignObject(FObj fobj, LayoutManager caller); >+ >+ Image createImage(FObj fobj, LayoutManager caller); >+ >+ InlineParent createInlineParent(FObj fobj, LayoutManager caller); >+ >+ Leader createLeader(FObj fobj, LayoutManager caller); >+ >+ LineArea createLine(FObj fobj, LayoutManager caller); >+ >+ MainReference createMainReference(FObj fobj, LayoutManager caller); >+ >+ RegionReference createRegionReference(FObj fobj, LayoutManager caller); >+ >+ RegionViewport createRegionViewport(FObj fobj, LayoutManager caller); >+ >+ Space createSpace(FObj fobj, LayoutManager caller); >+ >+ Span createSpan(FObj fobj, LayoutManager caller); >+ >+ TextArea createTextArea(FObj fobj, LayoutManager caller); >+ >+ Viewport createViewport(FObj fobj, LayoutManager caller); >+} >Index: area/DefaultAreaFactory.java >=================================================================== >RCS file: area/DefaultAreaFactory.java >diff -N area/DefaultAreaFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ area/DefaultAreaFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,342 @@ >+/* >+ * Copyright 1999-2004 The Apache Software Foundation. >+ * >+ * Licensed under the Apache License, Version 2.0 (the "License"); >+ * you may not use this file except in compliance with the License. >+ * You may obtain a copy of the License at >+ * >+ * http://www.apache.org/licenses/LICENSE-2.0 >+ * >+ * Unless required by applicable law or agreed to in writing, software >+ * distributed under the License is distributed on an "AS IS" BASIS, >+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >+ * See the License for the specific language governing permissions and >+ * limitations under the License. >+ */ >+ >+package org.apache.fop.area; >+ >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.apache.fop.area.inline.Character; >+import org.apache.fop.area.inline.FilledArea; >+import org.apache.fop.area.inline.ForeignObject; >+import org.apache.fop.area.inline.Image; >+import org.apache.fop.area.inline.InlineParent; >+import org.apache.fop.area.inline.Leader; >+import org.apache.fop.area.inline.Space; >+import org.apache.fop.area.inline.TextArea; >+import org.apache.fop.area.inline.Viewport; >+import org.apache.fop.fo.FObj; >+import org.apache.fop.fo.XMLObj; >+import org.apache.fop.fo.flow.ExternalGraphic; >+import org.apache.fop.fo.flow.InstreamForeignObject; >+import org.apache.fop.fo.pagination.Region; >+import org.apache.fop.layoutmgr.LayoutManager; >+ >+public class DefaultAreaFactory implements AreaFactory { >+ >+ private static DefaultAreaFactory instance; >+ >+ protected Map registry; >+ >+ public DefaultAreaFactory() { >+ registry = new HashMap(); >+ initialize(); >+ } >+ >+ public static AreaFactory getInstance() { >+ if (instance == null) >+ instance = new DefaultAreaFactory(); >+ >+ return instance; >+ } >+ >+ public Area create(Class type, FObj fobj, LayoutManager caller) { >+ if (registry.containsKey(type)) >+ return ((AreaMaker)registry.get(type)).create(fobj, caller); >+ >+ return null; >+ } >+ >+ public BeforeFloat createBeforeFloat(FObj fobj, LayoutManager caller) { >+ return (BeforeFloat)create(BeforeFloat.class, fobj, caller); >+ } >+ >+ public Block createBlock(FObj fobj, LayoutManager caller) { >+ return (Block)create(Block.class, fobj, caller); >+ } >+ >+ public BlockViewport createBlockViewport(FObj fobj, LayoutManager caller) { >+ return (BlockViewport)create(BlockViewport.class, fobj, caller); >+ } >+ >+ public BodyRegion createBodyRegion(FObj fobj, LayoutManager caller) { >+ return (BodyRegion)create(BodyRegion.class, fobj, caller); >+ } >+ >+ public Character createCharacter(FObj fobj, LayoutManager caller) { >+ return (Character)create(Character.class, fobj, caller); >+ } >+ >+ public FilledArea createFilledArea(FObj fobj, LayoutManager caller) { >+ return (FilledArea)create(FilledArea.class, fobj, caller); >+ } >+ >+ public Flow createFlow(FObj fobj, LayoutManager caller) { >+ return (Flow)create(Flow.class, fobj, caller); >+ } >+ >+ public Footnote createFootnote(FObj fobj, LayoutManager caller) { >+ return (Footnote)create(Footnote.class, fobj, caller); >+ } >+ >+ public ForeignObject createForeignObject(FObj fobj, LayoutManager caller) { >+ return (ForeignObject)create(ForeignObject.class, fobj, caller); >+ } >+ >+ public Image createImage(FObj fobj, LayoutManager caller) { >+ return (Image)create(Image.class, fobj, caller); >+ } >+ >+ public InlineParent createInlineParent(FObj fobj, LayoutManager caller) { >+ return (InlineParent)create(InlineParent.class, fobj, caller); >+ } >+ >+ public Leader createLeader(FObj fobj, LayoutManager caller) { >+ return (Leader)create(Leader.class, fobj, caller); >+ } >+ >+ public LineArea createLine(FObj fobj, LayoutManager caller) { >+ return (LineArea)create(LineArea.class, fobj, caller); >+ } >+ >+ public MainReference createMainReference(FObj fobj, LayoutManager caller) { >+ return (MainReference)create(MainReference.class, fobj, caller); >+ } >+ >+ public RegionReference createRegionReference(FObj fobj, LayoutManager caller) { >+ return (RegionReference)create(RegionReference.class, fobj, caller); >+ } >+ >+ public RegionViewport createRegionViewport(FObj fobj, LayoutManager caller) { >+ return (RegionViewport)create(RegionViewport.class, fobj, caller); >+ } >+ >+ public Space createSpace(FObj fobj, LayoutManager caller) { >+ return (Space)create(Space.class, fobj, caller); >+ } >+ >+ public Span createSpan(FObj fobj, LayoutManager caller) { >+ return (Span)create(Span.class, fobj, caller); >+ } >+ >+ public TextArea createTextArea(FObj fobj, LayoutManager caller) { >+ return (TextArea)create(TextArea.class, fobj, caller); >+ } >+ >+ public Viewport createViewport(FObj fobj, LayoutManager caller) { >+ return (Viewport)create(Viewport.class, fobj, caller); >+ } >+ >+ protected void initialize() { >+ register(BeforeFloat.class, new BeforeFloatMaker()); >+ register(Block.class, new BlockMaker()); >+ register(BlockViewport.class, new BlockViewportMaker()); >+ register(BodyRegion.class, new BodyRegionMaker()); >+ register(Character.class, new CharacterMaker()); >+ register(FilledArea.class, new FilledAreaMaker()); >+ register(Flow.class, new FlowMaker()); >+ register(Footnote.class, new FootnoteMaker()); >+ register(ForeignObject.class, new ForeignObjectMaker()); >+ register(Image.class, new ImageMaker()); >+ register(InlineParent.class, new InlineParentMaker()); >+ register(Leader.class, new LeaderMaker()); >+ register(LineArea.class, new LineAreaMaker()); >+ register(MainReference.class, new MainReferenceMaker()); >+ register(RegionReference.class, new RegionReferenceMaker()); >+ register(RegionViewport.class, new RegionViewportMaker()); >+ register(Space.class, new SpaceMaker()); >+ register(Span.class, new SpanMaker()); >+ register(TextArea.class, new TextAreaMaker()); >+ register(Viewport.class, new ViewportMaker()); >+ } >+ >+ protected void register(Class areaType, AreaMaker maker) { >+ registry.put(areaType, maker); >+ } >+ >+ protected void unregister(Class areaType) { >+ registry.remove(areaType); >+ } >+ >+/* ***************************** CREATOR INTERFACE ************************** */ >+ >+ protected interface AreaMaker { >+ Area create(FObj fobj, LayoutManager caller); >+ } >+ >+/* ******************************* AREA CREATORS **************************** */ >+ class BeforeFloatMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new BeforeFloat(); >+ } >+ } >+ >+ class BlockMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Block(); >+ } >+ } >+ >+ class BlockViewportMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new BlockViewport(); >+ } >+ } >+ >+ class BodyRegionMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new BodyRegion(); >+ } >+ } >+ >+ class CharacterMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Character(((org.apache.fop.fo.flow.Character)fobj).getCharacter()); >+ } >+ } >+ >+ class FilledAreaMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new FilledArea(); >+ } >+ } >+ >+ class FlowMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Flow(); >+ } >+ } >+ >+ class FootnoteMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Footnote(); >+ } >+ } >+ >+ // TODO: run some tests !!! >+ class ForeignObjectMaker implements AreaMaker { >+ private InstreamForeignObject ifo = null; >+ >+ private boolean canCreate() { >+ return (ifo != null) && (ifo.childNodes != null) && >+ (ifo.childNodes.size() > 0) && (ifo.childNodes.get(0) instanceof XMLObj); >+ } >+ >+ public Area create(FObj fobj, LayoutManager caller) { >+ setForeignObj(fobj); >+ if (canCreate()) { >+ return new ForeignObject(getXML().getDOMDocument(), >+ getXML().getDocumentNamespace()); >+ } >+ return null; >+ } >+ >+ protected XMLObj getXML() { >+ return (XMLObj)ifo.childNodes.get(0); >+ } >+ >+ protected void setForeignObj(FObj fobj) { >+ if (fobj instanceof InstreamForeignObject) >+ this.ifo = (InstreamForeignObject)fobj; >+ else >+ this.ifo = null; >+ } >+ } >+ >+ class ImageMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Image(((ExternalGraphic)fobj).getSrc()); >+ } >+ } >+ >+ class InlineParentMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new InlineParent(); >+ } >+ } >+ >+ class LeaderMaker implements AreaMaker { >+ private org.apache.fop.fo.flow.Leader foLeader; >+ >+ public Area create(FObj fobj, LayoutManager caller) { >+ setLeader(fobj); >+ >+ Leader leader = new Leader(); >+ if (foLeader != null) { >+ leader.setRuleStyle(foLeader.getRuleStyle()); >+ leader.setRuleThickness(foLeader.getRuleThickness().getValue()); >+ } >+ return leader; >+ } >+ >+ private void setLeader(FObj fobj) { >+ this.foLeader = null; >+ if (fobj instanceof org.apache.fop.fo.flow.Leader) >+ this.foLeader = (org.apache.fop.fo.flow.Leader)fobj; >+ } >+ >+ } >+ >+ class LineAreaMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new LineArea(); >+ } >+ } >+ >+ class SpaceMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Space(); >+ } >+ } >+ >+ class SpanMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Span(); >+ } >+ } >+ >+ class MainReferenceMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new MainReference(); >+ } >+ } >+ >+ class RegionReferenceMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new RegionReference(((Region)fobj).getNameId()); >+ } >+ } >+ >+ class RegionViewportMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new RegionViewport(); >+ } >+ } >+ >+ // TODO: in this case, input should be FOText instead of FObj >+ class TextAreaMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new TextArea(); >+ } >+ } >+ >+ class ViewportMaker implements AreaMaker { >+ public Area create(FObj fobj, LayoutManager caller) { >+ return new Viewport(); >+ } >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 32054
: 13325