| /* |
| * Copyright 1999-2005 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.layoutmgr; |
| |
| import java.util.LinkedList; |
| import java.util.List; |
| |
| import org.apache.fop.area.Area; |
| |
| /** |
| * The interface for all LayoutManagers. |
| */ |
| public interface LayoutManager { |
| |
| /** |
| * Set the parent layout manager. |
| * The parent layout manager is required for adding areas. |
| * |
| * @param lm the parent layout manager |
| */ |
| void setParent(LayoutManager lm); |
| |
| /** |
| * Get the parent layout manager. |
| * @return the parent layout manager. |
| */ |
| LayoutManager getParent(); |
| |
| /** |
| * Get the active PageSequenceLayoutManager instance for this |
| * layout process. |
| * @return the PageSequenceLayoutManager |
| */ |
| PageSequenceLayoutManager getPSLM(); |
| |
| /** |
| * Reset to the position. |
| * |
| * @param position the Position to reset to |
| */ |
| void resetPosition(Position position); |
| |
| /** |
| * 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 |
| */ |
| boolean isFinished(); |
| |
| /** |
| * 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 |
| */ |
| 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 |
| */ |
| 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 |
| */ |
| void addChildArea(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 |
| */ |
| void addAreas(PositionIterator posIter, LayoutContext context); |
| |
| /** |
| * Create more child LMs of the parent, up to child LM index pos |
| * @param pos index up to which child LMs are requested |
| * @return true if requested index does exist |
| */ |
| boolean createNextChildLMs(int pos); |
| |
| /** |
| * @return the list of child LMs |
| */ |
| List getChildLMs(); |
| |
| /** |
| * Add the LM in the argument to the list of child LMs; |
| * set this LM as the parent; |
| * initialize the LM. |
| * @param lm the LM to be added |
| */ |
| void addChildLM(LayoutManager lm); |
| |
| /** |
| * Add the LMs in the argument to the list of child LMs; |
| * @param newLMs the list of LMs to be added |
| */ |
| void addChildLMs(List newLMs); |
| |
| /** |
| * Get a sequence of KnuthElements representing the content |
| * of the node assigned to the LM |
| * |
| * @param context the LayoutContext used to store layout information |
| * @param alignment the desired text alignement |
| * @return the list of KnuthElements |
| */ |
| LinkedList getNextKnuthElements(LayoutContext context, int alignment); |
| |
| /** |
| * Get a sequence of KnuthElements representing the content |
| * of the node assigned to the LM, after changes have been applied |
| * |
| * @param oldList the elements to replace |
| * @param flaggedPenalty the penalty value for hyphenated lines |
| * @param alignment the desired text alignment |
| * @return the updated list of KnuthElements |
| */ |
| LinkedList getChangedKnuthElements(List oldList, /*int flaggedPenalty,*/ |
| int alignment); |
| |
| } |