From c99d5a22f9dfebd595308d9dc5f20112674a3b8c Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Mon, 23 Oct 2017 16:34:09 +0200 Subject: 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 Tested-by: Noel Grandin --- msodumper/pptrecord.py | 28 ++++++++++++++-------------- 1 file 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") -- cgit v1.2.3