1 /* 2 For general Scribus (>=1.3.2) copyright and licensing information please refer 3 to the COPYING file provided with the program. Following this notice may exist 4 a copyright and/or license notice that predates the release of Scribus 1.3.2 5 for which a new license (GPL+exception) is in place. 6 */ 7 8 /* WMF Metafile Structures 9 * Author: Stefan Taferner <taferner@kde.org> 10 */ 11 #ifndef wmfstruct_h 12 #define wmfstruct_h 13 14 typedef qint16 WORD16; 15 typedef qint32 WORD32; 16 typedef qint32 LONG32; 17 typedef void* _HANDLE; 18 19 typedef struct _RECT16 20 { 21 WORD16 left; 22 WORD16 top; 23 WORD16 right; 24 WORD16 bottom; 25 } RECT16; 26 27 typedef struct _RECT32 28 { 29 LONG32 left; 30 LONG32 top; 31 LONG32 right; 32 LONG32 bottom; 33 } RECT32; 34 35 typedef struct _SIZE16 36 { 37 WORD16 width; 38 WORD16 height; 39 } SIZE16; 40 41 typedef struct _SIZE32 42 { 43 LONG32 width; 44 LONG32 height; 45 } SIZE32; 46 47 48 struct WmfEnhMetaHeader 49 { 50 WORD32 iType; // Record type EMR_HEADER 51 WORD32 nSize; // Record SIZE16 in bytes. This may be greater 52 // than the sizeof( ENHMETAHEADER ). 53 RECT32 rclBounds; // Inclusive-inclusive bounds in device units 54 RECT32 rclFrame; // Inclusive-inclusive Picture Frame of metafile 55 // in .01 mm units 56 WORD32 dSignature; // Signature. Must be ENHMETA_SIGNATURE. 57 WORD32 nVersion; // Version number 58 WORD32 nBytes; // SIZE16 of the metafile in bytes 59 WORD32 nRecords; // Number of records in the metafile 60 WORD16 nHandles; // Number of handles in the handle table 61 // Handle index zero is reserved. 62 WORD16 sReserved; // Reserved. Must be zero. 63 WORD32 nDescription; // Number of chars in the unicode description string 64 // This is 0 if there is no description string 65 WORD32 offDescription; // Offset to the metafile description record. 66 // This is 0 if there is no description string 67 WORD32 nPalEntries; // Number of entries in the metafile palette. 68 SIZE32 szlDevice; // SIZE16 of the reference device in pels 69 SIZE32 szlMillimeters; // SIZE16 of the reference device in millimeters 70 }; 71 #define ENHMETA_SIGNATURE 0x464D4520 72 73 74 struct WmfMetaHeader 75 { 76 WORD16 mtType; 77 WORD16 mtHeaderSize; 78 WORD16 mtVersion; 79 WORD32 mtSize; 80 WORD16 mtNoObjects; 81 WORD32 mtMaxRecord; 82 WORD16 mtNoParameters; 83 }; 84 85 86 struct WmfPlaceableHeader 87 { 88 WORD32 key; 89 WORD16 hmf; 90 RECT16 bbox; 91 WORD16 inch; 92 WORD32 reserved; 93 WORD16 checksum; 94 }; 95 #define APMHEADER_KEY 0x9AC6CDD7 96 97 98 struct WmfMetaRecord 99 { 100 WORD32 rdSize; // Record SIZE16 ( in words ) of the function 101 WORD16 rdFunction; // Record function number 102 WORD16 rdParm[ 1 ]; // WORD16 array of parameters 103 }; 104 105 106 struct WmfEnhMetaRecord 107 { 108 WORD32 iType; // Record type EMR_xxx 109 WORD32 nSize; // Record SIZE16 in bytes 110 WORD32 dParm[ 1 ]; // WORD32 array of parameters 111 }; 112 113 114 #endif /*wmfstruct_h*/ 115