Obtained from: Submitted by: Reviewed by: Removed flush() override from PSLM, consolidated StorePagesModel & AreaTreeModel, removed unused LineTrait.java. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198425 13f79535-47bb-0310-9956-ffa450edef68tags/Root_Temp_KnuthStylePageBreaking
@@ -18,53 +18,83 @@ | |||
package org.apache.fop.area; | |||
// Java | |||
import java.util.List; | |||
// XML | |||
import org.xml.sax.SAXException; | |||
// Apache | |||
import org.apache.commons.logging.Log; | |||
import org.apache.commons.logging.LogFactory; | |||
/** | |||
* This is the model for the area tree object. | |||
* The model implementation can handle the page sequence, | |||
* page and extensions. | |||
* page and off-document items. | |||
* The methods to access the page viewports can only | |||
* assume the PageViewport is valid as it remains for | |||
* the life of the area tree model. | |||
*/ | |||
public abstract class AreaTreeModel { | |||
public class AreaTreeModel { | |||
private List pageSequenceList = null; | |||
private List currentPageSequencePageList; | |||
private List offDocumentItems = new java.util.ArrayList(); | |||
protected static Log log = LogFactory.getLog(AreaTreeModel.class); | |||
/** | |||
* Create a new store pages model | |||
*/ | |||
public AreaTreeModel() { | |||
pageSequenceList = new java.util.ArrayList(); | |||
} | |||
/** | |||
* Start a page sequence on this model. | |||
* @param title the title of the new page sequence | |||
*/ | |||
public abstract void startPageSequence(LineArea title); | |||
public void startPageSequence(LineArea title) { | |||
currentPageSequencePageList = new java.util.ArrayList(); | |||
pageSequenceList.add(currentPageSequencePageList); | |||
} | |||
/** | |||
* Add a page to this moel. | |||
* @param page the page to add to the model. | |||
*/ | |||
public abstract void addPage(PageViewport page); | |||
public void addPage(PageViewport page) { | |||
currentPageSequencePageList.add(page); | |||
} | |||
/** | |||
* Handle an OffDocumentItem | |||
* @param ext the extension to handle | |||
*/ | |||
public abstract void handleOffDocumentItem(OffDocumentItem ext); | |||
public void handleOffDocumentItem(OffDocumentItem ext) {}; | |||
/** | |||
* Signal the end of the document for any processing. | |||
*/ | |||
public abstract void endDocument() throws SAXException; | |||
public void endDocument() throws SAXException {}; | |||
/** | |||
* Get the page sequence count. | |||
* @return the number of page sequences in the document. | |||
*/ | |||
public abstract int getPageSequenceCount(); | |||
public int getPageSequenceCount() { | |||
return pageSequenceList.size(); | |||
} | |||
/** | |||
* Get the page count. | |||
* @param seq the page sequence to count. | |||
* @return returns the number of pages in a page sequence | |||
*/ | |||
public abstract int getPageCount(int seq); | |||
public int getPageCount(int seq) { | |||
List sequence = (List) pageSequenceList.get(seq - 1); | |||
return sequence.size(); | |||
} | |||
/** | |||
* Get the page for a position in the document. | |||
@@ -72,6 +102,8 @@ public abstract class AreaTreeModel { | |||
* @param count the page count in the sequence | |||
* @return the PageViewport for the particular page | |||
*/ | |||
public abstract PageViewport getPage(int seq, int count); | |||
public PageViewport getPage(int seq, int count) { | |||
List sequence = (List) pageSequenceList.get(seq - 1); | |||
return (PageViewport) sequence.get(count); | |||
} | |||
} |
@@ -1,28 +0,0 @@ | |||
/* | |||
* 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. | |||
*/ | |||
/* $Id$ */ | |||
package org.apache.fop.area; | |||
/** | |||
* Traits for a range of areas in a line. | |||
* Not sure if this is needed. | |||
*/ | |||
public class LineTrait extends Trait { | |||
private int[] range; | |||
} | |||
@@ -35,14 +35,14 @@ import org.apache.fop.render.Renderer; | |||
import org.apache.fop.render.RendererFactory; | |||
/** | |||
* This uses the store pages model to store the pages | |||
* each page is either rendered if ready or prepared | |||
* This uses the AreaTreeModel to store the pages | |||
* Each page is either rendered if ready or prepared | |||
* for later rendering. | |||
* Once a page is rendered it is cleared to release the | |||
* contents but the PageViewport is retained. So even | |||
* though the pages are stored the contents are discarded. | |||
*/ | |||
public class RenderPagesModel extends StorePagesModel { | |||
public class RenderPagesModel extends AreaTreeModel { | |||
/** | |||
* The renderer that will render the pages. | |||
*/ |
@@ -1,117 +0,0 @@ | |||
/* | |||
* 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. | |||
*/ | |||
/* $Id$ */ | |||
package org.apache.fop.area; | |||
// Java | |||
import java.util.List; | |||
// XML | |||
import org.xml.sax.SAXException; | |||
// Apache | |||
import org.apache.commons.logging.Log; | |||
import org.apache.commons.logging.LogFactory; | |||
/** | |||
* This class stores all the pages in the document | |||
* for interactive agents. | |||
* The pages are stored and can be retrieved in any order. | |||
*/ | |||
public class StorePagesModel extends AreaTreeModel { | |||
private List pageSequenceList = null; | |||
private List currentPageSequencePageList; | |||
private List offDocumentItems = new java.util.ArrayList(); | |||
protected static Log log = LogFactory.getLog(StorePagesModel.class); | |||
/** | |||
* Create a new store pages model | |||
*/ | |||
public StorePagesModel() { | |||
pageSequenceList = new java.util.ArrayList(); | |||
} | |||
/** | |||
* Start a new page sequence. | |||
* This creates a new list for the pages in the new page sequence. | |||
* @param title the title of the page sequence. | |||
*/ | |||
public void startPageSequence(LineArea title) { | |||
currentPageSequencePageList = new java.util.ArrayList(); | |||
pageSequenceList.add(currentPageSequencePageList); | |||
} | |||
/** | |||
* Add a page. | |||
* @param page the page to add to the current page sequence | |||
*/ | |||
public void addPage(PageViewport page) { | |||
currentPageSequencePageList.add(page); | |||
} | |||
/** | |||
* Get the page sequence count. | |||
* @return the number of page sequences in the document. | |||
*/ | |||
public int getPageSequenceCount() { | |||
return pageSequenceList.size(); | |||
} | |||
/** | |||
* Get the page count. | |||
* @param seq the page sequence to count. | |||
* @return returns the number of pages in a page sequence | |||
*/ | |||
public int getPageCount(int seq) { | |||
List sequence = (List) pageSequenceList.get(seq - 1); | |||
return sequence.size(); | |||
} | |||
/** | |||
* Get the page for a position in the document. | |||
* @param seq the page sequence number | |||
* @param count the page count in the sequence | |||
* @return the PageViewport for the particular page | |||
*/ | |||
public PageViewport getPage(int seq, int count) { | |||
List sequence = (List) pageSequenceList.get(seq - 1); | |||
return (PageViewport) sequence.get(count); | |||
} | |||
/** | |||
* @see org.apache.fop.area.AreaTreeModel#handleOffDocumentItem(OffDocumentItem) | |||
*/ | |||
public void handleOffDocumentItem(OffDocumentItem ext) { | |||
offDocumentItems.add(ext); | |||
} | |||
/** | |||
* Get the list of OffDocumentItems for this StorePagesModel. | |||
* @return the list of OffDocumentItems | |||
*/ | |||
public List getOffDocumentItems() { | |||
return offDocumentItems; | |||
} | |||
/** | |||
* End document, do nothing. | |||
*/ | |||
public void endDocument() throws SAXException { | |||
} | |||
} |
@@ -222,7 +222,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager { | |||
} | |||
pageCount--; | |||
log.debug("Ending layout"); | |||
flush(); | |||
finishPage(); | |||
pageSeq.setCurrentPageNumber(getPageCount()); | |||
} | |||
@@ -747,11 +747,6 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager { | |||
createFlow(); | |||
} | |||
// See finishPage... | |||
protected void flush() { | |||
finishPage(); | |||
} | |||
/** | |||
* Called when a new page is needed. | |||
* |