| /******************************************************************************* |
| * Copyright (c) 2000, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.draw2d.text; |
| |
| /** |
| * A Geometric object for representing a region on a line of Text. This class adds the |
| * notion of a baseline to {@link org.eclipse.draw2d.geometry.Rectangle}. <i>Ascent</i> is |
| * the distance above the baseline. <i>Descent</i> is the distance below the baseline. |
| * <P> |
| * This class should not be treated as a <code>Rectangle</code> by clients. It is |
| * important to use getters when available for lazy calculation of values. |
| * |
| * @author hudsonr |
| * @since 2.1 |
| */ |
| public abstract class FlowBox { |
| |
| int width; |
| |
| /** |
| * The x location |
| */ |
| private int x; |
| |
| /** |
| * This method must be called on a block that is completely positioned and committed. |
| * @param x X |
| * @param y Y |
| * @return <code>true</code> if the FlowBox contains the point |
| */ |
| public abstract boolean containsPoint(int x, int y); |
| |
| /** |
| * Returns the amount of line content in pixels which is above the baseline. Ascent and |
| * descent are used to space consecutive lines apart. Certain types of line content, such |
| * as borders, extend beyond the ascent and descent. |
| * @return the <i>descent</i> in pixels below the baseline |
| */ |
| public abstract int getAscent(); |
| |
| /** |
| * Returns y coordinate for the box's baseline. |
| * @return the baseline location |
| * @since 3.1 |
| */ |
| public abstract int getBaseline(); |
| |
| /** |
| * Returns the amount of line content in pixels which is below the baseline. |
| * @return the <i>descent</i> in pixels |
| * @see #getAscent() |
| */ |
| public abstract int getDescent(); |
| |
| /** |
| * Returns the root LineBox in which this box is placed. The root line is interesting |
| * when painting selection or hit testing. All boxes in a line should render selection at |
| * the same top and bottom location. |
| * @return the line root. |
| * @since 3.1 |
| */ |
| abstract LineRoot getLineRoot(); |
| |
| /** |
| * Returns the outer ascent of this box. The outer ascent is the ascent above the |
| * baseline including the border size and margin. This is used when adding content into a |
| * LineBox. The linebox's own border must be drawn around the children. |
| */ |
| int getOuterAscent() { |
| return getAscent(); |
| } |
| |
| /** |
| * Returns the outer descent of this box. The outer descent is the space below the |
| * baseline including the border size and margin. This is used when adding content into a |
| * LineBox. The linebox's own border must be drawn around the children. |
| */ |
| int getOuterDescent() { |
| return getDescent(); |
| } |
| |
| int getAscentWithBorder() { |
| throw new RuntimeException("Not valid on this box type"); //$NON-NLS-1$ |
| } |
| |
| int getDescentWithBorder() { |
| throw new RuntimeException("Not valid on this box type"); //$NON-NLS-1$ |
| } |
| |
| /** |
| * Returns the width of the box. |
| * @return the box's width |
| */ |
| public int getWidth() { |
| return width; |
| } |
| |
| /** |
| * Returns the X coordinate of the box. |
| * @return the x coordinate |
| * @since 3.1 |
| */ |
| public int getX() { |
| return x; |
| } |
| |
| /** |
| * Returns <code>true</code> if any of the children are bi-directional. Default |
| * implementation returns false. |
| * |
| * @return <code>true</code> if the box is bi-directional |
| * @since 3.1 |
| */ |
| public boolean requiresBidi() { |
| return false; |
| } |
| |
| /** |
| * Sets the line root. |
| * @param root the line root |
| * @since 3.1 |
| */ |
| void setLineRoot(LineRoot root) { |
| } |
| |
| /** |
| * Sets the width of the box. |
| * @param width the new width |
| * @since 3.1 |
| */ |
| public void setWidth(int width) { |
| this.width = width; |
| } |
| |
| /** |
| * Sets the x coordinate for this box. |
| * @param x the x coordinate |
| * @since 3.1 |
| */ |
| public void setX(int x) { |
| this.x = x; |
| } |
| |
| } |