nick 2005/11/29 13:18:59 Modified: src/scratchpad/src/org/apache/poi/hslf/model TextRun.java src/scratchpad/src/org/apache/poi/hslf/usermodel RichTextRun.java Log: Get a bit further with building up RichTextRuns Revision Changes Path 1.7 +17 -1 jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java Index: TextRun.java =================================================================== RCS file: /home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- TextRun.java 13 Nov 2005 13:28:34 -0000 1.6 +++ TextRun.java 29 Nov 2005 21:18:58 -0000 1.7 @@ -80,20 +80,36 @@ _charAtom = tca; _isUnicode = true; } + String runRawText = getText(); // Figure out the rich text runs // TODO: Handle when paragraph style and character styles don't match up LinkedList pStyles = new LinkedList(); LinkedList cStyles = new LinkedList(); if(_styleAtom != null) { + _styleAtom.setParentTextSize(runRawText.length()); pStyles = _styleAtom.getParagraphStyles(); cStyles = _styleAtom.getCharacterStyles(); } if(pStyles.size() != cStyles.size()) { throw new RuntimeException("Don't currently handle case of overlapping styles"); } + + int pos = 0; _rtRuns = new RichTextRun[pStyles.size()]; - //for(int i=0; i<) + for(int i=0; i<_rtRuns.length; i++) { + TextPropCollection pProps = (TextPropCollection)pStyles.get(i); + TextPropCollection cProps = (TextPropCollection)cStyles.get(i); + int len = cProps.getCharactersCovered(); + _rtRuns[i] = new RichTextRun(this, pos, len, pProps, cProps); + pos += len; + } + + // Handle case of no current style, with a default + if(_rtRuns.length == 0) { + _rtRuns = new RichTextRun[1]; + _rtRuns[0] = new RichTextRun(this, 0, runRawText.length()); + } } 1.2 +37 -2 jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java Index: RichTextRun.java =================================================================== RCS file: /home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- RichTextRun.java 7 Nov 2005 22:24:15 -0000 1.1 +++ RichTextRun.java 29 Nov 2005 21:18:59 -0000 1.2 @@ -20,6 +20,7 @@ package org.apache.poi.hslf.usermodel; import org.apache.poi.hslf.model.TextRun; +import org.apache.poi.hslf.record.StyleTextPropAtom.TextPropCollection; /** * Represents a run of text, all with the same style @@ -40,18 +41,39 @@ /** How long a string (in the parent TextRun) we represent */ private int length; - /** Our paragraph and character style */ + /** + * Our paragraph and character style. + * Note - we may share the Paragraph style with another RichTextRun + * (the Character style should be ours alone) + */ + private TextPropCollection paragraphStyle; + private TextPropCollection characterStyle; /** - * Create a new wrapper around a rich text string + * Create a new wrapper around a (currently not) + * rich text string * @param parent * @param startAt * @param len */ public RichTextRun(TextRun parent, int startAt, int len) { + this(parent, startAt, len, null, null); + } + /** + * Create a new wrapper around a rich text string + * @param parent The parent TextRun + * @param startAt The start position of this run + * @param len The length of this run + * @param pStyle The paragraph style property collection + * @param cStyle The character style property collection + */ + public RichTextRun(TextRun parent, int startAt, int len, + TextPropCollection pStyle, TextPropCollection cStyle) { parentRun = parent; startPos = startAt; length = len; + paragraphStyle = pStyle; + characterStyle = cStyle; } /** @@ -82,4 +104,17 @@ public void updateStartPosition(int startAt) { startPos = startAt; } + + + + /** + * Unit Testing Only - get the underlying paragraph style collection. + * For normal use, use the friendly setters and getters + */ + public TextPropCollection _getRawParagraphStyle() { return paragraphStyle; } + /** + * Unit Testing Only - get the underlying character style collection. + * For normal use, use the friendly setters and getters + */ + public TextPropCollection _getRawCharacterStyle() { return characterStyle; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] Mailing List: http://jakarta.apache.org/site/mail2.html#poi The Apache Jakarta POI Project: http://jakarta.apache.org/poi/