[Libreoffice-commits] .: src/docrecord.py src/docstream.py
Miklos Vajna
vmiklos at kemper.freedesktop.org
Fri May 3 09:28:37 PDT 2013
src/docrecord.py | 37 +++++++++++++++++++++++++++++++++++++
src/docstream.py | 6 +++++-
2 files changed, 42 insertions(+), 1 deletion(-)
New commits:
commit 47c1588c33281f15635bbf5c4ba6e44f09998467
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Fri May 3 18:28:26 2013 +0200
doc: dump PlcfHdd (initial support for headers / footers)
diff --git a/src/docrecord.py b/src/docrecord.py
index 36b29c3..62ca85f 100644
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -805,6 +805,43 @@ class PlcBteChpx(DOCDirStream, PLC):
print '</aFC>'
print '</plcBteChpx>'
+class PlcfHdd(DOCDirStream, PLC):
+ """The Plcfhdd structure is a PLC that contains only CPs and no additional data. It specifies where
+ header document stories begin and end."""
+ def __init__(self, mainStream):
+ DOCDirStream.__init__(self, mainStream.doc.getDirectoryStreamByName("1Table").bytes, mainStream=mainStream)
+ PLC.__init__(self, mainStream.lcbPlcfHdd, 0)
+ self.pos = mainStream.fcPlcfHdd
+ self.size = mainStream.lcbPlcfHdd
+
+ def dump(self):
+ print '<plcfHdd type="PlcfHdd" offset="%d" size="%d bytes">' % (self.pos, self.size)
+ offset = self.mainStream.fcMin + self.mainStream.ccpText
+ pos = self.pos
+ for i in range(self.getElements() - 1):
+ start = self.getuInt32(pos = pos)
+ end = self.getuInt32(pos = pos + 4)
+ contentsMap = {
+ 0: "Footnote separator",
+ 1: "Footnote continuation separator",
+ 2: "Footnote continuation notice",
+ 3: "Endnote separator",
+ 4: "Endnote continuation separator",
+ 5: "Endnote continuation notice",
+
+ 6: "Even page header",
+ 7: "Odd page header",
+ 8: "Even page footer",
+ 9: "Odd page footer",
+ 10: "First page header",
+ 11: "First page footer",
+ }
+ print '<aCP index="%d" contents="%s" start="%d" end="%d">' % (i, contentsMap[i], start, end)
+ print '<transformed value="%s"/>' % self.quoteAttr(self.mainStream.retrieveText(offset + start, offset + end))
+ pos += 4
+ print '</aCP>'
+ print '</plcfHdd>'
+
class PlcfandTxt(DOCDirStream, PLC):
"""The PlcfandTxt structure is a PLC that contains only CPs and no additional data."""
def __init__(self, mainStream, offset, size):
diff --git a/src/docstream.py b/src/docstream.py
index d9003aa..7f3cc51 100644
--- a/src/docstream.py
+++ b/src/docstream.py
@@ -233,7 +233,7 @@ class WordDocumentStream(DOCDirStream):
["fcPlcfGlsy"],
["lcbPlcfGlsy"],
["fcPlcfHdd"],
- ["lcbPlcfHdd"],
+ ["lcbPlcfHdd", self.handleLcbPlcfHdd],
["fcPlcfBteChpx"],
["lcbPlcfBteChpx", self.handleLcbPlcfBteChpx],
["fcPlcfBtePapx"],
@@ -437,6 +437,10 @@ class WordDocumentStream(DOCDirStream):
if not silent:
self.clx.dump()
+ def handleLcbPlcfHdd(self):
+ plcfHdd = docrecord.PlcfHdd(self)
+ plcfHdd.dump()
+
def handleLcbPlcfBteChpx(self):
plcBteChpx = docrecord.PlcBteChpx(self)
plcBteChpx.dump()
More information about the Libreoffice-commits
mailing list