/*
 * 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: FilledArea.java 1296496 2012-03-02 22:19:46Z gadams $ */

package org.apache.fop.area.inline;

import java.util.ArrayList;
import java.util.List;

Filled area. This inline area contains some inline areas. When the renderer gets the child areas to render the inline areas are repeated to fill the ipd of this inline parent. This extends InlineParent so that the renderer will render this as a normal inline parent.
/** * Filled area. * This inline area contains some inline areas. * When the renderer gets the child areas to render * the inline areas are repeated to fill the ipd of * this inline parent. * This extends InlineParent so that the renderer will render * this as a normal inline parent. */
public class FilledArea extends InlineParent { private static final long serialVersionUID = 8586584705587017474L; private int unitWidth;
Create a new filled area.
/** Create a new filled area. */
public FilledArea() { } /** * Set the offset of the descendant TextAreas, * instead of the offset of the FilledArea itself. * * @param v the offset */ /* public void setBlockProgressionOffset(int v) { setChildOffset(inlines.listIterator(), v); } private void setChildOffset(ListIterator childrenIterator, int v) { while (childrenIterator.hasNext()) { InlineArea child = (InlineArea) childrenIterator.next(); if (child instanceof InlineParent) { setChildOffset(((InlineParent) child).getChildAreas().listIterator(), v); } else if (child instanceof InlineViewport) { // nothing } else { child.setBlockProgressionOffset(v); } } } */
Set the unit width for the areas to fill the full width.
Params:
  • width – the unit width
/** * Set the unit width for the areas to fill the full width. * * @param width the unit width */
public void setUnitWidth(int width) { this.unitWidth = width; }
Return the unit width for the areas to fill the full width.
Returns:the unit width
/** * Return the unit width for the areas to fill the full width. * * @return the unit width */
public int getUnitWidth() { return this.unitWidth; }
{@inheritDoc}
/** {@inheritDoc} */
@Override public int getBPD() { int bpd = 0; for (InlineArea area : getChildAreas()) { if (bpd < area.getBPD()) { bpd = area.getBPD(); } } return bpd; }
Get the child areas for this filled area. This copies the references of the inline areas so that it fills the total width of the area a whole number of times for the unit width.
Returns:the list of child areas copied to fill the width
/** * Get the child areas for this filled area. * This copies the references of the inline areas so that * it fills the total width of the area a whole number of times * for the unit width. * * @return the list of child areas copied to fill the width */
@Override public List<InlineArea> getChildAreas() { int units = getIPD() / unitWidth; List<InlineArea> newList = new ArrayList<InlineArea>(); for (int count = 0; count < units; count++) { newList.addAll(inlines); } return newList; }
Recursively apply the variation factor to all descendant areas
Params:
  • variationFactor – the variation factor that must be applied to adjustments
  • lineStretch – the total stretch of the line
  • lineShrink – the total shrink of the line
Returns:true if there is an UnresolvedArea descendant
/** * Recursively apply the variation factor to all descendant areas * @param variationFactor the variation factor that must be applied to adjustments * @param lineStretch the total stretch of the line * @param lineShrink the total shrink of the line * @return true if there is an UnresolvedArea descendant */
@Override public boolean applyVariationFactor(double variationFactor, int lineStretch, int lineShrink) { setIPD(getIPD() + adjustingInfo.applyVariationFactor(variationFactor)); return false; } }