|
|
1.1 root 1: /******************************Module*Header*******************************\
2: * Module Name: pattern.c
3: *
4: * Used for creating and destroying the default patterns to be used on this
5: * device.
6: *
7: * Copyright (c) 1992 Microsoft Corporation
8: \**************************************************************************/
9:
10: #include "driver.h"
11:
12: /******************************Public*Data*Struct*************************\
13: * gaajPat
14: *
15: * These are the standard patterns defined Windows, they are used to produce
16: * hatch brushes, grey brushes etc.
17: *
18: \**************************************************************************/
19:
20: const ULONG gaaulPat[HS_DDI_MAX][8] = {
21:
22: // Scans have to be DWORD aligned:
23:
24: { 0x00, // ........ HS_HORIZONTAL 0
25: 0x00, // ........
26: 0x00, // ........
27: 0xff, // ********
28: 0x00, // ........
29: 0x00, // ........
30: 0x00, // ........
31: 0x00 }, // ........
32:
33: { 0x08, // ....*... HS_VERTICAL 1
34: 0x08, // ....*...
35: 0x08, // ....*...
36: 0x08, // ....*...
37: 0x08, // ....*...
38: 0x08, // ....*...
39: 0x08, // ....*...
40: 0x08 }, // ....*...
41:
42: { 0x80, // *....... HS_FDIAGONAL 2
43: 0x40, // .*......
44: 0x20, // ..*.....
45: 0x10, // ...*....
46: 0x08, // ....*...
47: 0x04, // .....*..
48: 0x02, // ......*.
49: 0x01 }, // .......*
50:
51: { 0x01, // .......* HS_BDIAGONAL 3
52: 0x02, // ......*.
53: 0x04, // .....*..
54: 0x08, // ....*...
55: 0x10, // ...*....
56: 0x20, // ..*.....
57: 0x40, // .*......
58: 0x80 }, // *.......
59:
60: { 0x08, // ....*... HS_CROSS 4
61: 0x08, // ....*...
62: 0x08, // ....*...
63: 0xff, // ********
64: 0x08, // ....*...
65: 0x08, // ....*...
66: 0x08, // ....*...
67: 0x08 }, // ....*...
68:
69: { 0x81, // *......* HS_DIAGCROSS 5
70: 0x42, // .*....*.
71: 0x24, // ..*..*..
72: 0x18, // ...**...
73: 0x18, // ...**...
74: 0x24, // ..*..*..
75: 0x42, // .*....*.
76: 0x81 }, // *......*
77:
78: { 0x81, // *......* HS_FDIAGONAL1 6
79: 0x60, // .**.....
80: 0x18, // ...**...
81: 0x06, // .....**.
82: 0x81, // *......*
83: 0x60, // .**.....
84: 0x18, // ...**...
85: 0x06 }, // .....**.
86:
87: { 0x81, // *......* HS_BDIAGONAL1 7
88: 0x06, // .....**.
89: 0x18, // ...**...
90: 0x60, // .**.....
91: 0x81, // *......*
92: 0x06, // .....**.
93: 0x18, // ...**...
94: 0x60 }, // .**.....
95:
96: { 0xFF, // ******** HS_SOLID 8
97: 0xFF, // ********
98: 0xFF, // ********
99: 0xFF, // ********
100: 0xFF, // ********
101: 0xFF, // ********
102: 0xFF, // ********
103: 0xFF }, // ********
104:
105: { 0x38, // ..***... HS_DENSE1 9
106: 0x7c, // .*****..
107: 0x7c, // .*****..
108: 0x38, // ..***...
109: 0x83, // *.....**
110: 0xc7, // **...***
111: 0xc7, // **...***
112: 0x83 }, // *.....**
113:
114: { 0x38, // ..***... HS_DENSE2 10
115: 0x6c, // .**.**..
116: 0x54, // .*.*.*..
117: 0x38, // ..***...
118: 0x83, // *.....**
119: 0xc6, // **...**.
120: 0x45, // .*...*.*
121: 0x83 }, // *.....**
122:
123: { 0x18, // ...**... HS_DENSE3 11
124: 0x3c, // ..****..
125: 0x34, // ..**.*..
126: 0x18, // ...**...
127: 0x81, // *......*
128: 0xc3, // **....**
129: 0x43, // .*....**
130: 0x81 }, // *......*
131:
132: { 0x18, // ...**... HS_DENSE4 12
133: 0x2c, // ..*.**..
134: 0x24, // ..*..*..
135: 0x18, // ...**...
136: 0x81, // *......*
137: 0xc1, // **....*.
138: 0x42, // .*....*.
139: 0x81 }, // *......*
140:
141: { 0x10, // ...*.... HS_DENSE5 13
142: 0x38, // ..***...
143: 0x28, // ..*.*...
144: 0x10, // ...*....
145: 0x01, // .......*
146: 0x83, // *.....**
147: 0x82, // *.....*.
148: 0x01 }, // .......*
149:
150: { 0x00, // ........ HS_DENSE6 14
151: 0x10, // ...*....
152: 0x38, // ..***...
153: 0x10, // ...*....
154: 0x00, // ........
155: 0x01, // .......*
156: 0x83, // *.....**
157: 0x01 }, // .......*
158:
159: { 0x00, // ........ HS_DENSE7 15
160: 0x10, // ...*....
161: 0x30, // ..**....
162: 0x00, // ........
163: 0x00, // ........
164: 0x01, // .......*
165: 0x03, // ......**
166: 0x00 }, // ........
167:
168: { 0x00, // ........ HS_DENSE8 16
169: 0x00, // ........
170: 0x20, // ..*.....
171: 0x00, // ........
172: 0x00, // ........
173: 0x00, // ........
174: 0x02, // ......*.
175: 0x00 }, // ........
176:
177: { 0x00, // ........ HS_NOSHADE 17
178: 0x00, // ........
179: 0x00, // ........
180: 0x00, // ........
181: 0x00, // ........
182: 0x00, // ........
183: 0x00, // ........
184: 0x00 }, // ........
185:
186: { 0xAA, // *.*.*.*. HS_HALFTONE 18
187: 0x55, // .*.*.*.*
188: 0xAA, // *.*.*.*.
189: 0x55, // .*.*.*.*
190: 0xAA, // *.*.*.*.
191: 0x55, // .*.*.*.*
192: 0xAA, // *.*.*.*.
193: 0x55 } // .*.*.*.*
194: };
195:
196: // Same pattern, repeated in planar format:
197:
198: const ULONG gaaulPlanarPat[HS_DDI_MAX][8] = {
199: { 0x0000, // ........ HS_HORIZONTAL 0
200: 0x0000, // ........
201: 0x0000, // ........
202: 0xffff, // ********
203: 0x0000, // ........
204: 0x0000, // ........
205: 0x0000, // ........
206: 0x0000 }, // ........
207:
208: { 0x0110, // ....*... HS_VERTICAL 1
209: 0x0110, // ....*...
210: 0x0110, // ....*...
211: 0x0110, // ....*...
212: 0x0110, // ....*...
213: 0x0110, // ....*...
214: 0x0110, // ....*...
215: 0x0110 }, // ....*...
216:
217: { 0x1001, // *....... HS_FDIAGONAL 2
218: 0x2002, // .*......
219: 0x4004, // ..*.....
220: 0x8008, // ...*....
221: 0x0110, // ....*...
222: 0x0220, // .....*..
223: 0x0440, // ......*.
224: 0x0880 }, // .......*
225:
226: { 0x0880, // .......* HS_BDIAGONAL 3
227: 0x0440, // ......*.
228: 0x0220, // .....*..
229: 0x0110, // ....*...
230: 0x8008, // ...*....
231: 0x4004, // ..*.....
232: 0x2002, // .*......
233: 0x1001 }, // *.......
234:
235: { 0x0110, // ....*... HS_CROSS 4
236: 0x0110, // ....*...
237: 0x0110, // ....*...
238: 0xffff, // ********
239: 0x0110, // ....*...
240: 0x0110, // ....*...
241: 0x0110, // ....*...
242: 0x0110 }, // ....*...
243:
244: { 0x1881, // *......* HS_DIAGCROSS 5
245: 0x2442, // .*....*.
246: 0x4224, // ..*..*..
247: 0x8118, // ...**...
248: 0x8118, // ...**...
249: 0x4224, // ..*..*..
250: 0x2442, // .*....*.
251: 0x1881 }, // *......*
252:
253: { 0x1881, // *......* HS_FDIAGONAL1 6
254: 0x6006, // .**.....
255: 0x8118, // ...**...
256: 0x0660, // .....**.
257: 0x1881, // *......*
258: 0x6006, // .**.....
259: 0x8118, // ...**...
260: 0x0660 }, // .....**.
261:
262: { 0x1881, // *......* HS_BDIAGONAL1 7
263: 0x0660, // .....**.
264: 0x8118, // ...**...
265: 0x6006, // .**.....
266: 0x1881, // *......*
267: 0x0660, // .....**.
268: 0x8118, // ...**...
269: 0x6006 }, // .**.....
270:
271: { 0xffff, // ******** HS_SOLID 8
272: 0xffff, // ********
273: 0xffff, // ********
274: 0xffff, // ********
275: 0xffff, // ********
276: 0xffff, // ********
277: 0xffff, // ********
278: 0xffff }, // ********
279:
280: { 0xc11c, // ..***... HS_DENSE1 9
281: 0xe33e, // .*****..
282: 0xe33e, // .*****..
283: 0xc11c, // ..***...
284: 0x1cc1, // *.....**
285: 0x3ee3, // **...***
286: 0x3ee3, // **...***
287: 0x1cc1 }, // *.....**
288:
289: { 0xc11c, // ..***... HS_DENSE2 10
290: 0x6336, // .**.**..
291: 0xa22a, // .*.*.*..
292: 0xc11c, // ..***...
293: 0x1cc1, // *.....**
294: 0x3663, // **...**.
295: 0x2aa2, // .*...*.*
296: 0x1cc1 }, // *.....**
297:
298: { 0x8118, // ...**... HS_DENSE3 11
299: 0xc33c, // ..****..
300: 0xc22c, // ..**.*..
301: 0x8118, // ...**...
302: 0x1881, // *......*
303: 0x3cc3, // **....**
304: 0x2cc2, // .*....**
305: 0x1881 }, // *......*
306:
307: { 0x8118, // ...**... HS_DENSE4 12
308: 0x4334, // ..*.**..
309: 0x4224, // ..*..*..
310: 0x8118, // ...**...
311: 0x1881, // *......*
312: 0x3883, // **....*.
313: 0x2442, // .*....*.
314: 0x1881 }, // *......*
315:
316: { 0x8008, // ...*.... HS_DENSE5 13
317: 0xc11c, // ..***...
318: 0x4114, // ..*.*...
319: 0x8008, // ...*....
320: 0x0880, // .......*
321: 0x1cc1, // *.....**
322: 0x1441, // *.....*.
323: 0x0880 }, // .......*
324:
325: { 0x0000, // ........ HS_DENSE6 14
326: 0x8008, // ...*....
327: 0xc11c, // ..***...
328: 0x8008, // ...*....
329: 0x0000, // ........
330: 0x0880, // .......*
331: 0x1cc1, // *.....**
332: 0x0880 }, // .......*
333:
334: { 0x0000, // ........ HS_DENSE7 15
335: 0x8008, // ...*....
336: 0xc00c, // ..**....
337: 0x0000, // ........
338: 0x0000, // ........
339: 0x0880, // .......*
340: 0x0cc0, // ......**
341: 0x0000 }, // ........
342:
343: { 0x0000, // ........ HS_DENSE8 16
344: 0x0000, // ........
345: 0x4004, // ..*.....
346: 0x0000, // ........
347: 0x0000, // ........
348: 0x0000, // ........
349: 0x0440, // ......*.
350: 0x0000 }, // ........
351:
352: { 0x0000, // ........ HS_NOSHADE 17
353: 0x0000, // ........
354: 0x0000, // ........
355: 0x0000, // ........
356: 0x0000, // ........
357: 0x0000, // ........
358: 0x0000, // ........
359: 0x0000 }, // ........
360:
361: { 0x5555, // *.*.*.*. HS_HALFTONE 18
362: 0xaaaa, // .*.*.*.*
363: 0x5555, // *.*.*.*.
364: 0xaaaa, // .*.*.*.*
365: 0x5555, // *.*.*.*.
366: 0xaaaa, // .*.*.*.*
367: 0x5555, // *.*.*.*.
368: 0xaaaa } // .*.*.*.*
369: };
370:
371:
372: /******************************Public*Routine******************************\
373: * bInitPatterns
374: *
375: * This routine initializes the default patterns.
376: *
377: \**************************************************************************/
378:
379: BOOL bInitPatterns(IN PPDEV ppdev, INT cPatterns)
380: {
381: SIZEL sizl;
382: INT iLoop;
383:
384: sizl.cx = 8;
385: sizl.cy = 8;
386:
387: for (iLoop = 0; iLoop < cPatterns; iLoop++)
388: {
389: ppdev->ahbmPat[iLoop] = EngCreateBitmap(sizl,
390: 4, // DWORD aligned
391: BMF_1BPP,
392: BMF_TOPDOWN,
393: (PULONG) &gaaulPat[iLoop][0]);
394:
395: if (ppdev->ahbmPat[iLoop] == (HBITMAP) 0)
396: {
397: // Set the count created so vDisablePatterns will clean up.
398:
399: ppdev->cPatterns = iLoop;
400: return(FALSE);
401: }
402: }
403:
404: ppdev->cPatterns = cPatterns;
405: return(TRUE);
406: }
407:
408: /******************************Public*Routine******************************\
409: * vDisablePatterns
410: *
411: * Delete the standard patterns allocated.
412: *
413: \**************************************************************************/
414:
415: VOID vDisablePatterns(IN PPDEV ppdev)
416: {
417: ULONG ulIndex;
418:
419: // Erase all patterns.
420:
421: for (ulIndex = 0; ulIndex < ppdev->cPatterns; ulIndex++)
422: {
423: EngDeleteSurface((HSURF) ppdev->ahbmPat[ulIndex]);
424: }
425: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.