Metafile

The Metafile structure contains functions and structures to create and operate on metafiles. A metafile is essentially a recording of drawing operations which can be stored in a file, passed through the clipboard and replayed as needed.  There are two types of metafile: the old form represented by the HMETAFILE type and the new, enhanced metafile, represented by the HENHMETAFILE type.

structure Metafile :

  sig

    type HENHMETAFILE

    type HMETAFILE

    type HDC

    type RECT = { top: int, left: int, bottom: int, right: int }

    type SIZE = { cx: int, cy: int }

    datatype MapMode = datatype Transform.MapMode

    type METAFILEPICT = {mm: MapMode, size: SIZE, hMF: HMETAFILE}



    type ENHMETAHEADER =

        {

            bounds: RECT, frame: RECT, fileSize: int, records: int,

            handles: int, palEntries: int, resolutionPixels: SIZE,

            resolutionMM: SIZE, openGL: bool

        }



    val CloseEnhMetaFile : HDC -> HENHMETAFILE

    val CloseMetaFile : HDC -> HMETAFILE

    val CopyEnhMetaFile : HENHMETAFILE * string -> HENHMETAFILE

    val CopyMetaFile : HMETAFILE * string -> HMETAFILE

    val CreateEnhMetaFile :

       HDC * string option * RECT *

       {pictureName: string, applicationName: string} option -> HDC

    val CreateMetaFile : string option -> HDC

    val DeleteEnhMetaFile : HENHMETAFILE -> unit

    val DeleteMetaFile : HMETAFILE -> unit

    val GdiComment : HDC * Word8Vector.vector -> unit

    val GetEnhMetaFile : string -> HENHMETAFILE

    val GetEnhMetaFileBits : HENHMETAFILE -> Word8Vector.vector

    val GetEnhMetaFileDescription :

       HENHMETAFILE -> {pictureName: string, applicationName: string} option

    val GetEnhMetaFileHeader : HENHMETAFILE -> ENHMETAHEADER

    val GetMetaFile : string -> HMETAFILE

    val GetMetaFileBitsEx : HMETAFILE -> Word8Vector.vector

    val GetWinMetaFileBits :

       HENHMETAFILE * Transform.MapMode * HDC -> Word8Vector.vector

    val PlayEnhMetaFile : HDC * HENHMETAFILE * RECT -> unit

    val PlayMetaFile : HDC * HMETAFILE -> unit

    val SetEnhMetaFileBits : Word8Vector.vector -> HENHMETAFILE

    val SetMetaFileBits : Word8Vector.vector -> HMETAFILE

    val SetWinMetaFileBits :

       Word8Vector.vector * HDC * {size: SIZE, mapMode: MapMode} option -> HENHMETAFILE



  end