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