[Libreoffice-commits] .: 2 commits - src/docdirstream.py src/docrecord.py
Miklos Vajna
vmiklos at kemper.freedesktop.org
Sun May 12 12:19:20 PDT 2013
src/docdirstream.py | 12 ++++++----
src/docrecord.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 65 insertions(+), 6 deletions(-)
New commits:
commit 388bef4e111c22d9a373f49f9453781d268f6ed4
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Sun May 12 21:19:06 2013 +0200
dump TextFlow, VerticalMergeFlag, VerticalAlign and Fts enums
diff --git a/src/docdirstream.py b/src/docdirstream.py
index ba94936..497ccea 100644
--- a/src/docdirstream.py
+++ b/src/docdirstream.py
@@ -21,19 +21,21 @@ class DOCDirStream:
self.mainStream = mainStream
self.doc = doc
- def printAndSet(self, key, value, hexdump = True, end = True, offset = False, silent = False):
+ def printAndSet(self, key, value, hexdump = True, end = True, offset = False, silent = False, dict = None):
setattr(self, key, value)
if silent:
return
+ attrs = ""
+ if dict:
+ attrs += ' name="%s"' % dict[value]
if hexdump:
value = hex(value)
- offstr = ""
if offset:
- offstr += ' offset="%s"' % hex(self.pos)
+ attrs += ' offset="%s"' % hex(self.pos)
if end:
- print '<%s value="%s"%s/>' % (key, value, offstr)
+ print '<%s value="%s"%s/>' % (key, value, attrs)
else:
- print '<%s value="%s"%s>' % (key, value, offstr)
+ print '<%s value="%s"%s>' % (key, value, attrs)
def quoteAttr(self, value):
"""Wrapper around xml.sax.saxutils.quoteattr, assumes the caller will put " around the result."""
diff --git a/src/docrecord.py b/src/docrecord.py
index 7851cd9..68ffdd2 100644
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -482,6 +482,41 @@ class PChgTabsOperand(DOCDirStream):
PChgTabsAdd(self).dump()
print '</pchgTabsOperand>'
+# The TextFlow enumeration specifies the rotation settings for a block of text and for the individual
+# East Asian characters in each line of the block.
+TextFlow = {
+ 0x0000: "grpfTFlrtb",
+ 0x0001: "grpfTFtbrl",
+ 0x0003: "grpfTFbtlr",
+ 0x0004: "grpfTFlrtbv",
+ 0x0005: "grpfTFtbrlv"
+ }
+
+# The VerticalMergeFlag enumeration provides a 2-bit value that specifies whether a table cell is
+# merged with the cells above or below it.
+VerticalMergeFlag = {
+ 0x00: "fvmClear",
+ 0x01: "fvmMerge",
+ 0x03: "fvmRestart"
+ }
+
+# The VerticalAlign enumeration specifies the vertical alignment of content within table cells.
+VerticalAlign = {
+ 0x00: "vaTop",
+ 0x01: "vaCenter",
+ 0x02: "vaBottom",
+ }
+
+# The Fts enumeration specifies how the preferred width for a table, table indent, table cell, cell
+# margin, or cell spacing is defined.
+Fts = {
+ 0x00: "ftsNil",
+ 0x01: "ftsAuto",
+ 0x02: "ftsPercent",
+ 0x03: "ftsDxa",
+ 0x13: "ftsDxaSys"
+ }
+
class TCGRF(DOCDirStream):
"""A TCGRF structure specifies the text layout and cell merge properties for a single cell in a table."""
def __init__(self, parent):
@@ -492,12 +527,11 @@ class TCGRF(DOCDirStream):
def dump(self):
print '<tcgrf type="TCGRF" offset="%d">' % self.pos
buf = self.readuInt16()
- # TODO TextFlow, VerticalMergeFlag, VerticalAlign and Fts enums
self.printAndSet("horzMerge", buf & 0x0003) # 1..2nd bits
- self.printAndSet("textFlow", (buf & 0x001c) >> 2) # 3..6th bits
- self.printAndSet("vertMerge", (buf & 0x0060) >> 6) # 7..8th bits
- self.printAndSet("vertAlign", (buf & 0x0180) >> 8) # 9..10th bits
- self.printAndSet("ftsWidth", (buf & 0x0e00) >> 10) # 11..12th bits
+ self.printAndSet("textFlow", (buf & 0x001c) >> 2, dict = TextFlow) # 3..6th bits
+ self.printAndSet("vertMerge", (buf & 0x0060) >> 6, dict = VerticalMergeFlag) # 7..8th bits
+ self.printAndSet("vertAlign", (buf & 0x0180) >> 8, dict = VerticalAlign) # 9..10th bits
+ self.printAndSet("ftsWidth", (buf & 0x0e00) >> 10, dict = Fts) # 11..12th bits
self.printAndSet("fFitText", self.getBit(buf, 12))
self.printAndSet("fNoWrap", self.getBit(buf, 13))
self.printAndSet("fHideMark", self.getBit(buf, 14))
commit a57a7e67b52c62644127dfd34b528552d46deac6
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Sun May 12 21:06:37 2013 +0200
dump TCGRF
diff --git a/src/docrecord.py b/src/docrecord.py
index 3616cd3..7851cd9 100644
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -482,6 +482,29 @@ class PChgTabsOperand(DOCDirStream):
PChgTabsAdd(self).dump()
print '</pchgTabsOperand>'
+class TCGRF(DOCDirStream):
+ """A TCGRF structure specifies the text layout and cell merge properties for a single cell in a table."""
+ def __init__(self, parent):
+ DOCDirStream.__init__(self, parent.bytes)
+ self.parent = parent
+ self.pos = parent.pos
+
+ def dump(self):
+ print '<tcgrf type="TCGRF" offset="%d">' % self.pos
+ buf = self.readuInt16()
+ # TODO TextFlow, VerticalMergeFlag, VerticalAlign and Fts enums
+ self.printAndSet("horzMerge", buf & 0x0003) # 1..2nd bits
+ self.printAndSet("textFlow", (buf & 0x001c) >> 2) # 3..6th bits
+ self.printAndSet("vertMerge", (buf & 0x0060) >> 6) # 7..8th bits
+ self.printAndSet("vertAlign", (buf & 0x0180) >> 8) # 9..10th bits
+ self.printAndSet("ftsWidth", (buf & 0x0e00) >> 10) # 11..12th bits
+ self.printAndSet("fFitText", self.getBit(buf, 12))
+ self.printAndSet("fNoWrap", self.getBit(buf, 13))
+ self.printAndSet("fHideMark", self.getBit(buf, 14))
+ self.printAndSet("fUnused", self.getBit(buf, 15))
+ print '</tcgrf>'
+ self.parent.pos = self.pos
+
class TC80(DOCDirStream):
"""The TC80 structure specifies the border and other formatting for a single cell in a table."""
def __init__(self, parent, index):
@@ -492,7 +515,7 @@ class TC80(DOCDirStream):
def dump(self):
print '<tc80 index="%d">' % self.index
- self.printAndSet("tcgrf", self.readuInt16()) # TODO dump TCGRF
+ TCGRF(self).dump()
self.printAndSet("wWidth", self.readuInt16(), hexdump = False)
self.printAndSet("brcTop", self.readuInt32()) # TODO dump Brc80MayBeNil
self.printAndSet("brcLeft", self.readuInt32())
More information about the Libreoffice-commits
mailing list