src/docdirstream.py | 4 +++- src/docdraw.py | 45 +++------------------------------------------ src/msodraw.py | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 43 deletions(-)
New commits: commit 72151ab9b18e9907d075187fc32136bd876097d3 Author: Miklos Vajna <vmik...@suse.cz> Date: Wed Dec 5 12:05:51 2012 +0100 docdraw: use msodraw.MSOCR diff --git a/src/docdirstream.py b/src/docdirstream.py index 72f2d1c..1ab5f61 100644 --- a/src/docdirstream.py +++ b/src/docdirstream.py @@ -126,7 +126,9 @@ class DOCDirStream: # compat methods to make msodraw happy def readUnsignedInt(self, size): - if size == 2: + if size == 1: + return self.readuInt8() + elif size == 2: return self.readuInt16() elif size == 4: return self.readuInt32() diff --git a/src/docdraw.py b/src/docdraw.py index ae28ba5..3f8439c 100644 --- a/src/docdraw.py +++ b/src/docdraw.py @@ -28,26 +28,6 @@ class OfficeArtFDGGBlock(DOCDirStream): print '</Rgidcl>' print '</drawingGroup>' -class MSOCR(DOCDirStream): - """The MSOCR record specifies either the RGB color or the scheme color index.""" - size = 4 - def __init__(self, parent): - DOCDirStream.__init__(self, parent.bytes) - self.pos = parent.pos - self.parent = parent - - def dump(self): - print '<msocr type="MSOCR" offset="%d" size="%d">' % (self.pos, MSOCR.size) - buf = self.readuInt32() - self.printAndSet("red", buf & 0x000000ff) # 1..8th bits - self.printAndSet("green", (buf & 0x0000ff00) >> 8) # 9..16th bits - self.printAndSet("blue", (buf & 0x00ff0000) >> 16) # 17..24th bits - self.printAndSet("unused1", (buf & 0x07000000) >> 24) # 25..27th bits - self.printAndSet("fSchemeIndex", (buf & 0x08000000) >> 27) # 28th bits - self.printAndSet("unused2", (buf & 0xf0000000) >> 28) # 29..32th bits - print '</msocr>' - self.parent.pos = self.pos - class OfficeArtSplitMenuColorContainer(DOCDirStream): """The OfficeArtSplitMenuColorContainer record specifies a container for the colors that were most recently used to format shapes.""" def __init__(self, officeArtDggContainer, pos): @@ -59,7 +39,7 @@ class OfficeArtSplitMenuColorContainer(DOCDirStream): msodraw.RecordHeader(self).dumpXml(self) for i in ["fill", "line", "shadow", "3d"]: print '<smca type="%s">' % i - MSOCR(self).dump() + msodraw.MSOCR(self).dumpXml(self) print '</smca>' print '</splitColors>' diff --git a/src/msodraw.py b/src/msodraw.py index 0852f02..6507e8e 100644 --- a/src/msodraw.py +++ b/src/msodraw.py @@ -510,6 +510,14 @@ class MSOCR: else: recHdl.appendLine(" RGB color: (red=%d, green=%d, blue=%d)"%(self.red, self.green, self.blue)) + def dumpXml(self, recHdl): + recHdl.appendLine('<msocr type="MSOCR">') + recHdl.appendLine('<red value="%d"/>' % self.red) + recHdl.appendLine('<green value="%d"/>' % self.green) + recHdl.appendLine('<blue value="%d"/>' % self.blue) + recHdl.appendLine('<fSchemeIndex value="%d"/>' % self.isSchemeIndex) + recHdl.appendLine('</msocr>') + class SplitMenuColorContainer: def __init__ (self, strm): self.smca = [] commit b06dcb0a42ff0617d4b129c0fd689a1604b345b0 Author: Miklos Vajna <vmik...@suse.cz> Date: Wed Dec 5 11:57:09 2012 +0100 docdraw: use msodraw.FDGG diff --git a/src/docdraw.py b/src/docdraw.py index 87a3ea1..ae28ba5 100644 --- a/src/docdraw.py +++ b/src/docdraw.py @@ -11,25 +11,6 @@ from docdirstream import DOCDirStream import docsprm import msodraw -class OfficeArtFDGG(DOCDirStream): - """The OfficeArtFDGG record specifies documnet-wide information about all of the drawings that have been saved in the file.""" - size = 16 - def __init__(self, officeArtFDGGBlock, name): - DOCDirStream.__init__(self, officeArtFDGGBlock.bytes) - self.name = name - self.pos = officeArtFDGGBlock.pos - self.officeArtFDGGBlock = officeArtFDGGBlock - - def dump(self): - print '<%s type="OfficeArtFDGG" offset="%d" size="%d bytes">' % (self.name, self.pos, OfficeArtFDGG.size) - self.printAndSet("spidMax", self.readuInt32()) - self.printAndSet("cidcl", self.readuInt32()) - self.printAndSet("cspSaved", self.readuInt32()) - self.printAndSet("cdgSaved", self.readuInt32()) - print '</%s>' % self.name - assert self.pos == self.officeArtFDGGBlock.pos + OfficeArtFDGG.size - self.officeArtFDGGBlock.pos = self.pos - class OfficeArtFDGGBlock(DOCDirStream): """The OfficeArtFDGGBlock record specifies document-wide information about all of the drawings that have been saved in the file.""" def __init__(self, officeArtDggContainer, pos): @@ -39,8 +20,8 @@ class OfficeArtFDGGBlock(DOCDirStream): def dump(self): print '<drawingGroup type="OfficeArtFDGGBlock" offset="%d">' % self.pos msodraw.RecordHeader(self).dumpXml(self) - self.head = OfficeArtFDGG(self, "head") - self.head.dump() + self.head = msodraw.FDGG(self) + self.head.dumpXml(self) for i in range(self.head.cidcl - 1): print '<Rgidcl index="%d">' % i msodraw.IDCL(self).dumpXml(self) diff --git a/src/msodraw.py b/src/msodraw.py index 66f5531..0852f02 100644 --- a/src/msodraw.py +++ b/src/msodraw.py @@ -190,6 +190,14 @@ class FDGG: recHdl.appendLine(" total number of shapes in all drawings: %d"%self.cspSaved) recHdl.appendLine(" total number of drawings in the file: %d"%self.cdgSaved) + def dumpXml(self, recHdl): + recHdl.appendLine('<fdgg type="OfficeArtFDGG">') + recHdl.appendLine('<spidMax value="%d"/>' % self.spidMax) + recHdl.appendLine('<cidcl value="%d"/>' % self.cidcl) + recHdl.appendLine('<cspSaved value="%d"/>' % self.cspSaved) + recHdl.appendLine('<cdgSaved value="%d"/>' % self.cdgSaved) + recHdl.appendLine('</fdgg>') + class FDGGBlock: def __init__ (self, strm): self.head = FDGG(strm) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits