/* WMF Metafile Structures * Author: Stefan Taferner */ #ifndef wmfstruct_h #define wmfstruct_h typedef short WORD; typedef int DWORD; typedef TQ_INT32 LONG; typedef void* _HANDLE; typedef struct _RECT { WORD left; WORD top; WORD right; WORD bottom; } RECT; typedef struct _RECTL { LONG left; LONG top; LONG right; LONG bottom; } RECTL; typedef struct _SIZE { WORD width; WORD height; } SIZE; typedef struct _SIZEL { LONG width; LONG height; } SIZEL; struct WmfEnhMetaHeader { DWORD iType; // Record type EMR_HEADER DWORD nSize; // Record size in bytes. This may be greater // than the sizeof( ENHMETAHEADER ). RECTL rclBounds; // Inclusive-inclusive bounds in device units RECTL rclFrame; // Inclusive-inclusive Picture Frame of metafile // in .01 mm units DWORD dSignature; // Signature. Must be ENHMETA_SIGNATURE. DWORD nVersion; // Version number DWORD nBytes; // Size of the metafile in bytes DWORD nRecords; // Number of records in the metafile WORD nHandles; // Number of handles in the handle table // Handle index zero is reserved. WORD sReserved; // Reserved. Must be zero. DWORD nDescription; // Number of chars in the unicode description string // This is 0 if there is no description string DWORD offDescription; // Offset to the metafile description record. // This is 0 if there is no description string DWORD nPalEntries; // Number of entries in the metafile palette. SIZEL szlDevice; // Size of the reference device in pels SIZEL szlMillimeters; // Size of the reference device in millimeters }; #define ENHMETA_SIGNATURE 0x464D4520 struct WmfMetaHeader { WORD mtType; WORD mtHeaderSize; WORD mtVersion; DWORD mtSize; WORD mtNoObjects; DWORD mtMaxRecord; WORD mtNoParameters; }; struct WmfPlaceableHeader { DWORD key; WORD hmf; RECT bbox; WORD inch; DWORD reserved; WORD checksum; }; #define APMHEADER_KEY 0x9AC6CDD7 struct WmfMetaRecord { DWORD rdSize; // Record size ( in words ) of the function WORD rdFunction; // Record function number WORD rdParm[ 1 ]; // WORD array of parameters }; struct WmfEnhMetaRecord { DWORD iType; // Record type EMR_xxx DWORD nSize; // Record size in bytes DWORD dParm[ 1 ]; // DWORD array of parameters }; #endif /*wmfstruct_h*/