mirror of https://github.com/apache/poi.git
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:
parent
4157c96aff
commit
4cba14090b
|
@ -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
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue