File: commonui\System\Drawing\Advanced\MetafileHeaderWmf.cs
Project: ndp\fx\src\System.Drawing.csproj (System.Drawing)
//------------------------------------------------------------------------------
// <copyright file="MetafileHeaderWmf.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------
 
namespace System.Drawing.Imaging {
 
    using System.Diagnostics;
 
    using System.Drawing;
    using System;
    using System.Runtime.InteropServices;
     
    [StructLayout(LayoutKind.Sequential, Pack=8)]
    internal class MetafileHeaderWmf
    {
        /// SECREVIEW :  The ENHMETAHEADER structure is defined natively as a union with WmfHeader.  
        ///              Extreme care should be taken if changing the layout of the corresponding managaed 
        ///              structures to minimize the risk of buffer overruns.  The affected managed classes 
        ///              are the following: ENHMETAHEADER, MetaHeader, MetafileHeaderWmf, MetafileHeaderEmf.
        ///              See ASURT#82822 or changes in Metafile.cs@115636 for more information.
        ///  
        public MetafileType type = MetafileType.Invalid;
        public int size = Marshal.SizeOf(typeof(MetafileHeaderWmf));
        public int version;
        public EmfPlusFlags emfPlusFlags=0;
        public float dpiX;
        public float dpiY;
        public int X;
        public int Y;
        public int Width;
        public int Height;
        
        //The below datatype, WmfHeader, file is defined natively
        //as a union with EmfHeader.  Since EmfHeader is a larger
        //structure, we need to pad the struct below so that this
        //will marshal correctly.
        [MarshalAs(UnmanagedType.Struct)]
        public MetaHeader WmfHeader = new MetaHeader();
        public int dummy1;
        public int dummy2;
        public int dummy3;
        public int dummy4;
        public int dummy5;
        public int dummy6;
        public int dummy7;
        public int dummy8;
        public int dummy9;
        public int dummy10;
        public int dummy11;
        public int dummy12;
        public int dummy13;
        public int dummy14;
        public int dummy15;
        public int dummy16;
 
        public int EmfPlusHeaderSize;
        public int LogicalDpiX;
        public int LogicalDpiY;
    }
}