msodumper/emfrecord.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+)
New commits: commit 8849621e3af4a137651d7483f9cf2b8203fe47cb Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Wed Sep 16 12:12:57 2020 +0200 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Wed Sep 16 12:12:57 2020 +0200 emf-dump: show EmrCommentMultiformats Change-Id: Iff30c99e70540b5dfa0f9ce024586f6890fe7948 diff --git a/msodumper/emfrecord.py b/msodumper/emfrecord.py index 60d9de3..be66124 100644 --- a/msodumper/emfrecord.py +++ b/msodumper/emfrecord.py @@ -217,6 +217,46 @@ class EmrSeticmmode(EMFRecord): assert self.pos - posOrig == self.Size +# The FormatSignature enumeration defines values that are used to identify the format of embedded +# data in EMF records. +FormatSignature = { + 0x464D4520: "ENHMETA_SIGNATURE", + 0x46535045: "EPS_SIGNATURE", + 0x50444620: "PDF ", # not in [MS-EMF] +} + +class EmrFormat(EMFRecord): + """ + The EmrFormat object contains information that identifies the format of image data in an + EMR_COMMENT_MULTIFORMATS record. + """ + def __init__(self, parent, index): + EMFRecord.__init__(self, parent) + self.index = index + + def dump(self): + print("<emrFormat index='%s'>" % self.index) + self.printAndSet("Signature", self.readuInt32(), dict=FormatSignature) + self.printAndSet("Version", self.readuInt32()) + self.printAndSet("SizeData", self.readuInt32(), hexdump=False) + self.printAndSet("offData", self.readuInt32(), hexdump=False) + print("</emrFormat>") + + +class EmrCommentMultiformats(EMFRecord): + """The EMR_COMMENT_MULTIFORMATS record specifies an image in multiple graphics formats.""" + def __init__(self, parent): + EMFRecord.__init__(self, parent) + + def dump(self): + print("<emrCommentMultiFormats>") + wmfrecord.RectL(self, "OutputRect").dump() + self.printAndSet("CountFormats", self.readuInt32()) + for formatIndex in range(self.CountFormats): + EmrFormat(self, formatIndex).dump() + print("</emrCommentMultiFormats>") + + # Defines the types of data that a public comment record can contain. EmrCommentEnum = { 0x80000001: "EMR_COMMENT_WINDOWS_METAFILE", @@ -236,6 +276,8 @@ class EmrCommentPublic(EMFRecord): def dump(self): print("<emrCommentPublic>") self.printAndSet("PublicCommentIdentifier", self.readuInt32(), dict=EmrCommentEnum) + if self.PublicCommentIdentifier == 0x40000004: # EMR_COMMENT_MULTIFORMATS + EmrCommentMultiformats(self).dump() print("</emrCommentPublic>") _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits