void wrapLines(int cx) throws Exception {
			int lineLen = 0;
			{
				int len = 0;
				CharSequence sb = pageData.roLines.getInLine(cy, 0, cx);
				for (int i = 0; i < sb.length(); i++) {
					len += (sb.charAt(i) > 255) ? 2 : 1;
				}
				lineLen = Math.max(10, len);
			}
			ui.message("wrapLine at " + lineLen);
			if (ptSelection.isSelected()) {
				ptSelection.cancelSelect();
			}
			List<CharSequence> newtext = new ArrayList<CharSequence>();
			for (int y = 0; y < pageData.lines.size(); y++) {
				if (pageData.lines.get(y).length() * 2 > lineLen) {
					int len = 0;
					CharSequence sb = pageData.roLines.getline(y);
					int start = 0;
					for (int i = 0; i < sb.length(); i++) {
						len += (sb.charAt(i) > 255) ? 2 : 1;
						if (len >= lineLen) {
							newtext.add(sb.subSequence(start, i + 1).toString());
							start = i + 1;
							len = 0;
						}
					}
					if (start < sb.length()) {
						newtext.add(sb.subSequence(start, sb.length()).toString());
					}
				} else {
					newtext.add(pageData.lines.get(y).toString());
				}
			}
			String title = "wrapped " + pageData.getTitle() + " #" + U.randomID();
			PlainPage p2 = new PlainPage(uiComp, PageData.newEmpty(title));
			p2.pageData.workPath = pageData.workPath;
			p2.pageData.setLines(newtext);
		}