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