00001 /* WMF Metafile Structures 00002 * Author: Stefan Taferner <taferner@kde.org> 00003 */ 00004 #ifndef wmfstruct_h 00005 #define wmfstruct_h 00006 00007 typedef short WORD; 00008 typedef int DWORD; 00009 typedef qint32 LONG; 00010 typedef void* _HANDLE; 00011 00012 typedef struct _RECT 00013 { 00014 WORD left; 00015 WORD top; 00016 WORD right; 00017 WORD bottom; 00018 } RECT; 00019 00020 typedef struct _RECTL 00021 { 00022 LONG left; 00023 LONG top; 00024 LONG right; 00025 LONG bottom; 00026 } RECTL; 00027 00028 typedef struct _SIZE 00029 { 00030 WORD width; 00031 WORD height; 00032 } SIZE; 00033 00034 typedef struct _SIZEL 00035 { 00036 LONG width; 00037 LONG height; 00038 } SIZEL; 00039 00040 00041 struct WmfEnhMetaHeader 00042 { 00043 DWORD iType; // Record type EMR_HEADER 00044 DWORD nSize; // Record size in bytes. This may be greater 00045 // than the sizeof( ENHMETAHEADER ). 00046 RECTL rclBounds; // Inclusive-inclusive bounds in device units 00047 RECTL rclFrame; // Inclusive-inclusive Picture Frame of metafile 00048 // in .01 mm units 00049 DWORD dSignature; // Signature. Must be ENHMETA_SIGNATURE. 00050 DWORD nVersion; // Version number 00051 DWORD nBytes; // Size of the metafile in bytes 00052 DWORD nRecords; // Number of records in the metafile 00053 WORD nHandles; // Number of handles in the handle table 00054 // Handle index zero is reserved. 00055 WORD sReserved; // Reserved. Must be zero. 00056 DWORD nDescription; // Number of chars in the unicode description string 00057 // This is 0 if there is no description string 00058 DWORD offDescription; // Offset to the metafile description record. 00059 // This is 0 if there is no description string 00060 DWORD nPalEntries; // Number of entries in the metafile palette. 00061 SIZEL szlDevice; // Size of the reference device in pels 00062 SIZEL szlMillimeters; // Size of the reference device in millimeters 00063 }; 00064 #define ENHMETA_SIGNATURE 0x464D4520 00065 00066 00067 struct WmfMetaHeader 00068 { 00069 WORD mtType; 00070 WORD mtHeaderSize; 00071 WORD mtVersion; 00072 DWORD mtSize; 00073 WORD mtNoObjects; 00074 DWORD mtMaxRecord; 00075 WORD mtNoParameters; 00076 }; 00077 00078 00079 struct WmfPlaceableHeader 00080 { 00081 DWORD key; 00082 WORD hmf; 00083 RECT bbox; 00084 WORD inch; 00085 DWORD reserved; 00086 WORD checksum; 00087 }; 00088 #define APMHEADER_KEY 0x9AC6CDD7 00089 00090 00091 struct WmfMetaRecord 00092 { 00093 DWORD rdSize; // Record size ( in words ) of the function 00094 WORD rdFunction; // Record function number 00095 WORD rdParm[ 1 ]; // WORD array of parameters 00096 }; 00097 00098 00099 struct WmfEnhMetaRecord 00100 { 00101 DWORD iType; // Record type EMR_xxx 00102 DWORD nSize; // Record size in bytes 00103 DWORD dParm[ 1 ]; // DWORD array of parameters 00104 }; 00105 00106 00107 #endif /*wmfstruct_h*/