home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / vrac / mfedit32.zip / MFEDIT.H < prev    next >
C/C++ Source or Header  |  1994-09-04  |  18KB  |  507 lines

  1. /******************************Module*Header*******************************\
  2. * Module Name: mfedit.h
  3. *
  4. * Header file for mfedit
  5. *
  6. * Created: 28-May-1992 14:57:56
  7. * Author: Petrus Wong
  8. *
  9. * Copyright (c) 1990 Microsoft Corporation
  10. *
  11. * Contains all the definitions, global variables, structures, etc
  12. *
  13. * Dependencies:
  14. *
  15. *   metadef.h
  16. *
  17. \**************************************************************************/
  18. #include <windows.h>
  19. #include <string.h>
  20.  
  21. #define LIGHTGRAY               RGB(192, 192, 192)
  22. #define DARKGRAY                RGB(128, 128, 128)
  23. #define MAX_POINTS              256
  24. #define MAX_POINTS_MF           3
  25. #define MAX_POINTS_BMP          3
  26. #define MAX_FRAME           800
  27. #define MAX_FILE            800
  28.  
  29. //
  30. // Menu ID's
  31. //
  32. #define MM_LOAD                 7001
  33. #define MM_RECORD               7002
  34. #define MM_PRINT                7003
  35. #define MM_PAGESETUP            7004
  36. #define MM_PRINTSETUP           7005
  37. #define MM_ABOUT                7006
  38. #define MM_CUT                  7007
  39. #define MM_COPY                 7008
  40. #define MM_PASTE                7009
  41. #define MM_DEL                  7010
  42. #define MM_LOAD_BMP             7011
  43. #define MM_SAVE_BMP             7012
  44. #define MM_LOAD_MASKBMP         7013
  45. #define MM_REMOVE               7014
  46. #define MM_INSERT               7015
  47. #define MM_HITTEST              7016
  48. #define MM_REPEAT               7017
  49. #define MM_INCREASE             7018
  50. #define MM_NORMAL               7019
  51. #define MM_DECREASE             7020
  52. #define MM_PEN                  7021
  53. #define MM_BRUSH                7022
  54. #define MM_FONT                 7023
  55. #define MM_LEABOUT              7024
  56. #define MM_FIT2WND              7025
  57. #define MM_IMPORT_3X            7026
  58. #define MM_EXPORT_3X            7027
  59. #define MM_TTOUTLN_STROKEFILL   7028
  60. #define MM_TTOUTLN_POLYDRAW     7029
  61. #define MM_C_WND_MF             7030
  62. #define MM_C_BEGIN_GP           7031
  63. #define MM_C_END_GP             7032
  64. #define MM_C_MLTFMTS            7033
  65.  
  66.  
  67.  
  68.  
  69. #define SIZEOFCAPTIONTEXT    20
  70.  
  71. #define ACCEL_ID                100
  72. #define APP_ICON                 100
  73.  
  74. //
  75. // Control Panel ID's
  76. //
  77. #define OD_BTN_CNT              5
  78. #define DID_CTRLPANEL           100
  79. #define DID_ZERO                1000
  80. #define DID_ONE                 1001
  81. #define DID_TWO                 1002
  82. #define DID_THREE               1003
  83. #define DID_FOUR                1004
  84. #define DID_FIVE                1005
  85. #define DID_SIX                 1006
  86. #define DID_SEVEN               1007
  87. #define DID_EIGHT               1008
  88. #define DID_NINE                1009
  89. #define DID_TEN_PLUS            1010
  90. #define ID_OD_BTN_BASE          1011
  91. #define DID_OPEN                1011
  92. #define DID_RECORD              1012
  93. #define DID_STOP                1013
  94. #define DID_PLAY                1014
  95. #define DID_FF                  1015
  96. #define DID_CLEAR               1016
  97. #define DID_COUNTER             1017
  98. #define DID_TMP                 1018
  99.  
  100. //
  101. // Control Panel's Owner draw bitmaps
  102. //
  103. #define BMID_BASED              1011
  104. #define BMID_OPEND              1011
  105. #define BMID_RECORDD            1012
  106. #define BMID_STOPD              1013
  107. #define BMID_PLAYD              1014
  108. #define BMID_FFD                1015
  109. #define BMID_BASEU              2011
  110. #define BMID_OPENU              2011
  111. #define BMID_RECORDU            2012
  112. #define BMID_STOPU              2013
  113. #define BMID_PLAYU              2014
  114. #define BMID_FFU                2015
  115.  
  116. //
  117. // Tools ID's
  118. //
  119. #define OD_TOOL_CNT             10
  120. #define ID_OD_TOOL_BASE         3001
  121. #define DID_PEN                 3001
  122. #define DID_TEXT                3002
  123. #define DID_RECT                3003
  124. #define DID_FILLRECT            3004
  125. #define DID_ELLIPSE             3005
  126. #define DID_FILLELLIPSE         3006
  127. #define DID_LINE                3007
  128. #define DID_BEZIER              3008
  129. #define DID_BMPOBJ              3009
  130. #define DID_METAF               3010
  131.  
  132. //
  133. // Tools Owner Draw bitmaps
  134. //
  135. #define BMID_TOOLBASED          3001
  136. #define BMID_PEND               3001
  137. #define BMID_TEXTD              3002
  138. #define BMID_RECTD              3003
  139. #define BMID_FILLRECTD          3004
  140. #define BMID_ELLIPSED           3005
  141. #define BMID_FILLELLIPSED       3006
  142. #define BMID_LINED              3007
  143. #define BMID_BEZIERD            3008
  144. #define BMID_BMPOBJD            3009
  145. #define BMID_METAFD             3010
  146. #define BMID_TOOLBASEU          4001
  147. #define BMID_PENU               4001
  148. #define BMID_TEXTU              4002
  149. #define BMID_RECTU              4003
  150. #define BMID_FILLRECTU          4004
  151. #define BMID_ELLIPSEU           4005
  152. #define BMID_FILLELLIPSEU       4006
  153. #define BMID_LINEU              4007
  154. #define BMID_BEZIERU            4008
  155. #define BMID_BMPOBJU            4009
  156. #define BMID_METAFU             4010
  157.  
  158. #define MR_MIN                1
  159.  
  160. #define MR_METAFILE            1
  161. #define MR_POLYBEZIER            2
  162. #define MR_POLYGON            3
  163. #define MR_POLYLINE            4
  164. #define MR_POLYBEZIERTO            5
  165. #define MR_POLYLINETO            6
  166. #define MR_POLYPOLYLINE            7
  167. #define MR_POLYPOLYGON            8
  168. #define MR_SETWINDOWEXTEX        9
  169. #define MR_SETWINDOWORGEX        10
  170. #define MR_SETVIEWPORTEXTEX        11
  171. #define MR_SETVIEWPORTORGEX        12
  172. #define MR_SETBRUSHORGEX        13
  173. #define MR_EOF                14
  174. #define MR_SETPIXELV            15
  175. #define MR_SETMAPPERFLAGS        16
  176. #define MR_SETMAPMODE            17
  177. #define MR_SETBKMODE            18
  178. #define MR_SETPOLYFILLMODE        19
  179. #define MR_SETROP2            20
  180. #define MR_SETSTRETCHBLTMODE        21
  181. #define MR_SETTEXTALIGN            22
  182.  
  183. #define MR_SETTEXTCOLOR            24
  184. #define MR_SETBKCOLOR            25
  185. #define MR_OFFSETCLIPRGN        26
  186. #define MR_MOVETOEX            27
  187. #define MR_SETMETARGN            28
  188. #define MR_EXCLUDECLIPRECT        29
  189. #define MR_INTERSECTCLIPRECT        30
  190. #define MR_SCALEVIEWPORTEXTEX        31
  191. #define MR_SCALEWINDOWEXTEX        32
  192. #define MR_SAVEDC            33
  193. #define MR_RESTOREDC            34
  194. #define MR_SETWORLDTRANSFORM        35
  195. #define MR_MODIFYWORLDTRANSFORM        36
  196. #define MR_SELECTOBJECT            37
  197. #define MR_CREATEPEN            38
  198. #define MR_CREATEBRUSHINDIRECT        39
  199. #define MR_DELETEOBJECT            40
  200. #define MR_ANGLEARC            41
  201. #define MR_ELLIPSE            42
  202. #define MR_RECTANGLE            43
  203. #define MR_ROUNDRECT            44
  204. #define MR_ARC                45
  205. #define MR_CHORD            46
  206. #define MR_PIE                47
  207. #define MR_SELECTPALETTE        48
  208. #define MR_CREATEPALETTE        49
  209. #define MR_SETPALETTEENTRIES        50
  210. #define MR_RESIZEPALETTE        51
  211. #define MR_REALIZEPALETTE        52
  212. #define MR_EXTFLOODFILL            53
  213. #define MR_LINETO            54
  214. #define MR_ARCTO            55
  215. #define MR_POLYDRAW            56
  216. #define MR_SETARCDIRECTION        57
  217. #define MR_SETMITERLIMIT        58
  218. #define MR_BEGINPATH            59
  219. #define MR_ENDPATH            60
  220. #define MR_CLOSEFIGURE            61
  221. #define MR_FILLPATH            62
  222. #define MR_STROKEANDFILLPATH        63
  223. #define MR_STROKEPATH            64
  224. #define MR_FLATTENPATH            65
  225. #define MR_WIDENPATH            66
  226. #define MR_SELECTCLIPPATH        67
  227. #define MR_ABORTPATH            68
  228.  
  229. #define MR_GDICOMMENT            70
  230. #define MR_FILLRGN            71
  231. #define MR_FRAMERGN            72
  232. #define MR_INVERTRGN            73
  233. #define MR_PAINTRGN            74
  234. #define MR_EXTSELECTCLIPRGN        75
  235. #define MR_BITBLT            76
  236. #define MR_STRETCHBLT            77
  237. #define MR_MASKBLT            78
  238. #define MR_PLGBLT            79
  239. #define MR_SETDIBITSTODEVICE        80
  240. #define MR_STRETCHDIBITS        81
  241. #define MR_EXTCREATEFONTINDIRECTW   82
  242. #define MR_EXTTEXTOUTA           83
  243. #define MR_EXTTEXTOUTW           84
  244. #define MR_POLYBEZIER16            85
  245. #define MR_POLYGON16            86
  246. #define MR_POLYLINE16            87
  247. #define MR_POLYBEZIERTO16        88
  248. #define MR_POLYLINETO16            89
  249. #define MR_POLYPOLYLINE16        90
  250. #define MR_POLYPOLYGON16        91
  251. #define MR_POLYDRAW16            92
  252. #define MR_CREATEMONOBRUSH        93
  253. #define MR_CREATEDIBPATTERNBRUSHPT  94
  254. #define MR_EXTCREATEPEN            95
  255. #define MR_MAX                95
  256.  
  257.  
  258. //
  259. // some handy macros
  260. //
  261. #define GET_WM_CTLCOLOR_HDC(wp, lp, msg)        (HDC)(wp)
  262. #define GET_WM_CTLCOLOR_HWND(wp, lp, msg)       (HWND)(lp)
  263. #define GET_WM_CTLCOLOR_TYPE(wp, lp, msg)       (WORD)(msg - WM_CTLCOLORMSGBOX)
  264.  
  265. #define META32_SIGNATURE        0x464D4520      // ' EMF'
  266. #define ALDUS_ID        0x9AC6CDD7
  267.  
  268. typedef struct
  269.   {
  270.   DWORD   key;
  271.   WORD          hmf;
  272.   SMALL_RECT    bbox;
  273.   WORD    inch;
  274.   DWORD   reserved;
  275.   WORD    checksum;
  276.   } APMFILEHEADER;
  277. typedef APMFILEHEADER * PAPMFILEHEADER;
  278. #define APMSIZE 22
  279.  
  280.  
  281. #ifndef RC_INVOKED
  282. #pragma pack(2)
  283. typedef struct tagMETA16HEADER
  284. {
  285.     WORD    mtType;
  286.     WORD    mtHeaderSize;
  287.     WORD    mtVersion;
  288.     DWORD    mtSize;
  289.     WORD    mtNoObjects;
  290.     DWORD    mtMaxRecord;
  291.     WORD    mtNoParameters;
  292. } META16HEADER, LPMETA16HEADER;
  293. #pragma pack()
  294.  
  295. #endif // RC_INVOKED
  296.  
  297.  
  298. typedef struct _playinfo {
  299.     int iRecord;
  300.     BOOL bPlayContinuous;
  301. } PLAYINFO;
  302.  
  303. typedef struct _metalookup {
  304.     LPSTR   szGDIName;
  305.     int     iMRNumber;
  306. } METALOOKUP;
  307.  
  308. typedef struct _htdata {
  309.     POINT   point;
  310.     int     iRecord;
  311. } HTDATA;
  312.  
  313. METALOOKUP rgMetaName[] =
  314. {
  315.    { "                          ", 0                         },
  316.    { "METAFILE                  ", MR_METAFILE               },
  317.    { "POLYBEZIER                ", MR_POLYBEZIER             },
  318.    { "POLYGON                   ", MR_POLYGON                },
  319.    { "POLYLINE                  ", MR_POLYLINE               },
  320.    { "POLYBEZIERTO              ", MR_POLYBEZIERTO           },
  321.    { "POLYLINETO                ", MR_POLYLINETO             },
  322.    { "POLYPOLYLINE              ", MR_POLYPOLYLINE           },
  323.    { "POLYPOLYGON               ", MR_POLYPOLYGON            },
  324.    { "SETWINDOWEXTEX            ", MR_SETWINDOWEXTEX         },
  325.    { "SETWINDOWORGEX            ", MR_SETWINDOWORGEX         },
  326.    { "SETVIEWPORTEXTEX          ", MR_SETVIEWPORTEXTEX       },
  327.    { "SETVIEWPORTORGEX          ", MR_SETVIEWPORTORGEX       },
  328.    { "SETBRUSHORGEX             ", MR_SETBRUSHORGEX          },
  329.    { "EOF                       ", MR_EOF                    },
  330.    { "SETPIXELV                 ", MR_SETPIXELV              },
  331.    { "SETMAPPERFLAGS            ", MR_SETMAPPERFLAGS         },
  332.    { "SETMAPMODE                ", MR_SETMAPMODE             },
  333.    { "SETBKMODE                 ", MR_SETBKMODE              },
  334.    { "SETPOLYFILLMODE           ", MR_SETPOLYFILLMODE        },
  335.    { "SETROP2                   ", MR_SETROP2                },
  336.    { "SETSTRETCHBLTMODE         ", MR_SETSTRETCHBLTMODE      },
  337.    { "SETTEXTALIGN              ", MR_SETTEXTALIGN           },
  338.    { "UNKNOWN                   ", 23                        },
  339.    { "SETTEXTCOLOR              ", MR_SETTEXTCOLOR           },
  340.    { "SETBKCOLOR                ", MR_SETBKCOLOR             },
  341.    { "OFFSETCLIPRGN             ", MR_OFFSETCLIPRGN          },
  342.    { "MOVETOEX                  ", MR_MOVETOEX               },
  343.    { "SETMETARGN                ", MR_SETMETARGN             },
  344.    { "EXCLUDECLIPRECT           ", MR_EXCLUDECLIPRECT        },
  345.    { "INTERSECTCLIPRECT         ", MR_INTERSECTCLIPRECT      },
  346.    { "SCALEVIEWPORTEXTEX        ", MR_SCALEVIEWPORTEXTEX     },
  347.    { "SCALEWINDOWEXTEX          ", MR_SCALEWINDOWEXTEX       },
  348.    { "SAVEDC                    ", MR_SAVEDC                 },
  349.    { "RESTOREDC                 ", MR_RESTOREDC              },
  350.    { "SETWORLDTRANSFORM         ", MR_SETWORLDTRANSFORM      },
  351.    { "MODIFYWORLDTRANSFORM      ", MR_MODIFYWORLDTRANSFORM   },
  352.    { "SELECTOBJECT              ", MR_SELECTOBJECT           },
  353.    { "CREATEPEN                 ", MR_CREATEPEN              },
  354.    { "CREATEBRUSHINDIRECT       ", MR_CREATEBRUSHINDIRECT    },
  355.    { "DELETEOBJECT              ", MR_DELETEOBJECT           },
  356.    { "ANGLEARC                  ", MR_ANGLEARC               },
  357.    { "ELLIPSE                   ", MR_ELLIPSE                },
  358.    { "RECTANGLE                 ", MR_RECTANGLE              },
  359.    { "ROUNDRECT                 ", MR_ROUNDRECT              },
  360.    { "ARC                       ", MR_ARC                    },
  361.    { "CHORD                     ", MR_CHORD                  },
  362.    { "PIE                       ", MR_PIE                    },
  363.    { "SELECTPALETTE             ", MR_SELECTPALETTE          },
  364.    { "CREATEPALETTE             ", MR_CREATEPALETTE          },
  365.    { "SETPALETTEENTRIES         ", MR_SETPALETTEENTRIES      },
  366.    { "RESIZEPALETTE             ", MR_RESIZEPALETTE          },
  367.    { "REALIZEPALETTE            ", MR_REALIZEPALETTE         },
  368.    { "EXTFLOODFILL              ", MR_EXTFLOODFILL           },
  369.    { "LINETO                    ", MR_LINETO                 },
  370.    { "ARCTO                     ", MR_ARCTO                  },
  371.    { "POLYDRAW                  ", MR_POLYDRAW               },
  372.    { "SETARCDIRECTION           ", MR_SETARCDIRECTION        },
  373.    { "SETMITERLIMIT             ", MR_SETMITERLIMIT          },
  374.    { "BEGINPATH                 ", MR_BEGINPATH              },
  375.    { "ENDPATH                   ", MR_ENDPATH                },
  376.    { "CLOSEFIGURE               ", MR_CLOSEFIGURE            },
  377.    { "FILLPATH                  ", MR_FILLPATH               },
  378.    { "STROKEANDFILLPATH         ", MR_STROKEANDFILLPATH      },
  379.    { "STROKEPATH                ", MR_STROKEPATH             },
  380.    { "FLATTENPATH               ", MR_FLATTENPATH            },
  381.    { "WIDENPATH                 ", MR_WIDENPATH              },
  382.    { "SELECTCLIPPATH            ", MR_SELECTCLIPPATH         },
  383.    { "ABORTPATH                 ", MR_ABORTPATH              },
  384.    { "UNKNOWN                   ", 69                        },
  385.    { "GDICOMMENT                ", MR_GDICOMMENT             },
  386.    { "FILLRGN                   ", MR_FILLRGN                },
  387.    { "FRAMERGN                  ", MR_FRAMERGN               },
  388.    { "INVERTRGN                 ", MR_INVERTRGN              },
  389.    { "PAINTRGN                  ", MR_PAINTRGN               },
  390.    { "EXTSELECTCLIPRGN          ", MR_EXTSELECTCLIPRGN       },
  391.    { "BITBLT                    ", MR_BITBLT                 },
  392.    { "STRETCHBLT                ", MR_STRETCHBLT             },
  393.    { "MASKBLT                   ", MR_MASKBLT                },
  394.    { "PLGBLT                    ", MR_PLGBLT                 },
  395.    { "SETDIBITSTODEVICE         ", MR_SETDIBITSTODEVICE      },
  396.    { "STRETCHDIBITS             ", MR_STRETCHDIBITS          },
  397.    { "EXTCREATEFONTINDIRECTW    ", MR_EXTCREATEFONTINDIRECTW },
  398.    { "EXTTEXTOUTA               ", MR_EXTTEXTOUTA            },
  399.    { "EXTTEXTOUTW               ", MR_EXTTEXTOUTW            },
  400.    { "POLYBEZIER16              ", MR_POLYBEZIER16           },
  401.    { "POLYGON16                 ", MR_POLYGON16              },
  402.    { "POLYLINE16                ", MR_POLYLINE16             },
  403.    { "POLYBEZIERTO16            ", MR_POLYBEZIERTO16         },
  404.    { "POLYLINETO16              ", MR_POLYLINETO16           },
  405.    { "POLYPOLYLINE16            ", MR_POLYPOLYLINE16         },
  406.    { "POLYPOLYGON16             ", MR_POLYPOLYGON16          },
  407.    { "POLYDRAW16                ", MR_POLYDRAW16             },
  408.    { "CREATEMONOBRUSH           ", MR_CREATEMONOBRUSH        },
  409.    { "CREATEDIBPATTERNBRUSHPT   ", MR_CREATEDIBPATTERNBRUSHPT},
  410.    { "EXTCREATEPEN              ", MR_EXTCREATEPEN           },
  411.    };
  412.  
  413.  
  414. typedef struct _PRTDATA {
  415.     BOOL            bFit2Wnd;
  416.     HENHMETAFILE    hMetaf;
  417. } PRTDATA, *PPRTDATA;
  418.  
  419.  
  420. HANDLE  ghModule;
  421. HWND    ghwndMain   = NULL;
  422. HWND    ghwndClient = NULL;
  423. HWND    ghwndDrawSurf = NULL;
  424. HWND    ghwndCtrlPanel = NULL;
  425. HWND    ghwndTools = NULL;
  426. HWND    ghTextWnd = NULL;
  427. HPALETTE ghPal = NULL;
  428. HPALETTE ghHT = NULL;
  429.  
  430. LONG    glcyStatus;
  431. BOOL    gbRecording = FALSE;
  432. BOOL    gbHitTest = FALSE;
  433.  
  434. #if 0   // STRICT doesn't like this
  435. HWND    grHwndCtrlBtn[OD_BTN_CNT];
  436. HWND    grHwndToolBtn[OD_TOOL_CNT];
  437. #endif
  438. PVOID   grHwndCtrlBtn[OD_BTN_CNT];
  439. PVOID   grHwndToolBtn[OD_TOOL_CNT];
  440.  
  441. DWORD   gdwCurCtrl = DID_STOP;
  442. DWORD   gdwCurTool = DID_PEN;
  443.  
  444. HFONT    ghCurFont;
  445. LOGFONT  glf;
  446. COLORREF gCrText=0;                         // Black
  447.  
  448. HMENU   hMenu,      hMenuWindow;
  449. HMENU   hChildMenu, hChildMenuWindow;
  450. HDC     ghDCMem;
  451. HDC     ghDCMetaf = (HDC) NULL;
  452. HENHMETAFILE ghMetaf = NULL;
  453. HMETAFILE ghmf=NULL;
  454.  
  455. HBITMAP ghBmp = NULL, ghBmpMask = NULL;
  456.  
  457. #if 0   // STRICT doesn't like this
  458. HBITMAP ghBmpDn[OD_BTN_CNT], ghBmpUp[OD_BTN_CNT];
  459. HBITMAP ghToolBmpDn[OD_TOOL_CNT], ghToolBmpUp[OD_TOOL_CNT];
  460. #endif
  461. PVOID   ghBmpDn[OD_BTN_CNT], ghBmpUp[OD_BTN_CNT];
  462. PVOID   ghToolBmpDn[OD_TOOL_CNT], ghToolBmpUp[OD_TOOL_CNT];
  463.  
  464. HBRUSH  ghbrRed;
  465. HBRUSH  ghbrCur;
  466. HPEN    ghpnCur;
  467. HBRUSH  ghbrAppBkgd;
  468. HPEN    ghpnWide;
  469.  
  470. HWND    ghwndNext = NULL;
  471. BOOL    gbFit2Wnd = TRUE;
  472. BOOL    gbImport3X = FALSE;
  473. BOOL    gbExport3X = FALSE;
  474. BOOL    gbSFOutln = FALSE;
  475. BOOL    gbPDOutln = FALSE;
  476. BOOL    gbTT = FALSE;
  477.  
  478. BOOL    gbUseDIB = FALSE;
  479.  
  480. typedef struct _FileInfo{
  481.     HANDLE      hFile;
  482.     HANDLE      hMapFile;
  483.     LPVOID      lpvMapView;
  484. } FILEINFO, *PFILEINFO;
  485.  
  486. typedef struct _DIBDATA{
  487.     ULONG           ulFiles;
  488.     ULONG           ulFrames;
  489.     FILEINFO        rgFileInfo[MAX_FILE];
  490.     PBYTE           rgpjFrame[MAX_FRAME];
  491.     PBITMAPINFO     rgpbmi[MAX_FILE];
  492.     BOOL            rgbCoreHdr[MAX_FILE];
  493. } DIBDATA, *PDIBDATA;
  494.  
  495. DIBDATA gDib;
  496.  
  497. typedef struct tagCMTMLTFMT {
  498.     DWORD       ident;
  499.     DWORD       iComment;
  500.     RECTL       rclOutput;
  501.     DWORD       nFormats;
  502.     EMRFORMAT   aemrformat[1];
  503. } CMTMLTFMT;
  504.  
  505. #define GDICOMMENT_IDENTIFIER   0x43494447
  506. #define GDICOMMENT_MULTIFORMATS 0x40000004
  507.