]> source.dussan.org Git - poi.git/commitdiff
More work understanding hpbf
authorNick Burch <nick@apache.org>
Sun, 17 Aug 2008 18:21:34 +0000 (18:21 +0000)
committerNick Burch <nick@apache.org>
Sun, 17 Aug 2008 18:21:34 +0000 (18:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@686628 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/hpbf/file-format.xml
src/scratchpad/src/org/apache/poi/hpbf/dev/HPBFDumper.java

index 088ecf651d4069d87ca69b10360982e756ef20ee..591204951e6104caec38917b73a177ba06b42eb6 100644 (file)
@@ -90,6 +90,79 @@ Root Entry -
         <p>At 0x200 we have the text, stored as little endian 16 bit unicode.</p>
         <p>After the text comes all sorts of other stuff, presumably as 
          described by the sequences.</p>
+        <p>For a contents stream of length 7168 / 0x1c00 bytes, the start 
+         looks something like:</p>
+<source>
+CHNKINK       // "CHNKINK "
+04 00 07 00   // Normally 04 00 07 00
+13 00 00 03   // Normally ## 00 00 03
+00 02 00 00   // Normally 00 ## 00 00
+00 1c 00 00   // Normally length of the stream
+f8 01 13 00   // Normally f8 01 11/13 00
+ff ff ff ff   // Normally seems to be ffffffff
+
+18 00 
+TEXT 00 00 01 00 00 00       // TEXT 0 1 0
+TEXT 00 02 00 00 d0 03 00 00 // TEXT from: 200 (512), len: 3d0 (976)
+18 00 
+STSH 00 00 01 00 00 00       // STSH 0 1 0
+STSH d0 05 00 00 1e 00 00 00 // STSH from: 5d0 (1488), len: 1e (30)
+18 00 
+STSH 01 00 01 00 00 00       // STSH 1 1 0
+STSH ee 05 00 00 b8 01 00 00 // STSH from: 5ee (1518), len: 1b8 (440)
+18 00 
+STSH 02 00 01 00 00 00       // STSH 2 1 0
+STSH a6 07 00 00 3c 00 00 00 // STSH from: 7a6 (1958), len: 3c (60)
+18 00 
+FDPP 00 00 01 00 00 00       // FDPP 0 1 0
+FDPP 00 08 00 00 00 02 00 00 // FDPP from: 800 (2048), len: 200 (512)
+18 00 
+FDPC 00 00 01 00 00 00       // FDPC 0 1 0
+FDPC 00 0a 00 00 00 02 00 00 // FDPC from: a00 (2560), len: 200 (512)
+18 00 
+FDPC 01 00 01 00 00 00       // FDPC 1 1 0
+FDPC 00 0c 00 00 00 02 00 00 // FDPC from: c00 (3072), len: 200 (512)
+18 00 
+SYID 00 00 01 00 00 00       // SYID 0 1 0
+SYID 00 0e 00 00 20 00 00 00 // SYID from: e00 (3584), len: 20 (32)
+18 00 
+SGP  00 00 01 00 00 00       // SGP  0 1 0
+SGP  20 0e 00 00 0a 00 00 00 // SGP  from: e20 (3616), len: a (10)
+18 00 
+INK  00 00 01 00 00 00       // INK  0 1 0
+INK  2a 0e 00 00 04 00 00 00 // INK  from: e2a (3626), len: 4 (4)
+18 00 
+BTEP 00 00 01 00 00 00       // BTEP 0 1 0
+PLC  2e 0e 00 00 18 00 00 00 // PLC  from: e2e (3630), len: 18 (24)
+18 00 
+BTEC 00 00 01 00 00 00       // BTEC 0 1 0
+PLC  46 0e 00 00 20 00 00 00 // PLC  from: e46 (3654), len: 20 (32)
+18 00 
+FONT 00 00 01 00 00 00       // FONT 0 1 0
+FONT 66 0e 00 00 48 03 00 00 // FONT from: e66 (3686), len: 348 (840)
+18 00 
+TCD  03 00 01 00 00 00       // TCD  3 1 0
+PLC  ae 11 00 00 24 00 00 00 // PLC  from: 11ae (4526), len: 24 (36)
+18 00 
+TOKN 04 00 01 00 00 00       // TOKN 4 1 0
+PLC  d2 11 00 00 0a 01 00 00 // PLC  from: 11d2 (4562), len: 10a (266)
+18 00 
+TOKN 05 00 01 00 00 00       // TOKN 5 1 0
+PLC  dc 12 00 00 2a 01 00 00 // PLC  from: 12dc (4828), len: 12a (298)
+18 00 
+STRS 00 00 01 00 00 00       // STRS 0 1 0
+PLC  06 14 00 00 46 00 00 00 // PLC  from: 1406 (5126), len: 46 (70)
+18 00 
+MCLD 00 00 01 00 00 00       // MCLD 0 1 0
+MCLD 4c 14 00 00 16 06 00 00 // MCLD from: 144c (5196), len: 616 (1558)
+18 00 
+PL   00 00 01 00 00 00       // PL   0 1 0
+PL   62 1a 00 00 48 00 00 00 // PL   from: 1a62 (6754), len: 48 (72)
+00 00                        // Blank entry follows
+00 00 00 00 00 00
+00 00 00 00 00 00 00 00 
+00 00 00 00 00 00 00 00
+</source>
                </section>
        </body>
 </document>
index e2472b47c7880bc3047691d736ffb66b6fe43358..ae3cb56d568d671b620d0eb632e6777d12b3cd74 100644 (file)
@@ -201,22 +201,28 @@ public class HPBFDumper {
                //  18 00
                System.out.println(
                                new String(data, 0, 8) +
-                               dumpBytes(data, 8, 0x22-8)
+                               dumpBytes(data, 8, 0x20-8)
                );
                
-               int pos = 0x22;
-               boolean sixNotTen = true;
+               int pos = 0x20;
+               boolean sixNotEight = true;
                while(pos < 0x200) {
+                       if(sixNotEight) {
+                               System.out.println(
+                                               dumpBytes(data, pos, 2)
+                               );
+                               pos += 2;
+                       }
                        String text = new String(data, pos, 4);
-                       int blen = 10;
-                       if(sixNotTen)
+                       int blen = 8;
+                       if(sixNotEight)
                                blen = 6;
                        System.out.println(
                                        text + " " + dumpBytes(data, pos+4, blen)
                        );
                        
                        pos += 4 + blen;
-                       sixNotTen = ! sixNotTen;
+                       sixNotEight = ! sixNotEight;
                }
                
                // Text from 0x200 onwards until we get