Mercurial > projects > dwt-addons
diff dwtx/draw2d/text/CaretInfo.d @ 98:95307ad235d9
Added Draw2d code, still work in progress
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 03 Aug 2008 00:52:14 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/draw2d/text/CaretInfo.d Sun Aug 03 00:52:14 2008 +0200 @@ -0,0 +1,133 @@ +/******************************************************************************* + * 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 + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ + +module dwtx.draw2d.text.CaretInfo; + +import dwt.dwthelper.utils; + +import dwtx.draw2d.geometry.Translatable; + +/** + * Stores positional information about where a caret should be placed. This structure + * currently only offers integer precision. Scaling operations will result in rounding. + * @since 3.1 + */ +public class CaretInfo + : Translatable +{ + +private int ascent, lineAscent, descent, lineDescent, baseline, x; + +/** + * Constructor for use by TextFlow. Constructs a new CaretInfo with the figure's ascent + * and descent and line information. + * <P> + * <EM>WARNING:</EM> This constructor should not be called by clients. It is for use by + * {@link TextFlow}, and may change in future releases. + * @param x the x location + * @param y the y location of the top of the caret + * @param ascent the ascent + * @param descent the descent + * @param lineAscent the ascent of the line on which the caret is placed + * @param lineDescent the descent of the line on which the caret is placed + */ +/+protected+/ this(int x, int y, int ascent, int descent, int lineAscent, int lineDescent) { + this.x = x; + this.baseline = y + ascent; + this.ascent = ascent; + this.descent = descent; + this.lineAscent = lineAscent; + this.lineDescent = lineDescent; +} + +/** + * Constructs a CaretInfo object by copying the values from another instance. + * @param info the reference + * @since 3.2 + */ +/+protected+/ this(CaretInfo info) { + this.ascent = info.ascent; + this.baseline = info.baseline; + this.descent = info.descent; + this.lineAscent = info.lineAscent; + this.lineDescent = info.lineDescent; + this.x = info.x; +} + +/** + * Returns the y location of the baseline. + * @return the y coordinate of the baseline + */ +public int getBaseline() { + return baseline; +} + +/** + * Returns the total height of the caret. The height is the sum of the ascent and descent. + * @return the height + */ +public int getHeight() { + return ascent + descent; +} + +/** + * @return the total height of the line on which the caret is placed + */ +public int getLineHeight() { + return lineAscent + lineDescent; +} + +/** + * @return the y location of the line on which the caret is placed + */ +public int getLineY() { + return baseline - lineAscent; +} + +/** + * Returns the x location of the caret. + * @return the x coordinate + */ +public int getX() { + return x; +} + +/** + * Returns the y location of the caret. + * @return the y coordinate + */ +public int getY() { + return baseline - ascent; +} + +/** + * @see Translatable#performScale(double) + */ +public void performScale(double factor) { + x *= factor; + baseline *= factor; + descent *= factor; + ascent *= factor; + lineAscent *= factor; + lineDescent *= factor; +} + +/** + * @see Translatable#performTranslate(int, int) + */ +public void performTranslate(int dx, int dy) { + x += dx; + baseline += dy; +} + +}