HWPF: better fix for TextPieceTable.getCharIndex()

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@960922 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Maxim Valyanskiy 2010-07-06 15:45:36 +00:00
parent 69cc14c377
commit 22730f9a12

View File

@ -247,20 +247,41 @@ public final class TextPieceTable implements CharIndexTranslator {
for(TextPiece tp : _textPiecesFCOrder) {
int pieceStart = tp.getPieceDescriptor().getFilePosition();
if (pieceStart >= bytePos) {
if (bytePos > pieceStart + tp.bytesLength()) {
continue;
}
if (pieceStart > bytePos) {
bytePos = pieceStart;
}
break;
}
for(TextPiece tp : _textPieces) {
int pieceStart = tp.getPieceDescriptor().getFilePosition();
int bytesLength = tp.bytesLength();
int pieceEnd = pieceStart + bytesLength;
int toAdd = bytePos > pieceEnd ? bytesLength : bytesLength - (pieceEnd - bytePos);
int toAdd;
if (bytePos< pieceStart || bytePos > pieceEnd) {
toAdd = bytesLength;
} else {
toAdd = bytesLength - (pieceEnd - bytePos);
}
if (tp.isUnicode()) {
charCount += toAdd / 2;
} else {
charCount += toAdd;
}
if (bytePos>=pieceStart && bytePos<=pieceEnd) {
break;
}
}
return charCount;