summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-04-18 21:54:28 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-04-18 22:21:15 +0200
commit3603cebb4a7e2de9eb6c5225af81300e037ea88e (patch)
tree871dfff78b92140906d8dfc1d45c32ecaff490e5
parent945fb415736a7cb9c228d14fef367e6e6a02ec17 (diff)
dump EmrSetpolyfillmode
-rw-r--r--msodumper/emfrecord.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/msodumper/emfrecord.py b/msodumper/emfrecord.py
index 2a360c2..288cfdd 100644
--- a/msodumper/emfrecord.py
+++ b/msodumper/emfrecord.py
@@ -219,6 +219,26 @@ class EmrSetviewportorgex(EMFRecord):
assert self.pos - posOrig == self.Size
+# Defines values that specify how to calculate the region of a polygon that is to be filled.
+PolygonFillMode = {
+ 0x01: "ALTERNATE", # Selects alternate mode (fills the area between odd-numbered and even-numbered polygon sides on each scan line).
+ 0x02: "WINDING" # Selects winding mode (fills any region with a nonzero winding value).
+}
+
+
+class EmrSetpolyfillmode(EMFRecord):
+ """Defines polygon fill mode."""
+ def __init__(self, parent):
+ EMFRecord.__init__(self, parent)
+
+ def dump(self):
+ posOrig = self.pos
+ self.printAndSet("Type", self.readuInt32())
+ self.printAndSet("Size", self.readuInt32(), hexdump=False)
+ self.printAndSet("PolygonFillMode", self.readuInt32(), dict=PolygonFillMode)
+ assert self.pos - posOrig == self.Size
+
+
class EmrExtselectcliprgn(EMFRecord):
"""Combines the specified region with the current clip region using the specified mode."""
def __init__(self, parent):
@@ -442,7 +462,7 @@ RecordType = {
0x00000010: ['EMR_SETMAPPERFLAGS'],
0x00000011: ['EMR_SETMAPMODE'],
0x00000012: ['EMR_SETBKMODE'],
- 0x00000013: ['EMR_SETPOLYFILLMODE'],
+ 0x00000013: ['EMR_SETPOLYFILLMODE', EmrSetpolyfillmode],
0x00000014: ['EMR_SETROP2'],
0x00000015: ['EMR_SETSTRETCHBLTMODE'],
0x00000016: ['EMR_SETTEXTALIGN'],