Revision Summary Date Revision History Revision Class Comments 2/22/2007 0.01 New Version 0.01 release 6/1/2007 1.0 Major Updated and revised the technical content. 7/3/2007 1.1 Restructured for better usability, technical corrections. 7/20/2007 1.2 Clarified the meaning of the technical content. 8/10/2007 1.3 Minor Clarified the meaning of the technical content. 9/28/2007 1.3.1 Editorial Changed language and formatting in the technical content. 10/23/2007 1.4 Minor Updated artwork. 11/30/2007 1.5 Minor Standardized artwork. 1/25/2008 1.5.1 Editorial Changed language and formatting in the technical content. 3/14/2008 2.0 Major Abstract data model and Windows behavior added. 5/16/2008 2.0.1 Editorial Changed language and formatting in the technical content. 6/20/2008 3.0 Major Updated and revised the
technical content. 7/25/2008 3.0.1 Editorial Changed language and formatting in the technical content. 8/29/2008 3.0.2 Editorial Changed language and formatting in the technical content. 10/24/2008 4.0 Major Sections 1.7 and 2 of this specification are normative. All sections and examples in this specification are informative. Glossary updated; PitchAndFamily object 12/5/2008 4.1 Minor Clarified the meaning of the technical content. 1/16/2009 5.0 Updated and revised the technical content. 2/27/2009 5.1 Minor Clarified the meaning of the technical content. 4/10/2009 6.0 Major Updated and revised the technical content. 5/22/2009 7.0 Major Updated and revised the technical content. 7/2/2009 7.0.1 Editorial Changed language and formatting in the technical content.
8/14/2009 7.0.2 Editorial Changed language and formatting in the technical content. 9/25/2009 7.1 Minor Clarified the meaning of the technical content. 11/6/2009 8.0 Major Updated and revised the technical content. 12/18/2009 8.1 Clarified the meaning of the technical content. 1/29/2010 8.1.1 Editorial Changed language and formatting in the technical content. 3/12/2010 8.2 Minor Clarified the meaning of the technical content. 4/23/2010 8.2.1 Editorial Changed language and formatting in the technical content. 6/4/2010 8.3 Minor Clarified the meaning of the technical content. 7/16/2010 8.4 Minor Clarified the meaning of the technical content. 8/27/2010 8.5 Minor Clarified the meaning of the technical content. 10/8/2010 8.5 None No changes to the meaning, language, or formatting of the technical content. 11/19/2010 8.5 None No changes to the meaning,
language, or formatting of the technical content. 1/7/2011 8.5 None No changes to the meaning, language, or formatting of the technical content. 2/11/2011 8.5 None No changes to the meaning, language, or formatting of the technical content. 3/25/2011 8.5 None No changes to the meaning, language, or formatting of the technical content. 5/6/2011 8.5 None No changes to the meaning, language, or formatting of the technical content. 6/17/2011 9.0 Major Updated and revised the technical content. 9/23/2011 9.0 None No changes to the meaning, language, or formatting of the technical content. 12/16/2011 10.0 Major Updated and revised the technical content. 3/30/2012 10.0 None No changes to the meaning, language, or formatting of the technical content. 7/12/2012 10.0 None No changes to the meaning, language, or formatting of
the technical content. 10/25/2012 10.0 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 10.0 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 11.0 Updated and revised the technical content. 11/14/2013 11.0 None No changes to the meaning, language, or formatting of the technical content. 2/13/2014 11.0 None No changes to the meaning, language, or formatting of the technical content. 5/15/2014 11.1 Minor Clarified the meaning of the technical content. 6/30/2015 12.0 Major Significantly changed the technical content. 10/16/2015 13.0 Major Significantly changed the technical content. 7/14/2016 13.1 Clarified the meaning of the technical content. 6/1/2017 13.1 None No changes to the meaning, language, or formatting of the technical content.
9/15/2017 14.0 Major Significantly changed the technical content. 12/1/2017 14.0 None No changes to the meaning, language, or formatting of the technical content. 9/12/2018 15.0 Major Significantly changed the technical content.
Reverse Polish = 00D307A4 Common = SPDSoaxn SSPXPDXAX: Reverse Polish = 00D41D78 Common = SSPxPDxax DPSANAN: Reverse Polish = 00D50CE9 Common = DPSanan PSDPSAOXX: Reverse Polish = 00D616EA Common = PSDPSaoxx DPSXAN: Reverse Polish = 00D70349 Common = DPSxan PDSPXAX: Reverse Polish = 00D80745 Common = PDSPxax SDPSAOXN: Reverse Polish = 00D906E8 Common = SDPSaoxn DPSDANAX: Reverse Polish = 00DA1CE9 Common = DPSDanax SPXDSXAN: Reverse Polish = 00DB0D75 Common = SPxDSxan SPDNAO: Reverse Polish = 00DC0B04 Common = SPDnao SDNO: Reverse Polish = 00DD0228 Common = SDno
0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 Red Green Blue Reserved Red (1 byte): An 8-bit unsigned integer that defines the relative intensity of red. Green (1 byte): An 8-bit unsigned integer that defines the relative intensity of green. Blue (1 byte): An 8-bit unsigned integer that defines the relative intensity of blue. Reserved (1 byte): An 8-bit unsigned integer that MUST be 0x00. DeviceIndependentBitmap Object The DeviceIndependentBitmap (DIB) Object defines an image in format. 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 DIBHeaderInfo (variable) ... Colors (variable) ... BitmapBuffer (variable) ... DIBHeaderInfo (variable): Either a BitmapCoreHeader Object (section ) or a BitmapInfoHeader Object (section ) that specifies information about the image. The first 32 bits of this field is the HeaderSize value. If it is 0x0000000C, then this is a BitmapCoreHeader; otherwise, this is a BitmapInfoHeader. Colors (variable): An optional array of either or 16-bit unsigned integers that define a . The size and contents of this field SHOULD be determined from the record or object that contains this DeviceIndependentBitmap Object and from information in the DIBHeaderInfo field. See ColorUsage Enumeration (section ) and BitCount Enumeration (section ) for additional details. BitmapBuffer (variable): A buffer containing the image, which is not required to be contiguous with the DIB header, unless this is a . 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 UndefinedSpace (variable) ...
BS_NULL Not used, and SHOULD be ignored. Not used, and SHOULD be ignored. BS_PATTERN Not used, and SHOULD be ignored. Not used. A solid-color black Brush Object SHOULD be created by default.<49> BS_DIBPATTERN Not used, and SHOULD be ignored. Not used. A solid-color black Brush Object SHOULD be created by default. BS_DIBPATTERNPT Not used, and SHOULD be ignored. Not used. A default object, such as a solid-color black Brush Object, MAY be created. BS_HATCHED SHOULD be a ColorRef Object, which determines the foreground color of the hatch pattern. A value from the HatchStyle Enumeration (section ) that specifies the orientation of lines used to create the hatch. LogColorSpace Object The LogColorSpace Object specifies a logical for the , which can be the name of a in characters. 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 Signature Version Size ColorSpaceType Intent Endpoints (36 bytes) ... ... ... GammaRed GammaGreen
RecordSize RecordFunction Region Brush Height Width RecordSize (4 bytes): A 32-bit unsigned integer that defines the number of WORD structures, defined in section 2.2.61, in the record. RecordFunction (2 bytes): A 16-bit unsigned integer that defines this WMF record type. The lower byte MUST match the lower byte of the RecordType Enumeration (section ) table value META_FRAMEREGION. Region (2 bytes): A 16-bit unsigned integer used to index into the WMF Object Table (section ) to get the region to be framed. (2 bytes): A 16-bit unsigned integer used to index into the WMF Object Table to get the Brush to use for filling the region. Height (2 bytes): A 16-bit signed integer that defines the height, in logical units, of the region frame. Width (2 bytes): A 16-bit signed integer that defines the width, in logical units, of the region frame. The WMF Object Table refers to an indexed table of WMF Objects (section ) that are defined in the . See section 3.1.4.1 for more information. See section for the specification of other Drawing Records. META_INVERTREGION Record The META_INVERTREGION Record draws a in which the colors are inverted. 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 RecordSize RecordFunction Region RecordSize (4 bytes): A 32-bit unsigned integer that defines the number of WORD structures, defined in section 2.2.61, in the record. RecordFunction (2 bytes): A 16-bit unsigned integer that defines this WMF record type. The lower byte MUST match the lower byte of the RecordType Enumeration (section ) table value META_INVERTREGION. Region (2 bytes): A 16-bit unsigned integer used to index into the WMF Object Table (section ) to get the region to be inverted. The WMF Object Table refers to an indexed table of WMF Objects (section ) that are defined in the . See section 3.1.4.1 for more information. See section for the specification of other Drawing Records.
0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 RecordSize RecordFunction EscapeFunction ByteCount PNGBuffer (variable) ... RecordSize (4 bytes): A 32-bit unsigned integer that defines the number of WORD structures, defined in section 2.2.61, in the record. RecordFunction (2 bytes): A 16-bit unsigned integer that defines this record type. The lower byte MUST match the lower byte of the RecordType Enumeration (section ) table value META_ESCAPE. EscapeFunction (2 bytes): A 16-bit unsigned integer that defines the escape function. The value MUST be 0x1018 (CHECK_PNGFORMAT) from the MetafileEscapes Enumeration (section ). ByteCount (2 bytes): A 16-bit unsigned integer that specifies the size, in bytes, of the PNGBuffer field. PNGBuffer (variable): A buffer of PNG image data. See section for the specification of other Escape Record Types. CLIP_TO_PATH Record The CLIP_TO_PATH Record applies a function to the current clipping . 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 RecordSize RecordFunction EscapeFunction ByteCount ClipFunction Reserved1 RecordSize (4 A 32-bit unsigned integer that defines the number of WORD structures, defined in section 2.2.61, in this record. This value MUST be 0x0000000E. RecordFunction (2 A 16-bit unsigned integer that defines the record type. The lower byte MUST match the lower byte of the RecordType Enumeration (section ) table value META_ESCAPE. EscapeFunction (2 bytes): A 16-bit unsigned integer that defines the escape function. The value MUST be 0x1001 (CLIP_TO_PATH) from the MetafileEscapes Enumeration (section ). ByteCount (2 bytes): A 16-bit unsigned integer that specifies the size, in bytes, of the record data that follows. This value MUST be 0x0004.
170 170 170 170 171 171 171 171 10 18 H 35 I 201 16 10 L 35 19 92 92 93 93 94 94 36 36 M Managing objects 187 187 36 140 140 116 116 102 101 102 117 117 131 131 132 132 132 132 133 133 134 134 134 134 135 135 105 103 104 135 135 107 105 106 118 118 113 113 157 157 172 172 140 140 119 119 120 120 121 121 121 121 122 122 114 114 141 141 122 122 123 123 141 141 142 142 142 142 143 143 123 123 124 124 125 125 114 114 126 126 126 126 127 127 143 143 127 127 144 144 144 144 128