More rich text work

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@377169 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2006-02-12 12:56:26 +00:00
parent 4157c96aff
commit 4cba14090b
2 changed files with 24 additions and 14 deletions

View File

@ -208,25 +208,19 @@ public class TextRun
ensureStyleAtomPresent();
// Update the text length for its Paragraph and Character stylings
LinkedList pStyles = _styleAtom.getParagraphStyles();
LinkedList cStyles = _styleAtom.getCharacterStyles();
TextPropCollection pCol = (TextPropCollection)pStyles.get(runID);
TextPropCollection cCol = (TextPropCollection)cStyles.get(runID);
pCol.updateTextSize(s.length());
TextPropCollection pCol = run._getRawParagraphStyle();
TextPropCollection cCol = run._getRawCharacterStyle();
// Character style covers the new run
cCol.updateTextSize(s.length());
// Paragraph might cover other runs to, so remove old size and add new one
pCol.updateTextSize( pCol.getCharactersCovered() - run.getLength() + s.length());
// Build up the new text
// As we go through, update the start position for all subsequent runs
// The building relies on the old text still being present
StringBuffer newText = new StringBuffer();
for(int i=0; i<_rtRuns.length; i++) {
// Do we need to update the start position of this run?
if(i <= runID) {
// Change is after this, so don't need to change start position
} else {
// Change has occured, so update start position
_rtRuns[i].updateStartPosition(newText.length());
}
int newStartPos = newText.length();
// Build up the new text
if(i != runID) {
@ -236,6 +230,15 @@ public class TextRun
// Affected run, so use new text
newText.append(s);
}
// Do we need to update the start position of this run?
// (Need to get the text before we update the start pos)
if(i <= runID) {
// Change is after this, so don't need to change start position
} else {
// Change has occured, so update start position
_rtRuns[i].updateStartPosition(newStartPos);
}
}
// Now we can save the new text

View File

@ -87,6 +87,13 @@ public class RichTextRun
characterStyle = cStyle;
}
/**
* Get the length of the text
*/
public int getLength() {
return length;
}
/**
* Fetch the text, in output suitable form
*/
@ -119,12 +126,12 @@ public class RichTextRun
/**
* Unit Testing Only - get the underlying paragraph style collection.
* Internal Use 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.
* Internal Use Only - get the underlying character style collection.
* For normal use, use the friendly setters and getters
*/
public TextPropCollection _getRawCharacterStyle() { return characterStyle; }