/*
* Author: tdanford
* Date: Jun 19, 2008
*/
package org.seqcode.viz.utils;
import java.util.*;
public class TextLayout {
public TextLayout() {
}
public Vector<String> paragraphLayout(String text, int lineLength) {
String[] wa = text.split("\\s+");
Vector<String> words = new Vector<String>();
for(int i = 0; i < wa.length; i++) {
words.add(wa[i]);
}
Vector<Vector<String>> laidOutWords = paragraphVectorLayout(words, lineLength);
Vector<String> layout = new Vector<String>();
for(int i = 0; i < laidOutWords.size(); i++) {
StringBuilder sb = new StringBuilder();
Vector<String> ws = laidOutWords.get(i);
for(int j = 0; j < ws.size(); j++) {
if(sb.length() > 0) { sb.append(" "); }
sb.append(ws.get(j));
}
layout.add(sb.toString());
}
return layout;
}
public Vector<Vector<String>> paragraphVectorLayout(Vector<String> words, int lineLength) {
Vector<Vector<String>> lines = new Vector<Vector<String>>();
int lineOffset = 0;
Vector<String> currentLine = new Vector<String>();
lines.add(currentLine);
for(int wi = 0; wi < words.size(); wi++) {
String word = words.get(wi);
if(lineOffset + word.length() > lineLength) {
lineOffset = 0;
currentLine = new Vector<String>();
lines.add(currentLine);
}
currentLine.add(word);
lineOffset += word.length() + 1;
}
return lines;
}
}