|
|
1.1 root 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
1.1.1.3 root 26: #define MAX_FRAME 800
27: #define MAX_FILE 800
28:
1.1 root 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
1.1.1.2 root 55: #define MM_LEABOUT 7024
1.1.1.3 root 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
1.1.1.4 ! root 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:
1.1 root 68:
69: #define SIZEOFCAPTIONTEXT 20
70:
71: #define ACCEL_ID 100
1.1.1.3 root 72: #define APP_ICON 100
1.1 root 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
1.1.1.2 root 98: #define DID_TMP 1018
1.1 root 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:
1.1.1.2 root 265: #define META32_SIGNATURE 0x464D4520 // ' EMF'
266: #define ALDUS_ID 0x9AC6CDD7
267:
268: typedef struct
269: {
270: DWORD key;
1.1.1.3 root 271: WORD hmf;
272: SMALL_RECT bbox;
1.1.1.2 root 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:
1.1 root 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:
1.1.1.3 root 413:
414: typedef struct _PRTDATA {
415: BOOL bFit2Wnd;
416: HENHMETAFILE hMetaf;
417: } PRTDATA, *PPRTDATA;
418:
419:
1.1 root 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;
1.1.1.3 root 427: HPALETTE ghPal = NULL;
428: HPALETTE ghHT = NULL;
1.1 root 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;
1.1.1.2 root 452: HENHMETAFILE ghMetaf = NULL;
1.1.1.3 root 453: HMETAFILE ghmf=NULL;
1.1.1.2 root 454:
1.1 root 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;
1.1.1.2 root 469:
470: HWND ghwndNext = NULL;
1.1.1.3 root 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;
1.1.1.4 ! root 496:
! 497: typedef struct tagEMRFORMAT {
! 498: DWORD dSignature;
! 499: DWORD nVersion;
! 500: DWORD cbData;
! 501: DWORD offData;
! 502: } EMRFORMAT;
! 503:
! 504: typedef struct tagCMTMLTFMT {
! 505: DWORD ident;
! 506: DWORD iComment;
! 507: RECTL rclOutput;
! 508: DWORD nFormats;
! 509: EMRFORMAT aemrformat[1];
! 510: } CMTMLTFMT;
! 511:
! 512: #define GDICOMMENT_IDENTIFIER 0x43494447
! 513: #define GDICOMMENT_MULTIFORMATS 0x40000004
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.