[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