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$ */ 19 20 package org.apache.fop.layoutmgr; 21 22 import org.apache.fop.fo.Constants; 23 import org.apache.fop.fo.properties.BreakPropertySet; 24 import org.apache.fop.util.BreakUtil; 25 26 /** 27 * Helper implementations of the {@link BreakOpportunity} methods. 28 */ 29 public final class BreakOpportunityHelper { 30 BreakOpportunityHelper()31 private BreakOpportunityHelper() { } 32 33 /** 34 * Returns the break opportunity before the given layout manager. There is a break 35 * opportunity if the LM's FO has the break-before property set, or if there is a 36 * break opportunity before its first child LM. 37 * 38 * @return the break-before value (Constants.EN_*) 39 */ getBreakBefore(AbstractLayoutManager layoutManager)40 public static int getBreakBefore(AbstractLayoutManager layoutManager) { 41 int breakBefore = Constants.EN_AUTO; 42 if (layoutManager.getFObj() instanceof BreakPropertySet) { 43 breakBefore = ((BreakPropertySet) layoutManager.getFObj()).getBreakBefore(); 44 } 45 LayoutManager childLM = layoutManager.getChildLM(); 46 // It is assumed this is only called when the first LM is active. 47 if (childLM instanceof BreakOpportunity) { 48 BreakOpportunity bo = (BreakOpportunity) childLM; 49 breakBefore = BreakUtil.compareBreakClasses(breakBefore, bo.getBreakBefore()); 50 } 51 return breakBefore; 52 } 53 54 } 55