/* * Copyright 2004-2005 The Apache Software Foundation. * * Licensed 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$ */ package org.apache.fop.layoutmgr; /** * This is the super class for KnuthBox, KnuthGlue and KnuthPenalty. * * It stores information common to all sub classes, and the methods to get it: * the width, a Position and a boolean marking KnuthElements used for some * special feature (for example, the additional elements used to represent * a space when text alignment is right, left or center). */ public abstract class KnuthElement { public static final int INFINITE = 1000; private int width; private Position position; private boolean bIsAuxiliary; /** * Create a new KnuthElement. * This class being abstract, this can be called only by subclasses. * * @param t the type of this element (one of the KNUTH_* constants) * @param w the width of this element * @param pos the Position stored in this element * @param bAux is this an auxiliary element? */ protected KnuthElement(int w, Position pos, boolean bAux) { width = w; position = pos; bIsAuxiliary = bAux; } /** * Return true if this element is a KnuthBox. */ public boolean isBox() { return false; } /** * Return true if this element is a KnuthGlue. */ public boolean isGlue() { return false; } /** * Return true if this element is a KnuthPenalty. */ public boolean isPenalty() { return false; } /** * Return true if this element is an auxiliary one. */ public boolean isAuxiliary() { return bIsAuxiliary; } /** * Return the width of this element. */ public int getW() { return width; } public int getP() { throw new RuntimeException("Element is not a penalty"); } public int getY() { throw new RuntimeException("Element is not a glue"); } public int getZ() { throw new RuntimeException("Element is not a glue"); } public boolean isForcedBreak() { return false; } /** * Return the Position stored in this element. */ public Position getPosition() { return position; } /** * Change the Position stored in this element. */ public void setPosition(Position pos) { position = pos; } /** * Return the LayoutManager responsible for this element. */ public LayoutManager getLayoutManager() { if (position != null) { return position.getLM(); } else { return null; } } }