|
|
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.