Author: maxcom
Date: Tue Jul 27 09:38:54 2010
New Revision: 979618

URL: http://svn.apache.org/viewvc?rev=979618&view=rev
Log:
wpf: More CharactedRun mapping fixes for fast-saved documents

Added:
    poi/trunk/test-data/document/ob_is.doc   (with props)
Modified:
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BytePropertyNode.java
    
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java
    
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BytePropertyNode.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BytePropertyNode.java?rev=979618&r1=979617&r2=979618&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BytePropertyNode.java 
(original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BytePropertyNode.java 
Tue Jul 27 09:38:54 2010
@@ -35,7 +35,7 @@ public abstract class BytePropertyNode e
        public BytePropertyNode(int fcStart, int fcEnd, CharIndexTranslator 
translator, Object buf) {
                super(
                                translator.getCharIndex(fcStart),
-                               translator.getCharIndex(fcEnd),
+                               translator.getCharIndex(fcEnd, 
translator.getCharIndex(fcStart)),
                                buf
                );
                 this.startBytes = fcStart;

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java?rev=979618&r1=979617&r2=979618&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java 
(original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java 
Tue Jul 27 09:38:54 2010
@@ -28,6 +28,16 @@ public interface CharIndexTranslator {
     int getCharIndex(int bytePos);
 
     /**
+     * Calculates the char index of the given byte index.
+     * Look forward if index is not in table
+     *
+     * @param bytePos The character offset to check
+     * @param startCP look from this characted position 
+     * @return the char index
+     */
+    int getCharIndex(int bytePos, int startCP);
+
+    /**
      * Check if index is in table
      *
      * @param bytePos

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java?rev=979618&r1=979617&r2=979618&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java 
Tue Jul 27 09:38:54 2010
@@ -198,6 +198,10 @@ public class TextPieceTable implements C
        }
 
     public int getCharIndex(int bytePos) {
+        return getCharIndex(bytePos, 0);
+    }
+
+    public int getCharIndex(int bytePos, int startCP) {
         int charCount = 0;
 
         bytePos = lookIndexForward(bytePos);
@@ -222,7 +226,7 @@ public class TextPieceTable implements C
                 charCount += toAdd;
             }
 
-            if (bytePos>=pieceStart && bytePos<=pieceEnd) {
+            if (bytePos>=pieceStart && bytePos<=pieceEnd && 
charCount>=startCP) {
                 break;
             }
         }

Modified: 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java?rev=979618&r1=979617&r2=979618&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java
 (original)
+++ 
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java
 Tue Jul 27 09:38:54 2010
@@ -163,4 +163,10 @@ public final class TestPictures extends 
             doc.getPicturesTable().getAllPictures(); // just check that we do 
not throw Exception
     }
 
+    public void testFastSaved3() {
+            HWPFDocument doc = HWPFTestDataSamples.openSampleFile("ob_is.doc");
+
+            doc.getPicturesTable().getAllPictures(); // just check that we do 
not throw Exception
+    }
+
 }

Added: poi/trunk/test-data/document/ob_is.doc
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/document/ob_is.doc?rev=979618&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/document/ob_is.doc
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to