src/docrecord.py |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 src/docstream.py |    5 ++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

New commits:
commit 353f15fa0823ae02b8f0d47333a1e1f734322d82
Author: Miklos Vajna <vmik...@suse.cz>
Date:   Thu May 16 19:09:18 2013 +0200

    dump PlcftxbxBkd

diff --git a/src/docrecord.py b/src/docrecord.py
index 04bf1d0..fec80fe 100644
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -2735,6 +2735,53 @@ class PlcftxbxTxt(DOCDirStream, PLC):
             print '</aCP>'
         print '</plcftxbxTxt>'
 
+class Tbkd(DOCDirStream):
+    """The Tbkd structure is used by the PlcftxbxBkd and PlcfTxbxHdrBkd 
structures to associate ranges of
+    text from the Textboxes Document and the Header Textboxes Document with 
FTXBXS objects."""
+    size = 6 # 2.9.309
+    def __init__(self, parent, offset):
+        DOCDirStream.__init__(self, parent.bytes)
+        self.parent = parent
+        self.pos = self.posOrig = offset
+
+    def dump(self):
+        print '<aTbkd type="Tbkd" offset="%d" size="%d bytes">' % (self.pos, 
Tbkd.size)
+        self.printAndSet("itxbxs", self.readuInt16())
+        self.printAndSet("dcpDepend", self.readuInt16())
+        buf = self.readuInt16()
+        self.printAndSet("reserved1", buf & 0x03ff) # 1..10th bits
+        self.printAndSet("fMarkDelete", self.getBit(buf, 10))
+        self.printAndSet("fUnk", self.getBit(buf, 11))
+        self.printAndSet("fTextOverflow", self.getBit(buf, 12))
+        self.printAndSet("reserved2", (buf & 0xe000) >> 13) # 14..16th bits
+        print '</aTbkd>'
+        assert self.posOrig + Tbkd.size == self.pos
+
+class PlcftxbxBkd(DOCDirStream, PLC):
+    """Specifies which ranges of text go inside which textboxes."""
+    def __init__(self, mainStream):
+        DOCDirStream.__init__(self, 
mainStream.doc.getDirectoryStreamByName("1Table").bytes, mainStream = 
mainStream)
+        PLC.__init__(self, mainStream.lcbPlcfTxbxBkd, 6)
+        self.pos = mainStream.fcPlcfTxbxBkd
+        self.size = mainStream.lcbPlcfTxbxBkd
+
+    def dump(self):
+        print '<plcftxbxBkd type="PlcftxbxBkd" offset="%d" size="%d bytes">' % 
(self.pos, self.size)
+        offset = self.mainStream.ccpText + self.mainStream.ccpFtn
+        pos = self.pos
+        for i in range(self.getElements()):
+            # aCp
+            start = self.getuInt32(pos = pos)
+            end = self.getuInt32(pos = pos + 4)
+            print '<aCP index="%d" start="%d" end="%d">' % (i, start, end)
+            pos += 4
+
+            # aTbkd
+            Tbkd(self, self.getOffset(self.pos, i)).dump()
+            print '<transformed value="%s"/>' % 
self.quoteAttr(self.mainStream.retrieveCPs(offset + start, offset + end))
+            print '</aCP>'
+        print '</plcftxbxBkd>'
+
 class PlcfSpa(DOCDirStream, PLC):
     """The PlcfSpa structure is a PLC structure in which the data elements are
     SPA structures."""
diff --git a/src/docstream.py b/src/docstream.py
index 158748e..849dc19 100644
--- a/src/docstream.py
+++ b/src/docstream.py
@@ -399,7 +399,7 @@ class WordDocumentStream(DOCDirStream):
             ["fcPlfLfo"],
             ["lcbPlfLfo", self.handleLcbPlfLfo],
             ["fcPlcfTxbxBkd"],
-            ["lcbPlcfTxbxBkd"],
+            ["lcbPlcfTxbxBkd", self.handleLcbPlcfTxbxBkd],
             ["fcPlcfTxbxHdrBkd"],
             ["lcbPlcfTxbxHdrBkd"],
             ["fcDocUndoWord9"],
@@ -601,6 +601,9 @@ class WordDocumentStream(DOCDirStream):
     def handleLcbSttbfBkmk(self):
         docrecord.SttbfBkmk(self).dump()
 
+    def handleLcbPlcfTxbxBkd(self):
+        docrecord.PlcftxbxBkd(self).dump()
+
     def dumpFibRgFcLcb97(self, name):
         print '<%s type="FibRgFcLcb97" size="744 bytes">' % name
         self.__dumpFibRgFcLcb97()
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to