package org.emdev.common.textmarkup.line;
import org.emdev.common.textmarkup.RenderingStyle;
public class TextPreElement extends TextElement {
public TextPreElement(TextElement original, int st, int len, float width) {
super(original, st, len, width);
}
public TextPreElement(char[] ch, int st, int len, RenderingStyle style) {
super(ch, st, len, style);
}
@Override
public AbstractLineElement[] split(final float remaining, boolean hyphenEnabled) {
if (!hyphenEnabled) {
return null;
}
final int firstStart = this.start;
int firstLen = 0;
int secondStart = this.start;
float summ = 0;
for (int i = this.start; i < this.start + this.length; i++) {
final float width = style.paint.measureText(chars, i, 1);
final float total = summ + width;
if (total > remaining) {
break;
}
summ = total;
firstLen++;
secondStart++;
}
if (secondStart == firstStart) {
return null;
}
final int secondLength = this.length - firstLen;
final TextPreElement first = new TextPreElement(this, firstStart, firstLen, summ);
final TextPreElement second = new TextPreElement(this, secondStart, secondLength, this.width - summ);
final AbstractLineElement[] result = { first, second };
return result;
}
}