[Libreoffice-commits] .: 2 commits - src/docdirstream.py src/docdraw.py src/msodraw.py

Miklos Vajna vmiklos at kemper.freedesktop.org
Wed Dec 5 03:05:58 PST 2012


 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 <vmiklos at 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 <vmiklos at 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)


More information about the Libreoffice-commits mailing list