public static MetafileHeader GetMetafileHeader(string fileName)
        {
            System.Drawing.IntSecurity.DemandReadFileIO(fileName);
            MetafileHeader header = new MetafileHeader();
            IntPtr         ptr    = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));

            try
            {
                int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromFile(fileName, ptr);
                if (status != 0)
                {
                    throw SafeNativeMethods.Gdip.StatusException(status);
                }
                int[] destination = new int[1];
                Marshal.Copy(ptr, destination, 0, 1);
                switch (((MetafileType)destination[0]))
                {
                case MetafileType.Wmf:
                case MetafileType.WmfPlaceable:
                    header.wmf = (MetafileHeaderWmf)UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderWmf));
                    header.emf = null;
                    return(header);
                }
                header.wmf = null;
                header.emf = (MetafileHeaderEmf)UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderEmf));
            }
            finally
            {
                Marshal.FreeHGlobal(ptr);
            }
            return(header);
        }
        public static MetafileHeader GetMetafileHeader(Stream stream)
        {
            MetafileHeader header;
            IntPtr         ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));

            try
            {
                int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromStream(new GPStream(stream), ptr);
                if (status != 0)
                {
                    throw SafeNativeMethods.Gdip.StatusException(status);
                }
                int[] destination = new int[1];
                Marshal.Copy(ptr, destination, 0, 1);
                MetafileType type = (MetafileType)destination[0];
                header = new MetafileHeader();
                switch (type)
                {
                case MetafileType.Wmf:
                case MetafileType.WmfPlaceable:
                    header.wmf = (MetafileHeaderWmf)UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderWmf));
                    header.emf = null;
                    return(header);
                }
                header.wmf = null;
                header.emf = (MetafileHeaderEmf)UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderEmf));
            }
            finally
            {
                Marshal.FreeHGlobal(ptr);
            }
            return(header);
        }
Esempio n. 3
0
        // Convenience wrappers for "GetMetafileHeader".
        public static MetafileHeader GetMetafileHeader(IntPtr henhmetafile)
        {
            Metafile       file   = new Metafile(henhmetafile, false);
            MetafileHeader header = file.GetMetafileHeader();

            file.Detach();
            return(header);
        }
        public static MetafileHeader GetMetafileHeader(IntPtr hmetafile, WmfPlaceableFileHeader wmfHeader)
        {
            System.Drawing.IntSecurity.ObjectFromWin32Handle.Demand();
            MetafileHeader header = new MetafileHeader {
                wmf = new MetafileHeaderWmf()
            };
            int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromWmf(new HandleRef(null, hmetafile), wmfHeader, header.wmf);

            if (status != 0)
            {
                throw SafeNativeMethods.Gdip.StatusException(status);
            }
            return(header);
        }
Esempio n. 5
0
        public static MetafileHeader GetMetafileHeader(IntPtr henhmetafile)
        {
            IntSecurity.ObjectFromWin32Handle.Demand();

            MetafileHeader header = new MetafileHeader();

            header.emf = new MetafileHeaderEmf();

            int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromEmf(new HandleRef(null, henhmetafile), header.emf);

            if (status != SafeNativeMethods.Gdip.Ok)
            {
                throw SafeNativeMethods.Gdip.StatusException(status);
            }

            return(header);
        }
Esempio n. 6
0
        public static MetafileHeader GetMetafileHeader(string fileName)
        {
            IntSecurity.DemandReadFileIO(fileName);

            MetafileHeader header = new MetafileHeader();

            IntPtr memory = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));

            try {
                int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromFile(fileName, memory);

                if (status != SafeNativeMethods.Gdip.Ok)
                {
                    throw SafeNativeMethods.Gdip.StatusException(status);
                }

                int[] type = new int[] { 0 };

                Marshal.Copy(memory, type, 0, 1);

                MetafileType metafileType = (MetafileType)type[0];

                if (metafileType == MetafileType.Wmf ||
                    metafileType == MetafileType.WmfPlaceable)
                {
                    // WMF header
                    header.wmf = (MetafileHeaderWmf)UnsafeNativeMethods.PtrToStructure(memory, typeof(MetafileHeaderWmf));
                    header.emf = null;
                }
                else
                {
                    // EMF header
                    header.wmf = null;
                    header.emf = (MetafileHeaderEmf)UnsafeNativeMethods.PtrToStructure(memory, typeof(MetafileHeaderEmf));
                }
            }
            finally {
                Marshal.FreeHGlobal(memory);
            }

            return(header);
        }
Esempio n. 7
0
        /// <include file='doc\Metafile.uex' path='docs/doc[@for="Metafile.GetMetafileHeader3"]/*' />
        /// <devdoc>
        ///    <para>
        ///       Returns the <see cref='System.Drawing.Imaging.MetafileHeader'/> associated with the specified <see cref='System.Drawing.Imaging.Metafile'/>.
        ///    </para>
        /// </devdoc>
        public static MetafileHeader GetMetafileHeader(Stream stream)
        {
            MetafileHeader header = new MetafileHeader();

            IntPtr memory = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));

            int status = SafeNativeMethods.GdipGetMetafileHeaderFromStream(new GPStream(stream), memory);

            if (status != SafeNativeMethods.Ok)
            {
                Marshal.FreeHGlobal(memory);
                throw SafeNativeMethods.StatusException(status);
            }

            int[] type = new int[] { 0 };

            Marshal.Copy(memory, type, 0, 1);

            MetafileType metafileType = (MetafileType)type[0];

            if (metafileType == MetafileType.Wmf ||
                metafileType == MetafileType.WmfPlaceable)
            {
                // WMF header
                header.wmf = (MetafileHeaderWmf)UnsafeNativeMethods.PtrToStructure(memory, typeof(MetafileHeaderWmf));
                header.emf = null;
            }
            else
            {
                // EMF header
                header.wmf = null;
                header.emf = (MetafileHeaderEmf)UnsafeNativeMethods.PtrToStructure(memory, typeof(MetafileHeaderEmf));
            }

            Marshal.FreeHGlobal(memory);

            return(header);
        }
Esempio n. 8
0
		private void CheckMetafileHeader (MetafileHeader header)
		{
			MetafileHeader mh1 = new Metafile (getInFile ("bitmaps/telescope_01.wmf")).GetMetafileHeader ();
			// compare MetafileHeader
			Assert.AreEqual (mh1.Bounds.X, header.Bounds.X, "Bounds.X");
			Assert.AreEqual (mh1.Bounds.Y, header.Bounds.Y, "Bounds.Y");
			Assert.AreEqual (mh1.Bounds.Width, header.Bounds.Width, "Bounds.Width");
			Assert.AreEqual (mh1.Bounds.Height, header.Bounds.Height, "Bounds.Height");
			Assert.AreEqual (mh1.DpiX, header.DpiX, "DpiX");
			Assert.AreEqual (mh1.DpiY, header.DpiY, "DpiY");
			Assert.AreEqual (mh1.EmfPlusHeaderSize, header.EmfPlusHeaderSize, "EmfPlusHeaderSize");
			Assert.AreEqual (mh1.LogicalDpiX, header.LogicalDpiX, "LogicalDpiX");
			Assert.AreEqual (mh1.LogicalDpiY, header.LogicalDpiY, "LogicalDpiY");
			Assert.AreEqual (mh1.MetafileSize, header.MetafileSize, "MetafileSize");
			Assert.AreEqual (mh1.Type, header.Type, "Type");
			Assert.AreEqual (mh1.Version, header.Version, "Version");
			// compare MetaHeader
			MetaHeader mh1h = mh1.WmfHeader;
			MetaHeader mh2h = header.WmfHeader;
			Assert.AreEqual (mh1h.HeaderSize, mh2h.HeaderSize, "HeaderSize");
			Assert.AreEqual (mh1h.MaxRecord, mh2h.MaxRecord, "MaxRecord");
			Assert.AreEqual (mh1h.NoObjects, mh2h.NoObjects, "NoObjects");
			Assert.AreEqual (mh1h.NoParameters, mh2h.NoParameters, "NoParameters");
			Assert.AreEqual (mh1h.Size, mh2h.Size, "Size");
			Assert.AreEqual (mh1h.Type, mh2h.Type, "Type");
			Assert.AreEqual (mh1h.Version, mh2h.Version, "Version");
		}
Esempio n. 9
0
        public MetafileHeader GetMetafileHeader()
        {
            MetafileHeader header;

            IntPtr memory = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));

            try {
                int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromMetafile(new HandleRef(this, nativeImage), memory);

                if (status != SafeNativeMethods.Gdip.Ok) {
                    throw SafeNativeMethods.Gdip.StatusException(status);
                }

                int[] type = new int[] { 0};

                Marshal.Copy(memory, type, 0, 1);

                MetafileType metafileType = (MetafileType) type[0];

                header = new MetafileHeader();

                if (metafileType == MetafileType.Wmf ||
                    metafileType == MetafileType.WmfPlaceable) {
                    // WMF header
                    header.wmf = (MetafileHeaderWmf)UnsafeNativeMethods.PtrToStructure(memory, typeof(MetafileHeaderWmf));
                    header.emf = null;
                } else {
                    // EMF header
                    header.wmf = null;
                    header.emf = (MetafileHeaderEmf)UnsafeNativeMethods.PtrToStructure(memory, typeof(MetafileHeaderEmf));
                }
            }
            finally {
                Marshal.FreeHGlobal(memory);
            }

            return header;
        }
Esempio n. 10
0
        public static MetafileHeader GetMetafileHeader(IntPtr henhmetafile)
        {
            IntSecurity.ObjectFromWin32Handle.Demand();

            MetafileHeader header = new MetafileHeader();
            header.emf = new MetafileHeaderEmf();

            int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromEmf(new HandleRef(null, henhmetafile), header.emf);

            if (status != SafeNativeMethods.Gdip.Ok)
                throw SafeNativeMethods.Gdip.StatusException(status);
                
            return header;
        }
Esempio n. 11
0
		public static void Check_MetafileHeader_Emf (MetafileHeader header)
		{
			Assert.AreEqual (MetafileType.Emf, header.Type, "Type");
			Assert.AreEqual (65536, header.Version, "Version");
			// extactly the filesize
			Assert.AreEqual (20456, header.MetafileSize, "MetafileSize");

			Assert.AreEqual (0, header.Bounds.X, "Bounds.X");
			Assert.AreEqual (0, header.Bounds.Y, "Bounds.Y");
#if false
			Assert.AreEqual (759, header.Bounds.Width, "Bounds.Width");
			Assert.AreEqual (1073, header.Bounds.Height, "Bounds.Height");
			Assert.AreEqual (96f, header.DpiX, 0.5f, "DpiX");
			Assert.AreEqual (96f, header.DpiY, 0.5f, "DpiY");
			Assert.AreEqual (6619188, header.EmfPlusHeaderSize, "EmfPlusHeaderSize");
			Assert.AreEqual (3670064, header.LogicalDpiX, "LogicalDpiX");
			Assert.AreEqual (3670064, header.LogicalDpiY, "LogicalDpiY");
#endif
			try {
				Assert.IsNotNull (header.WmfHeader, "WmfHeader");
				Assert.Fail ("WmfHeader didn't throw an ArgumentException");
			}
			catch (ArgumentException) {
			}
			catch (Exception e) {
				Assert.Fail ("WmfHeader didn't throw an ArgumentException but: {0}.", e.ToString ());
			}

			Assert.IsFalse (header.IsDisplay (), "IsDisplay");
			Assert.IsTrue (header.IsEmf (), "IsEmf");
			Assert.IsTrue (header.IsEmfOrEmfPlus (), "IsEmfOrEmfPlus");
			Assert.IsFalse (header.IsEmfPlus (), "IsEmfPlus");
			Assert.IsFalse (header.IsEmfPlusDual (), "IsEmfPlusDual");
			Assert.IsFalse (header.IsEmfPlusOnly (), "IsEmfPlusOnly");
			Assert.IsFalse (header.IsWmf (), "IsWmf");
			Assert.IsFalse (header.IsWmfPlaceable (), "IsWmfPlaceable");
		}
Esempio n. 12
0
		public static void Check_MetafileHeader_WmfPlaceable (MetafileHeader header)
		{
			Assert.AreEqual (MetafileType.WmfPlaceable, header.Type, "Type");
			Assert.AreEqual (0x300, header.Version, "Version");
			// filesize - 22, which happens to be the size (22) of a PLACEABLEMETAHEADER struct
			Assert.AreEqual (3474, header.MetafileSize, "MetafileSize");

			Assert.AreEqual (-30, header.Bounds.X, "Bounds.X");
			Assert.AreEqual (-40, header.Bounds.Y, "Bounds.Y");
			Assert.AreEqual (3096, header.Bounds.Width, "Bounds.Width");
			Assert.AreEqual (4127, header.Bounds.Height, "Bounds.Height");
			Assert.AreEqual (606, header.DpiX, "DpiX");
			Assert.AreEqual (606, header.DpiY, "DpiY");
			Assert.AreEqual (0, header.EmfPlusHeaderSize, "EmfPlusHeaderSize");
			Assert.AreEqual (0, header.LogicalDpiX, "LogicalDpiX");
			Assert.AreEqual (0, header.LogicalDpiY, "LogicalDpiY");

			Assert.IsNotNull (header.WmfHeader, "WmfHeader");
			Check_MetaHeader_WmfPlaceable (header.WmfHeader);

			Assert.IsFalse (header.IsDisplay (), "IsDisplay");
			Assert.IsFalse (header.IsEmf (), "IsEmf");
			Assert.IsFalse (header.IsEmfOrEmfPlus (), "IsEmfOrEmfPlus");
			Assert.IsFalse (header.IsEmfPlus (), "IsEmfPlus");
			Assert.IsFalse (header.IsEmfPlusDual (), "IsEmfPlusDual");
			Assert.IsFalse (header.IsEmfPlusOnly (), "IsEmfPlusOnly");
			Assert.IsTrue (header.IsWmf (), "IsWmf");
			Assert.IsTrue (header.IsWmfPlaceable (), "IsWmfPlaceable");
		}
 public static MetafileHeader GetMetafileHeader(IntPtr hmetafile, WmfPlaceableFileHeader wmfHeader)
 {
     System.Drawing.IntSecurity.ObjectFromWin32Handle.Demand();
     MetafileHeader header = new MetafileHeader {
         wmf = new MetafileHeaderWmf()
     };
     int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromWmf(new HandleRef(null, hmetafile), wmfHeader, header.wmf);
     if (status != 0)
     {
         throw SafeNativeMethods.Gdip.StatusException(status);
     }
     return header;
 }
 public static MetafileHeader GetMetafileHeader(string fileName)
 {
     System.Drawing.IntSecurity.DemandReadFileIO(fileName);
     MetafileHeader header = new MetafileHeader();
     IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));
     try
     {
         int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromFile(fileName, ptr);
         if (status != 0)
         {
             throw SafeNativeMethods.Gdip.StatusException(status);
         }
         int[] destination = new int[1];
         Marshal.Copy(ptr, destination, 0, 1);
         switch (((MetafileType) destination[0]))
         {
             case MetafileType.Wmf:
             case MetafileType.WmfPlaceable:
                 header.wmf = (MetafileHeaderWmf) UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderWmf));
                 header.emf = null;
                 return header;
         }
         header.wmf = null;
         header.emf = (MetafileHeaderEmf) UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderEmf));
     }
     finally
     {
         Marshal.FreeHGlobal(ptr);
     }
     return header;
 }
 public static MetafileHeader GetMetafileHeader(Stream stream)
 {
     MetafileHeader header;
     IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MetafileHeaderEmf)));
     try
     {
         int status = SafeNativeMethods.Gdip.GdipGetMetafileHeaderFromStream(new GPStream(stream), ptr);
         if (status != 0)
         {
             throw SafeNativeMethods.Gdip.StatusException(status);
         }
         int[] destination = new int[1];
         Marshal.Copy(ptr, destination, 0, 1);
         MetafileType type = (MetafileType) destination[0];
         header = new MetafileHeader();
         switch (type)
         {
             case MetafileType.Wmf:
             case MetafileType.WmfPlaceable:
                 header.wmf = (MetafileHeaderWmf) UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderWmf));
                 header.emf = null;
                 return header;
         }
         header.wmf = null;
         header.emf = (MetafileHeaderEmf) UnsafeNativeMethods.PtrToStructure(ptr, typeof(MetafileHeaderEmf));
     }
     finally
     {
         Marshal.FreeHGlobal(ptr);
     }
     return header;
 }