|
|
1.1 root 1: /*---------------------------------
2: PATTERNS.C -- GPI Area Patterns
3: ---------------------------------*/
4:
5: #define INCL_WIN
6: #define INCL_GPI
7: #include <os2.h>
8: #include <string.h>
9:
10: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
11:
12: int main (void)
13: {
14: static CHAR szClientClass [] = "Patterns" ;
15: static ULONG flFrameFlags = FCF_TITLEBAR | FCF_SYSMENU |
16: FCF_SIZEBORDER | FCF_MINMAX |
17: FCF_SHELLPOSITION | FCF_TASKLIST ;
18: HAB hab ;
19: HMQ hmq ;
20: HWND hwndFrame, hwndClient ;
21: QMSG qmsg ;
22:
23: hab = WinInitialize (0) ;
24: hmq = WinCreateMsgQueue (hab, 0) ;
25:
26: WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ;
27:
28: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE,
29: &flFrameFlags, szClientClass, NULL,
30: 0L, NULL, 0, &hwndClient) ;
31:
32: WinSendMsg (hwndFrame, WM_SETICON,
33: WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE),
34: NULL) ;
35:
36: while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
37: WinDispatchMsg (hab, &qmsg) ;
38:
39: WinDestroyWindow (hwndFrame) ;
40: WinDestroyMsgQueue (hmq) ;
41: WinTerminate (hab) ;
42: return 0 ;
43: }
44:
45: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
46: {
47: static struct {
48: LONG lPatternSymbol ;
49: CHAR *szPatternSymbol ;
50: }
51: show [] =
52: {
53: PATSYM_DEFAULT , "PATSYM_DEFAULT" ,
54: PATSYM_DENSE1 , "PATSYM_DENSE1" ,
55: PATSYM_DENSE2 , "PATSYM_DENSE2" ,
56: PATSYM_DENSE3 , "PATSYM_DENSE3" ,
57: PATSYM_DENSE4 , "PATSYM_DENSE4" ,
58: PATSYM_DENSE5 , "PATSYM_DENSE5" ,
59: PATSYM_DENSE6 , "PATSYM_DENSE6" ,
60: PATSYM_DENSE7 , "PATSYM_DENSE7" ,
61: PATSYM_DENSE8 , "PATSYM_DENSE8" ,
62: PATSYM_VERT , "PATSYM_VERT" ,
63: PATSYM_HORIZ , "PATSYM_HORIZ" ,
64: PATSYM_DIAG1 , "PATSYM_DIAG1" ,
65: PATSYM_DIAG2 , "PATSYM_DIAG2" ,
66: PATSYM_DIAG3 , "PATSYM_DIAG3" ,
67: PATSYM_DIAG4 , "PATSYM_DIAG4" ,
68: PATSYM_NOSHADE , "PATSYM_NOSHADE" ,
69: PATSYM_SOLID , "PATSYM_SOLID" ,
70: PATSYM_HALFTONE , "PATSYM_HALFTONE" ,
71: PATSYM_BLANK , "PATSYM_BLANK" ,
72: } ;
73: static SHORT cxClient, cyClient, cxCaps, cyChar, cyDesc,
74: sNumTypes = sizeof show / sizeof show[0] ;
75: FONTMETRICS fm ;
76: HPS hps ;
77: POINTL ptl ;
78: SHORT sIndex ;
79:
80: switch (msg)
81: {
82: case WM_CREATE:
83: hps = WinGetPS (hwnd) ;
84: GpiQueryFontMetrics (hps, (LONG) sizeof fm, &fm) ;
85: cxCaps = (SHORT) fm.lEmInc ;
86: cyChar = (SHORT) fm.lMaxBaselineExt ;
87: cyDesc = (SHORT) fm.lMaxDescender ;
88: WinReleasePS (hps) ;
89: return 0 ;
90:
91: case WM_SIZE:
92: cxClient = SHORT1FROMMP (mp2) ;
93: cyClient = SHORT2FROMMP (mp2) ;
94: return 0 ;
95:
96: case WM_PAINT:
97: hps = WinBeginPaint (hwnd, NULL, NULL) ;
98: GpiErase (hps) ;
99:
100: for (sIndex = 0 ; sIndex < sNumTypes ; sIndex ++)
101: {
102: GpiSetPattern (hps, show [sIndex].lPatternSymbol) ;
103:
104: ptl.x = (sIndex < 10 ? 1 : 33) * cxCaps ;
105: ptl.y = cyClient - (sIndex % 10 * 5 + 4) * cyChar / 2
106: + cyDesc ;
107:
108: GpiCharStringAt (hps, &ptl,
109: (LONG) strlen (show [sIndex].szPatternSymbol),
110: show [sIndex].szPatternSymbol) ;
111:
112: ptl.x = (sIndex < 10 ? 20 : 52) * cxCaps ;
113: ptl.y -= cyDesc + cyChar / 2 ;
114: GpiMove (hps, &ptl) ;
115:
116: ptl.x += 10 * cxCaps ;
117: ptl.y += 2 * cyChar ;
118: GpiBox (hps, DRO_FILL, &ptl, 0L, 0L) ;
119: }
120: WinEndPaint (hps) ;
121: return 0 ;
122: }
123: return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
124: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.