protected static StyledTextParagraph createParagraphFromParent(StyledTextParagraph parent) { StyledTextParagraph p = new StyledTextParagraph(); p.setValign(parent.getValign()); p.setBold(parent.isBold()); p.setFont(parent.getFont()); p.setItalic(parent.isItalic()); p.setUnderline(parent.isUnderline()); p.setOverline(parent.isOverline()); p.setWidth(parent.getWidth()); p.setFontHeight(parent.getFontHeight()); p.setInsertPoint(parent.getInsertPoint()); p.setColor(parent.getColor()); return p; }
public static void parseStyledTextParagraphSettings( char key, String value, StyledTextParagraph para) { if (value.length() > 0) { switch (key) { case 'A': para.setValign(Integer.parseInt(value)); break; case 'H': if (value.endsWith("x")) { para.setFontHeight( para.getFontHeight() * Double.parseDouble(value.substring(0, value.length() - 1))); } else { para.setFontHeight(Double.parseDouble(value)); } break; case 'Q': para.setObliquiAngle(Double.parseDouble(value)); break; case 'W': if (value.endsWith("x")) { double widthFactor = Double.parseDouble(value.substring(0, value.length() - 1)); para.setWidth(para.getWidth() * widthFactor); } else { para.setWidth(Double.parseDouble(value)); } break; case 'T': para.setCharacterspace(Double.parseDouble(value)); break; case 'f': parseFontSettings(value.trim(), para); break; case 'F': para.setFontFile(value.trim()); break; case 'S': // TODO handle break; case 'C': Integer colorCode = Integer.valueOf(value); String rgbString = Color.getRGBString(colorCode); para.setColor(rgbString); break; } } }
public static TextDocument parseText(Text text) { TextDocument doc = new TextDocument(); // boolean asciicontrol = false; StringBuffer buf = new StringBuffer(); StyledTextParagraph p = new StyledTextParagraph(); p.setFontHeight(text.getHeight()); p.setInsertPoint(text.getAlignmentPoint()); switch (text.getValign()) { case Text.VALIGN_BASELINE: if (text.getAlign() == Text.ALIGN_MIDDLE) { // described in the DXF specs p.setValign(StyledTextParagraph.VERTICAL_ALIGNMENT_CENTER); } else { p.setValign(StyledTextParagraph.VERTICAL_ALIGNMENT_BASELINE); } break; case Text.VALIGN_BOTTOM: p.setValign(StyledTextParagraph.VERTICAL_ALIGNMENT_BASELINE); break; case Text.VALIGN_CENTER: p.setValign(StyledTextParagraph.VERTICAL_ALIGNMENT_CENTER); break; case Text.VALIGN_TOP: p.setValign(StyledTextParagraph.VERTICAL_ALIGNMENT_TOP); break; } if ((text.getAlign() == 3) || (text.getAlign() == 5)) { double length = Utils.distance(text.getInsertPoint(), text.getAlignmentPoint()); p.setWidth(length); } // parse the symbols String str = parseSymbols(text.getText()); // parse the style int marker = 0; char c; // initialize boolean overline = false; boolean underline = false; for (int i = 0; i < str.length(); i++) { c = str.charAt(i); if (c == '%') { marker++; } else { if (marker == 0) { buf.append(c); } else if (marker == 2) { switch (c) { case 'o': p.setText(buf.toString()); p.setUnderline(underline); p.setOverline(overline); doc.addStyledParagraph(p); p = createParagraphFromParent(p); buf.delete(0, buf.length()); overline = !overline; p.setOverline(overline); break; case 'u': p.setText(buf.toString()); p.setUnderline(underline); p.setOverline(overline); doc.addStyledParagraph(p); p = createParagraphFromParent(p); buf.delete(0, buf.length()); underline = !underline; p.setUnderline(underline); break; } marker = 0; } } } if ((marker == 1) || (marker == 3)) { buf.append('%'); } // something left over? if (buf.length() > 0) { p.setText(buf.toString()); doc.addStyledParagraph(p); } return doc; }