src/docdirstream.py | 5 +++ src/docdraw.py | 53 +------------------------------------ src/msodraw.py | 73 ++++++++++++++++++++++++++++++++++------------------ 3 files changed, 56 insertions(+), 75 deletions(-)
New commits: commit 88d9976621b49eb313f70a2e4606cad85754dbec Author: Miklos Vajna <[email protected]> Date: Wed Dec 5 15:17:46 2012 +0100 docdraw: use msodraw.FSP diff --git a/src/docdraw.py b/src/docdraw.py index 8252b14..4753d5a 100644 --- a/src/docdraw.py +++ b/src/docdraw.py @@ -49,37 +49,6 @@ class OfficeArtDggContainer(DOCDirStream): assert pos == self.pos + self.rh.recLen self.officeArtContent.pos = pos -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 dumpXml(self, compat, rh): - self.rh = rh - print '<shapeProp type="OfficeArtFSP" offset="%d">' % (self.pos) - 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 + self.rh.recLen - class OfficeArtClientData(DOCDirStream): def __init__(self, officeArtSpContainer, pos): DOCDirStream.__init__(self, officeArtSpContainer.bytes) @@ -274,7 +243,7 @@ recMap = { 0xf006: [msodraw.FDGGBlock], 0xf008: [msodraw.FDG], 0xf009: [msodraw.FSPGR], - 0xf00a: [OfficeArtFSP, True], + 0xf00a: [msodraw.FSP], 0xf00b: [OfficeArtFOPT, True], 0xf011: [OfficeArtClientData, True], 0xf11e: [msodraw.SplitMenuColorContainer], diff --git a/src/msodraw.py b/src/msodraw.py index ccbb2f4..c487ef1 100644 --- a/src/msodraw.py +++ b/src/msodraw.py @@ -446,34 +446,51 @@ class FSP: def __init__ (self, strm): self.spid = strm.readUnsignedInt(4) self.flag = strm.readUnsignedInt(4) + self.groupShape = (self.flag & 0x0001) != 0 + self.childShape = (self.flag & 0x0002) != 0 + self.topMostInGroup = (self.flag & 0x0004) != 0 + self.deleted = (self.flag & 0x0008) != 0 + self.oleObject = (self.flag & 0x0010) != 0 + self.haveMaster = (self.flag & 0x0020) != 0 + self.flipHorizontal = (self.flag & 0x0040) != 0 + self.flipVertical = (self.flag & 0x0080) != 0 + self.isConnector = (self.flag & 0x0100) != 0 + self.haveAnchor = (self.flag & 0x0200) != 0 + self.background = (self.flag & 0x0400) != 0 + self.haveProperties = (self.flag & 0x0800) != 0 def appendLines (self, recHdl, rh): recHdl.appendLine("FSP content (instance of a shape):") recHdl.appendLine(" ID of this shape: %d"%self.spid) - groupShape = (self.flag & 0x0001) != 0 - childShape = (self.flag & 0x0002) != 0 - topMostInGroup = (self.flag & 0x0004) != 0 - deleted = (self.flag & 0x0008) != 0 - oleObject = (self.flag & 0x0010) != 0 - haveMaster = (self.flag & 0x0020) != 0 - flipHorizontal = (self.flag & 0x0040) != 0 - flipVertical = (self.flag & 0x0080) != 0 - isConnector = (self.flag & 0x0100) != 0 - haveAnchor = (self.flag & 0x0200) != 0 - background = (self.flag & 0x0400) != 0 - haveProperties = (self.flag & 0x0800) != 0 - recHdl.appendLineBoolean(" group shape", groupShape) - recHdl.appendLineBoolean(" child shape", childShape) - recHdl.appendLineBoolean(" topmost in group", topMostInGroup) - recHdl.appendLineBoolean(" deleted", deleted) - recHdl.appendLineBoolean(" OLE object shape", oleObject) - recHdl.appendLineBoolean(" have valid master", haveMaster) - recHdl.appendLineBoolean(" horizontally flipped", flipHorizontal) - recHdl.appendLineBoolean(" vertically flipped", flipVertical) - recHdl.appendLineBoolean(" connector shape", isConnector) - recHdl.appendLineBoolean(" have anchor", haveAnchor) - recHdl.appendLineBoolean(" background shape", background) - recHdl.appendLineBoolean(" have shape type property", haveProperties) + recHdl.appendLineBoolean(" group shape", self.groupShape) + recHdl.appendLineBoolean(" child shape", self.childShape) + recHdl.appendLineBoolean(" topmost in group", self.topMostInGroup) + recHdl.appendLineBoolean(" deleted", self.deleted) + recHdl.appendLineBoolean(" OLE object shape", self.oleObject) + recHdl.appendLineBoolean(" have valid master", self.haveMaster) + recHdl.appendLineBoolean(" horizontally flipped", self.flipHorizontal) + recHdl.appendLineBoolean(" vertically flipped", self.flipVertical) + recHdl.appendLineBoolean(" connector shape", self.isConnector) + recHdl.appendLineBoolean(" have anchor", self.haveAnchor) + recHdl.appendLineBoolean(" background shape", self.background) + recHdl.appendLineBoolean(" have shape type property", self.haveProperties) + + def dumpXml(self, recHdl, rh): + recHdl.appendLine('<shapeProp type="OfficeArtFSPGR">') + recHdl.appendLine('<spid value="%d"/>' % self.spid) + recHdl.appendLine('<fGroup value="%d"/>' % self.groupShape) + recHdl.appendLine('<fChild value="%d"/>' % self.childShape) + recHdl.appendLine('<fPatriarch value="%d"/>' % self.topMostInGroup) + recHdl.appendLine('<fDeleted value="%d"/>' % self.deleted) + recHdl.appendLine('<fOleShape value="%d"/>' % self.oleObject) + recHdl.appendLine('<fHaveMaster value="%d"/>' % self.haveMaster) + recHdl.appendLine('<fFlipH value="%d"/>' % self.flipHorizontal) + recHdl.appendLine('<fFlipV value="%d"/>' % self.flipVertical) + recHdl.appendLine('<fConnector value="%d"/>' % self.isConnector) + recHdl.appendLine('<fHaveAnchor value="%d"/>' % self.haveAnchor) + recHdl.appendLine('<fBackground value="%d"/>' % self.background) + recHdl.appendLine('<fHaveSpt value="%d"/>' % self.haveProperties) + recHdl.appendLine('</shapeProp>') class FSPGR: commit e463dd63af7c179778a55f3bcff1d56fb6edc283 Author: Miklos Vajna <[email protected]> Date: Wed Dec 5 15:06:30 2012 +0100 docdraw: use msodraw.FSPGR diff --git a/src/docdirstream.py b/src/docdirstream.py index 1ab5f61..c5e01f4 100644 --- a/src/docdirstream.py +++ b/src/docdirstream.py @@ -134,6 +134,11 @@ class DOCDirStream: return self.readuInt32() raise Exception + def readSignedInt(self, size): + if size == 4: + return self.readInt32() + raise Exception + def appendLine(self, line): print line diff --git a/src/docdraw.py b/src/docdraw.py index 2c4d5f8..8252b14 100644 --- a/src/docdraw.py +++ b/src/docdraw.py @@ -49,24 +49,6 @@ class OfficeArtDggContainer(DOCDirStream): assert pos == self.pos + self.rh.recLen self.officeArtContent.pos = pos -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 dumpXml(self, compat, rh): - self.rh = rh - print '<shapeGroup type="OfficeArtFSPGR" offset="%d">' % (self.pos) - 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 + self.rh.recLen - class OfficeArtFSP(DOCDirStream): """The OfficeArtFSP record specifies an instance of a shape.""" def __init__(self, officeArtSpContainer, pos): @@ -291,7 +273,7 @@ recMap = { 0xf004: [OfficeArtSpContainer, True], 0xf006: [msodraw.FDGGBlock], 0xf008: [msodraw.FDG], - 0xf009: [OfficeArtFSPGR, True], + 0xf009: [msodraw.FSPGR], 0xf00a: [OfficeArtFSP, True], 0xf00b: [OfficeArtFOPT, True], 0xf011: [OfficeArtClientData, True], diff --git a/src/msodraw.py b/src/msodraw.py index dd62660..ccbb2f4 100644 --- a/src/msodraw.py +++ b/src/msodraw.py @@ -490,6 +490,14 @@ class FSPGR: recHdl.appendLine(" right boundary: %d"%self.right) recHdl.appendLine(" bottom boundary: %d"%self.bottom) + def dumpXml(self, recHdl, rh): + recHdl.appendLine('<shapeGroup type="OfficeArtFSPGR">') + recHdl.appendLine('<xLeft value="%d"/>' % self.left) + recHdl.appendLine('<yTop value="%d"/>' % self.top) + recHdl.appendLine('<xRight value="%d"/>' % self.right) + recHdl.appendLine('<yBottom value="%d"/>' % self.bottom) + recHdl.appendLine('</shapeGroup>') + class FConnectorRule: def __init__ (self, strm): _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
