+ [StructLayout(LayoutKind.Sequential, Pack=2)]
+ struct EnhMetafileHeader {
+ public int type;
+ public int size;
+ public Rectangle bounds;
+ public Rectangle frame;
+ public int signature;
+ public int version;
+ public int bytes;
+ public int records;
+ public short handles;
+ public short reserved;
+ public int description;
+ public int off_description;
+ public int palette_entires;
+ public Size device;
+ public Size millimeters;
+ }
+
+ // hack: keep public type as Sequential while making it possible to get the required union
+ [StructLayout(LayoutKind.Explicit)]
+ struct MonoMetafileHeader {
+ [FieldOffset (0)]
+ public MetafileType type;
+ [FieldOffset (4)]
+ public int size;
+ [FieldOffset (8)]
+ public int version;
+ [FieldOffset (12)]
+ public int emf_plus_flags;
+ [FieldOffset (16)]
+ public float dpi_x;
+ [FieldOffset (20)]
+ public float dpi_y;
+ [FieldOffset (24)]
+ public int x;
+ [FieldOffset (28)]
+ public int y;
+ [FieldOffset (32)]
+ public int width;
+ [FieldOffset (36)]
+ public int height;
+ [FieldOffset (40)]
+ public WmfMetaHeader wmf_header;
+ [FieldOffset (40)]
+ public EnhMetafileHeader emf_header;
+ [FieldOffset (128)]
+ public int emfplus_header_size;
+ [FieldOffset (132)]
+ public int logical_dpi_x;
+ [FieldOffset (136)]
+ public int logical_dpi_y;
+ }
+
+ [MonoTODO ("Metafiles, both WMF and EMF formats, aren't supported.")]