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