org.apache.fop.area.inline.FilledArea Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.apache.fop Show documentation
Show all versions of org.apache.fop Show documentation
The core maven build properties
The newest version!
/*
* 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.
*/
public class FilledArea extends InlineParent {
private static final long serialVersionUID = 8586584705587017474L;
private int unitWidth;
/** 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.
*
* @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.
*
* @return the unit width
*/
public int getUnitWidth() {
return this.unitWidth;
}
/** {@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.
*
* @return the list of child areas copied to fill the width
*/
@Override
public List getChildAreas() {
int units = getIPD() / unitWidth;
List newList = new ArrayList();
for (int count = 0; count < units; count++) {
newList.addAll(inlines);
}
return newList;
}
/**
* 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;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy