DocLine.java
package pro.verron.asciidoc.converters.svg;
import java.awt.*;
/// Mutable helper for building a single line of text that must not exceed
/// a given pixel width, as measured by an AWT [FontMetrics].
final class DocLine {
private final FontMetrics metrics;
private final int maxWidth;
private final StringBuilder line;
DocLine(FontMetrics metrics, int maxWidth) {
this.metrics = metrics;
this.maxWidth = maxWidth;
this.line = new StringBuilder();
}
public boolean canFit(String word) {
if (line.isEmpty()) return metrics.stringWidth(word) <= maxWidth;
return metrics.stringWidth(line + " " + word) <= maxWidth;
}
public DocLine add(String word) {
if (!line.isEmpty()) line.append(" ");
line.append(word);
return this;
}
public boolean isEmpty() {
return line.isEmpty();
}
public String line() {
return line.toString();
}
}