src/docdraw.py | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-)
New commits: commit 0d9269a0bd855c593604ebb1e54162890dad34b9 Author: Miklos Vajna <vmik...@suse.cz> Date: Mon Dec 3 16:59:28 2012 +0100 dump OfficeArtSpgrContainer diff --git a/src/docdraw.py b/src/docdraw.py index 39cf631..c88fad0 100644 --- a/src/docdraw.py +++ b/src/docdraw.py @@ -170,6 +170,34 @@ class OfficeArtFDG(DOCDirStream): self.printAndSet("spidCur", self.readuInt32()) print '</drawingData>' +class OfficeArtSpgrContainer(DOCDirStream): + """The OfficeArtSpgrContainer record specifies a container for groups of shapes.""" + def __init__(self, officeArtDgContainer, pos): + DOCDirStream.__init__(self, officeArtDgContainer.bytes) + self.pos = pos + self.officeArtDgContainer = officeArtDgContainer + + def dump(self): + print '<groupShape type="OfficeArtSpgrContainer" offset="%d">' % self.pos + 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="OfficeArtSpgrContainer: recType = %s unhandled (size: %d bytes)"/>' % (hex(rh.recType), rh.recLen) + pos += OfficeArtRecordHeader.size + rh.recLen + print '</groupShape>' + assert pos == self.pos + self.rh.recLen + self.pos = pos + class OfficeArtDgContainer(DOCDirStream): """The OfficeArtDgContainer record specifies the container for all the file records for the objects in a drawing.""" def __init__(self, officeArtContent, name): @@ -184,6 +212,7 @@ class OfficeArtDgContainer(DOCDirStream): self.rh.dump() pos = self.pos recMap = { + 0xf003: OfficeArtSpgrContainer, 0xf008: OfficeArtFDG, } while (self.rh.recLen - (pos - self.pos)) > 0: commit 752b56a00c74368f6c3fd4430f0b8414d288c84f Author: Miklos Vajna <vmik...@suse.cz> Date: Mon Dec 3 16:40:10 2012 +0100 dump OfficeArtFDG diff --git a/src/docdraw.py b/src/docdraw.py index 707aae6..39cf631 100644 --- a/src/docdraw.py +++ b/src/docdraw.py @@ -52,7 +52,7 @@ class OfficeArtFDGG(DOCDirStream): def dump(self): print '<%s type="OfficeArtFDGG" offset="%d" size="%d bytes">' % (self.name, self.pos, OfficeArtFDGG.size) - self.printAndSet("spidMax", self.readuInt32()) # TODO dump MSOSPID + self.printAndSet("spidMax", self.readuInt32()) self.printAndSet("cidcl", self.readuInt32()) self.printAndSet("cspSaved", self.readuInt32()) self.printAndSet("cdgSaved", self.readuInt32()) @@ -69,7 +69,7 @@ class OfficeArtIDCL(DOCDirStream): def dump(self): print '<officeArtIDCL type="OfficeArtIDCL" pos="%d">' % self.pos - self.printAndSet("dgid", self.readuInt32()) # TODO dump MSODGID + self.printAndSet("dgid", self.readuInt32()) self.printAndSet("cspidCur", self.readuInt32()) print '</officeArtIDCL>' self.officeArtFDGGBlock.pos = self.pos @@ -157,6 +157,19 @@ class OfficeArtDggContainer(DOCDirStream): assert pos == self.pos + self.rh.recLen self.officeArtContent.pos = pos +class OfficeArtFDG(DOCDirStream): + """The OfficeArtFDG record specifies the number of shapes, the drawing identifier, and the shape identifier of the last shape in a drawing.""" + def __init__(self, officeArtDgContainer, pos): + DOCDirStream.__init__(self, officeArtDgContainer.bytes) + self.pos = pos + + def dump(self): + print '<drawingData type="OfficeArtFDG" offset="%d">' % self.pos + OfficeArtRecordHeader(self, "rh").dump() + self.printAndSet("csp", self.readuInt32()) + self.printAndSet("spidCur", self.readuInt32()) + print '</drawingData>' + class OfficeArtDgContainer(DOCDirStream): """The OfficeArtDgContainer record specifies the container for all the file records for the objects in a drawing.""" def __init__(self, officeArtContent, name): @@ -171,6 +184,7 @@ class OfficeArtDgContainer(DOCDirStream): self.rh.dump() pos = self.pos recMap = { + 0xf008: OfficeArtFDG, } while (self.rh.recLen - (pos - self.pos)) > 0: rh = OfficeArtRecordHeader(self, pos = pos) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits