/*******************************************************************************
* Copyright (c) 2004, 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;
/**
* @since 3.1
*/
public class NestedLine extends LineBox {
InlineFlow owner;
private LineRoot root;
NestedLine(InlineFlow owner) {
this.owner = owner;
}
/**
* @see org.eclipse.draw2d.text.FlowBox#containsPoint(int, int)
*/
public boolean containsPoint(int x, int y) {
//$TODO should contains use LineRoot?
return x >= getX()
&& x < getX() + getWidth()
&& y >= getBaseline() - getAscentWithBorder()
&& y < getBaseline() + getDescentWithBorder();
}
int getAscentWithBorder() {
return contentAscent + FlowUtilities.getBorderAscent(owner);
}
int getDescentWithBorder() {
return contentDescent + FlowUtilities.getBorderDescent(owner);
}
/**
* @see org.eclipse.draw2d.text.FlowBox#getBaseline()
*/
public int getBaseline() {
return root.getBaseline();
}
LineRoot getLineRoot() {
return root;
}
//int getVisibleAscent() {
// return contentAscent + FlowUtilities.getBorderAscent(owner);
//}
//
//int getVisibleDescent() {
// return contentDescent + FlowUtilities.getBorderDescent(owner);
//}
/**
* 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.
* @return the outer ascent of this box
*/
public int getOuterAscent() {
return contentAscent + FlowUtilities.getBorderAscentWithMargin(owner);
}
/**
* 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.
* @return the outer descent of this box
*/
public int getOuterDescent() {
return contentDescent + FlowUtilities.getBorderDescentWithMargin(owner);
}
void setLineRoot(LineRoot root) {
this.root = root;
for (int i = 0; i < fragments.size(); i++)
((FlowBox)fragments.get(i)).setLineRoot(root);
}
/**
* @see org.eclipse.draw2d.text.CompositeBox#setLineTop(int)
*/
public void setLineTop(int top) {
throw new RuntimeException("not supported"); //$NON-NLS-1$
}
}