diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-10-23 16:34:09 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-01 07:16:23 +0100 |
commit | c99d5a22f9dfebd595308d9dc5f20112674a3b8c (patch) | |
tree | 4430ff214ae611acad0c41cd491c021e2777bd13 | |
parent | 46794aaacb57ac1a4910696400f54ba90b7f8ba8 (diff) |
improve parsing of PPT records
I didn't know what to do with the ColorPropertyHandler constructor
call, but it definitely should be reading 4 bytes, not 2 bytes and
4 bytes.
Without this change, I get clearly corrupt DFF_PST_StyleTextPropAtom
data when dumping some PPT files produced by LO.
Change-Id: I98fc6cd3398fee2687c98fe9f9d7bd330b1ab4e5
Reviewed-on: https://gerrit.libreoffice.org/43738
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r-- | msodumper/pptrecord.py | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/msodumper/pptrecord.py b/msodumper/pptrecord.py index f9283d4..48cc5a2 100644 --- a/msodumper/pptrecord.py +++ b/msodumper/pptrecord.py @@ -841,7 +841,7 @@ class TextStyles(BaseRecordHandler): self.appendParaProp("bullet size %d"%bulletSize) if styleMask & 0x0020: - bulletColorAtom = ColorPropertyHandler(self.readUnsignedInt(2), self.readUnsignedInt(4), False, False, [], self.appendParaProp) + bulletColorAtom = ColorPropertyHandler(0, self.readUnsignedInt(4), False, False, [], self.appendParaProp) bulletColorAtom.output() self.appendParaProp("bullet color atom") @@ -849,18 +849,6 @@ class TextStyles(BaseRecordHandler): paraAlignment = self.readSignedInt(2) self.appendParaProp("para alignment %4.4Xh"%paraAlignment) - if styleMask & 0x0400: - paraIndent = self.readSignedInt(2) - self.appendParaProp("para indent %d"%paraIndent) - - if styleMask & 0x0200: - unused = self.readSignedInt(2) - self.appendParaProp("unused para property %4.4Xh"%unused) - - if styleMask & 0x0100: - paraLeftMargin = self.readSignedInt(2) - self.appendParaProp("para left margin %d"%paraLeftMargin) - if styleMask & 0x1000: paraLineSpacing = self.readSignedInt(2) self.appendParaProp("para linespacing %d"%paraLineSpacing) @@ -873,6 +861,18 @@ class TextStyles(BaseRecordHandler): paraSpaceAfter = self.readSignedInt(2) self.appendParaProp("para space after %d"%paraSpaceAfter) + if styleMask & 0x0100: + paraLeftMargin = self.readSignedInt(2) + self.appendParaProp("para left margin %d"%paraLeftMargin) + + if styleMask & 0x0400: + paraIndent = self.readSignedInt(2) + self.appendParaProp("para indent %d"%paraIndent) + + if styleMask & 0x0200: + unused = self.readSignedInt(2) + self.appendParaProp("unused para property %4.4Xh"%unused) + if styleMask & 0x8000: paraDefaultTabSize = self.readSignedInt(2) self.appendParaProp("para default tab size %d"%paraDefaultTabSize) @@ -926,7 +926,7 @@ class TextStyles(BaseRecordHandler): self.appendCharProp("char font size %d"%fontSize) if styleMask & 0x40000: - charColorAtom = ColorPropertyHandler(self.readUnsignedInt(2), self.readUnsignedInt(4), False, False, [], self.appendCharProp) + charColorAtom = ColorPropertyHandler(0, self.readUnsignedInt(4), False, False, [], self.appendCharProp) charColorAtom.output() self.appendCharProp("char color atom") |