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); }
// 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); }
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); }
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); }
/// <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); }
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"); }
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; }
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; }
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"); }
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; }