/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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: KnuthBlockBox.java 1642793 2014-12-02 00:29:57Z lbernardo $ */

package org.apache.fop.layoutmgr;

import java.util.LinkedList;
import java.util.List;

import org.apache.fop.traits.MinOptMax;

Knuth box used to represent a line in block-progression-dimension (i.e. the width is its height).
/** * Knuth box used to represent a line in block-progression-dimension (i.e. the width is its height). */
public class KnuthBlockBox extends KnuthBox { private MinOptMax ipdRange;
Natural width of the line represented by this box. In addition to ipdRange because it isn't possible to get the opt value stored in a MinOptMax object.
/** * Natural width of the line represented by this box. In addition to ipdRange because * it isn't possible to get the opt value stored in a MinOptMax object. */
private int bpd; private List<FootnoteBodyLayoutManager> footnoteList; private List<FloatContentLayoutManager> floatContentLMs;
List of Knuth elements. This is a list of LinkedList elements.
/** List of Knuth elements. This is a list of LinkedList elements. */
private List elementLists;
Creates a new box.
Params:
  • width – block progression dimension of this box
  • range – min, opt, max inline progression dimension of this box
  • bpdim – natural width of the line represented by this box.
  • pos – the Position stored in this box
  • auxiliary – is this box auxiliary?
/** * Creates a new box. * * @param width block progression dimension of this box * @param range min, opt, max inline progression dimension of this box * @param bpdim natural width of the line represented by this box. * @param pos the Position stored in this box * @param auxiliary is this box auxiliary? */
public KnuthBlockBox(int width, MinOptMax range, int bpdim, Position pos, boolean auxiliary) { super(width, pos, auxiliary); ipdRange = range; bpd = bpdim; footnoteList = new LinkedList<FootnoteBodyLayoutManager>(); floatContentLMs = new LinkedList<FloatContentLayoutManager>(); }
Creates a new box.
Params:
  • width – block progression dimension of this box
  • list – footnotes cited by elements in this box. The list contains the corresponding FootnoteBodyLayoutManagers
  • pos – the Position stored in this box
  • auxiliary – is this box auxiliary?
/** * Creates a new box. * * @param width block progression dimension of this box * @param list footnotes cited by elements in this box. The list contains the corresponding * FootnoteBodyLayoutManagers * @param pos the Position stored in this box * @param auxiliary is this box auxiliary? */
public KnuthBlockBox(int width, List list, Position pos, boolean auxiliary) { super(width, pos, auxiliary); ipdRange = MinOptMax.ZERO; bpd = 0; footnoteList = new LinkedList<FootnoteBodyLayoutManager>(list); floatContentLMs = new LinkedList<FloatContentLayoutManager>(); } public KnuthBlockBox(int width, List list, Position pos, boolean auxiliary, List<FloatContentLayoutManager> fclms) { super(width, pos, auxiliary); ipdRange = MinOptMax.ZERO; bpd = 0; footnoteList = new LinkedList<FootnoteBodyLayoutManager>(list); floatContentLMs = new LinkedList<FloatContentLayoutManager>(fclms); }
Returns:the LMs for the footnotes cited in this box.
/** * @return the LMs for the footnotes cited in this box. */
public List<FootnoteBodyLayoutManager> getFootnoteBodyLMs() { return footnoteList; }
Returns:true if this box contains footnote citations.
/** * @return true if this box contains footnote citations. */
public boolean hasAnchors() { return (footnoteList.size() > 0); }
Adds the given list of Knuth elements to this box' list of elements.
Params:
  • list – elements corresponding to a footnote body
/** * Adds the given list of Knuth elements to this box' list of elements. * * @param list elements corresponding to a footnote body */
public void addElementList(List list) { if (elementLists == null) { elementLists = new LinkedList(); } elementLists.add(list); }
Returns the list of Knuth sequences registered by this box.
Returns:a list of KnuthElement sequences corresponding to footnotes cited in this box
/** * Returns the list of Knuth sequences registered by this box. * * @return a list of KnuthElement sequences corresponding to footnotes cited in this box */
public List getElementLists() { return elementLists; }
Returns:the inline progression dimension of this box.
/** * @return the inline progression dimension of this box. */
public MinOptMax getIPDRange() { return ipdRange; }
Returns the natural width (without stretching nor shrinking) of the line represented by this box.
Returns:the line width
/** * Returns the natural width (without stretching nor shrinking) of the line represented by this * box. * * @return the line width */
public int getBPD() { return bpd; } public List<FloatContentLayoutManager> getFloatContentLMs() { return floatContentLMs; } public boolean hasFloatAnchors() { return (floatContentLMs.size() > 0); } }