[Libreoffice-commits] .: 3 commits - src/docdraw.py
Miklos Vajna
vmiklos at kemper.freedesktop.org
Mon Dec 3 08:57:07 PST 2012
src/docdraw.py | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 87 insertions(+), 10 deletions(-)
New commits:
commit 0675409678a7719f29f0f20695f91c0a1d7e6c67
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Mon Dec 3 17:28:08 2012 +0100
dump OfficeArtFSP
diff --git a/src/docdraw.py b/src/docdraw.py
index 97915d3..26b4ccf 100644
--- a/src/docdraw.py
+++ b/src/docdraw.py
@@ -139,10 +139,6 @@ class OfficeArtDggContainer(DOCDirStream):
self.rh = OfficeArtRecordHeader(self, "rh")
self.rh.dump()
pos = self.pos
- recMap = {
- 0xf006: OfficeArtFDGGBlock,
- 0xf11e: OfficeArtSplitMenuColorContainer,
- }
while (self.rh.recLen - (pos - self.pos)) > 0:
rh = OfficeArtRecordHeader(self, pos = pos)
rh.parse()
@@ -189,6 +185,38 @@ class OfficeArtFSPGR(DOCDirStream):
print '</shapeGroup>'
assert self.pos == pos + rh.recLen
+class OfficeArtFSP(DOCDirStream):
+ """The OfficeArtFSP record specifies an instance of a shape."""
+ def __init__(self, officeArtSpContainer, pos):
+ DOCDirStream.__init__(self, officeArtSpContainer.bytes)
+ self.pos = pos
+ self.officeArtSpContainer = officeArtSpContainer
+
+ def dump(self):
+ print '<shapeProp type="OfficeArtFSP" offset="%d">' % (self.pos)
+ rh = OfficeArtRecordHeader(self, "rh")
+ rh.dump()
+ pos = self.pos
+ self.printAndSet("spid", self.readuInt32())
+
+ buf = self.readuInt32()
+ self.printAndSet("fGroup", self.getBit(buf, 0))
+ self.printAndSet("fChild", self.getBit(buf, 1))
+ self.printAndSet("fPatriarch", self.getBit(buf, 2))
+ self.printAndSet("fDeleted", self.getBit(buf, 3))
+ self.printAndSet("fOleShape", self.getBit(buf, 4))
+ self.printAndSet("fHaveMaster", self.getBit(buf, 5))
+ self.printAndSet("fFlipH", self.getBit(buf, 6))
+ self.printAndSet("fFlipV", self.getBit(buf, 7))
+ self.printAndSet("fConnector", self.getBit(buf, 8))
+ self.printAndSet("fHaveAnchor", self.getBit(buf, 9))
+ self.printAndSet("fBackground", self.getBit(buf, 10))
+ self.printAndSet("fHaveSpt", self.getBit(buf, 11))
+ self.printAndSet("unused1", (buf & 0xfffff000) >> 12) # 13..32th bits
+
+ print '</shapeProp>'
+ assert self.pos == pos + rh.recLen
+
class OfficeArtSpContainer(DOCDirStream):
"""The OfficeArtSpContainer record specifies a shape container."""
def __init__(self, parent, pos):
@@ -201,9 +229,6 @@ class OfficeArtSpContainer(DOCDirStream):
self.rh = OfficeArtRecordHeader(self, "rh")
self.rh.dump()
pos = self.pos
- recMap = {
- 0xf009: OfficeArtFSPGR,
- }
while (self.rh.recLen - (pos - self.pos)) > 0:
rh = OfficeArtRecordHeader(self, pos = pos)
rh.parse()
@@ -230,9 +255,6 @@ class OfficeArtSpgrContainer(DOCDirStream):
self.rh = OfficeArtRecordHeader(self, "rh")
self.rh.dump()
pos = self.pos
- recMap = {
- 0xf004: OfficeArtSpContainer
- }
while (self.rh.recLen - (pos - self.pos)) > 0:
rh = OfficeArtRecordHeader(self, pos = pos)
rh.parse()
@@ -260,10 +282,6 @@ class OfficeArtDgContainer(DOCDirStream):
self.rh = OfficeArtRecordHeader(self, "rh")
self.rh.dump()
pos = self.pos
- recMap = {
- 0xf003: OfficeArtSpgrContainer,
- 0xf008: OfficeArtFDG,
- }
while (self.rh.recLen - (pos - self.pos)) > 0:
rh = OfficeArtRecordHeader(self, pos = pos)
rh.parse()
@@ -278,4 +296,14 @@ class OfficeArtDgContainer(DOCDirStream):
assert pos == self.pos + self.rh.recLen
self.officeArtContent.pos = pos
+recMap = {
+ 0xf003: OfficeArtSpgrContainer,
+ 0xf004: OfficeArtSpContainer,
+ 0xf006: OfficeArtFDGGBlock,
+ 0xf008: OfficeArtFDG,
+ 0xf009: OfficeArtFSPGR,
+ 0xf00a: OfficeArtFSP,
+ 0xf11e: OfficeArtSplitMenuColorContainer,
+ }
+
# vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab:
commit 96e8783692368658b4b2f3b2b1f6bda448cdc456
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Mon Dec 3 17:17:47 2012 +0100
dump OfficeArtFSPGR
diff --git a/src/docdraw.py b/src/docdraw.py
index 49721c2..97915d3 100644
--- a/src/docdraw.py
+++ b/src/docdraw.py
@@ -170,6 +170,25 @@ class OfficeArtFDG(DOCDirStream):
self.printAndSet("spidCur", self.readuInt32())
print '</drawingData>'
+class OfficeArtFSPGR(DOCDirStream):
+ """The OfficeArtFSPGR record specifies the coordinate system of the group shape that the anchors of the child shape are expressed in."""
+ def __init__(self, officeArtSpContainer, pos):
+ DOCDirStream.__init__(self, officeArtSpContainer.bytes)
+ self.pos = pos
+ self.officeArtSpContainer = officeArtSpContainer
+
+ def dump(self):
+ print '<shapeGroup type="OfficeArtFSPGR" offset="%d">' % (self.pos)
+ rh = OfficeArtRecordHeader(self, "rh")
+ rh.dump()
+ pos = self.pos
+ self.printAndSet("xLeft", self.readuInt32())
+ self.printAndSet("yTop", self.readuInt32())
+ self.printAndSet("xRight", self.readuInt32())
+ self.printAndSet("yBottom", self.readuInt32())
+ print '</shapeGroup>'
+ assert self.pos == pos + rh.recLen
+
class OfficeArtSpContainer(DOCDirStream):
"""The OfficeArtSpContainer record specifies a shape container."""
def __init__(self, parent, pos):
@@ -183,6 +202,7 @@ class OfficeArtSpContainer(DOCDirStream):
self.rh.dump()
pos = self.pos
recMap = {
+ 0xf009: OfficeArtFSPGR,
}
while (self.rh.recLen - (pos - self.pos)) > 0:
rh = OfficeArtRecordHeader(self, pos = pos)
commit ef77e73eed3ae9c233da4c04bb214e0dd9fa5b61
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Mon Dec 3 17:09:34 2012 +0100
OfficeArtSpContainer
diff --git a/src/docdraw.py b/src/docdraw.py
index c88fad0..49721c2 100644
--- a/src/docdraw.py
+++ b/src/docdraw.py
@@ -170,6 +170,34 @@ class OfficeArtFDG(DOCDirStream):
self.printAndSet("spidCur", self.readuInt32())
print '</drawingData>'
+class OfficeArtSpContainer(DOCDirStream):
+ """The OfficeArtSpContainer record specifies a shape container."""
+ def __init__(self, parent, pos):
+ DOCDirStream.__init__(self, parent.bytes)
+ self.pos = pos
+ self.parent = parent
+
+ def dump(self):
+ print '<shape type="OfficeArtSpContainer">'
+ self.rh = OfficeArtRecordHeader(self, "rh")
+ self.rh.dump()
+ pos = self.pos
+ recMap = {
+ }
+ while (self.rh.recLen - (pos - self.pos)) > 0:
+ rh = OfficeArtRecordHeader(self, pos = pos)
+ rh.parse()
+ if rh.recType in recMap:
+ child = recMap[rh.recType](self, pos)
+ child.dump()
+ assert child.pos == pos + OfficeArtRecordHeader.size + rh.recLen
+ else:
+ print '<todo what="OfficeArtSpContainer: recType = %s unhandled (size: %d bytes)"/>' % (hex(rh.recType), rh.recLen)
+ pos += OfficeArtRecordHeader.size + rh.recLen
+ print '</shape>'
+ assert pos == self.pos + self.rh.recLen
+ self.pos = pos
+
class OfficeArtSpgrContainer(DOCDirStream):
"""The OfficeArtSpgrContainer record specifies a container for groups of shapes."""
def __init__(self, officeArtDgContainer, pos):
@@ -183,6 +211,7 @@ class OfficeArtSpgrContainer(DOCDirStream):
self.rh.dump()
pos = self.pos
recMap = {
+ 0xf004: OfficeArtSpContainer
}
while (self.rh.recLen - (pos - self.pos)) > 0:
rh = OfficeArtRecordHeader(self, pos = pos)
More information about the Libreoffice-commits
mailing list