1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /* $Id: LayoutManagerMaker.java 426576 2006-07-28 15:44:37Z jeremias $ */ 19 package org.apache.fop.layoutmgr; 20 21 import java.util.List; 22 import org.apache.fop.fo.FONode; 23 import org.apache.fop.fo.pagination.Flow; 24 import org.apache.fop.fo.pagination.PageSequence; 25 import org.apache.fop.fo.pagination.SideRegion; 26 import org.apache.fop.fo.pagination.StaticContent; 27 import org.apache.fop.fo.pagination.Title; 28 import org.apache.fop.layoutmgr.inline.ContentLayoutManager; 29 import org.apache.fop.area.AreaTreeHandler; 30 import org.apache.fop.area.Block; 31 32 /** 33 * The interface for all LayoutManager makers 34 */ 35 public interface LayoutManagerMaker { 36 37 /** 38 * Make LayoutManagers for the node and add them to the list lms. 39 * @param node the FO node for which the LayoutManagers are made 40 * @param lms the list to which the LayoutManagers are added 41 */ 42 public void makeLayoutManagers(FONode node, List lms); 43 44 /** 45 * Make a specific LayoutManager for the node. 46 * If not exactly one LayoutManagers is available, 47 * an IllegalStateException is thrown. 48 * @param node the FO node for which the LayoutManagers are made 49 * @return The created LayoutManager 50 * @throws IllegalStateException if not exactly one 51 * LayoutManager is available for the requested node 52 */ 53 public LayoutManager makeLayoutManager(FONode node); 54 55 /** 56 * Make a PageSequenceLayoutManager object. 57 * @param ath the AreaTreeHandler object the PSLM interacts with 58 * @param ps the fo:page-sequence object this PSLM will process 59 * @return The created PageSequenceLayoutManager object 60 */ 61 public PageSequenceLayoutManager makePageSequenceLayoutManager( 62 AreaTreeHandler ath, PageSequence ps); 63 64 /** 65 * Make a FlowLayoutManager object. 66 * @param pslm the parent PageSequenceLayoutManager object 67 * @param flow the fo:flow object this FLM will process 68 * @return The created FlowLayoutManager object 69 */ 70 public FlowLayoutManager makeFlowLayoutManager( 71 PageSequenceLayoutManager pslm, Flow flow); 72 73 /** 74 * Make a ContentLayoutManager object. 75 * @param pslm the parent PageSequenceLayoutManager object 76 * @param title the fo:title object this CLM will process 77 * @return The created ContentLayoutManager object 78 */ 79 public ContentLayoutManager makeContentLayoutManager( 80 PageSequenceLayoutManager pslm, Title title); 81 82 /** 83 * Make a StaticContentLayoutManager object. 84 * @param pslm the parent PageSequenceLayoutManager object 85 * @param sc the fo:static-content object this SCLM will process 86 * @param reg the side region indicating where the static content 87 * needs to be processed. 88 * @return The created StaticContentLayoutManager object 89 */ 90 public StaticContentLayoutManager makeStaticContentLayoutManager( 91 PageSequenceLayoutManager pslm, StaticContent sc, SideRegion reg); 92 93 /** 94 * Make a StaticContentLayoutManager object for a footnote-separator. 95 * @param pslm the parent PageSequenceLayoutManager object 96 * @param sc the fo:static-content object this SCLM will process 97 * @param block the Block area this SCLM must add its areas to 98 * @return The created StaticContentLayoutManager object 99 */ 100 public StaticContentLayoutManager makeStaticContentLayoutManager( 101 PageSequenceLayoutManager pslm, StaticContent sc, Block block); 102 103 } 104 105