|
|
1.1 ! root 1: /******************************Module*Header*******************************\ ! 2: * Module Name: gdiinfo.c ! 3: * ! 4: * This contains the static data structures in the VGA driver. ! 5: * ! 6: * Copyright (c) 1992 Microsoft Corporation ! 7: \**************************************************************************/ ! 8: ! 9: ! 10: #include "driver.h" ! 11: ! 12: ! 13: /******************************Public*Data*Struct*************************\ ! 14: * This contains the GDIINFO structure that contains the device capabilities ! 15: * which are passed to the NT GDI engine during dhpdevEnablePDEV. ! 16: * ! 17: \**************************************************************************/ ! 18: ! 19: GDIINFO gaulCap = { ! 20: ! 21: 0x1000, // ulVersion (our driver is version 1.000) ! 22: DT_RASDISPLAY, // ulTechnology ! 23: 240, // ulHorzSize ! 24: 180, // ulVertSize ! 25: 0, // ulHorzRes (filled in at initialization) ! 26: 0, // ulVertRes (filled in at initialization) ! 27: 4, // cBitsPixel ! 28: 1, // cPlanes ! 29: 16, // ulNumColors ! 30: 0, // flRaster (DDI reserved field) ! 31: ! 32: 0, // ulLogPixelsX (filled in at initialization) ! 33: 0, // ulLogPixelsY (filled in at initialization) ! 34: ! 35: TC_RA_ABLE | TC_SCROLLBLT, // flTextCaps ! 36: ! 37: 6, // ulDACRed ! 38: 6, // ulDACGree ! 39: 6, // ulDACBlue ! 40: ! 41: 0x0024, // ulAspectX (one-to-one aspect ratio) ! 42: 0x0024, // ulAspectY ! 43: 0x0033, // ulAspectXY ! 44: ! 45: 1, // xStyleStep ! 46: 1, // yStyleSte; ! 47: 3, // denStyleStep ! 48: ! 49: { 0, 0 }, // ptlPhysOffset ! 50: { 0, 0 }, // szlPhysSize ! 51: ! 52: 0, // ulNumPalReg (win3.1 16 color drivers say 0 too) ! 53: ! 54: // These fields are for halftone initialization. ! 55: ! 56: { // ciDevice, ColorInfo ! 57: { 6700, 3300, 0 }, // Red ! 58: { 2100, 7100, 0 }, // Green ! 59: { 1400, 800, 0 }, // Blue ! 60: { 1750, 3950, 0 }, // Cyan ! 61: { 4050, 2050, 0 }, // Magenta ! 62: { 4400, 5200, 0 }, // Yellow ! 63: { 3127, 3290, 0 }, // AlignmentWhite ! 64: 20000, // RedGamma ! 65: 20000, // GreenGamma ! 66: 20000, // BlueGamma ! 67: 0, 0, 0, 0, 0, 0 ! 68: }, ! 69: ! 70: 0, // ulDevicePelsDPI (filled in at initialization) ! 71: PRIMARY_ORDER_CBA, // ulPrimaryOrder ! 72: HT_PATSIZE_4x4_M, // ulHTPatternSize ! 73: HT_FORMAT_4BPP_IRGB, // ulHTOutputFormat ! 74: HT_FLAG_ADDITIVE_PRIMS // flHTFlags ! 75: ! 76: }; ! 77: ! 78: /******************************Public*Data*Struct*************************\ ! 79: * LOGPALETTE ! 80: * ! 81: * This is the palette for the VGA. ! 82: * ! 83: \**************************************************************************/ ! 84: ! 85: // Little bit of hacking to get this to compile happily. ! 86: ! 87: typedef struct _VGALOGPALETTE ! 88: { ! 89: USHORT ident; ! 90: USHORT NumEntries; ! 91: PALETTEENTRY palPalEntry[16]; ! 92: } VGALOGPALETTE; ! 93: ! 94: const VGALOGPALETTE logPalVGA = ! 95: { ! 96: ! 97: 0x400, // driver version ! 98: 16, // num entries ! 99: { ! 100: { 0, 0, 0, 0 }, // 0 ! 101: { 0x80,0, 0, 0 }, // 1 ! 102: { 0, 0x80,0, 0 }, // 2 ! 103: { 0x80,0x80,0, 0 }, // 3 ! 104: { 0, 0, 0x80,0 }, // 4 ! 105: { 0x80,0, 0x80,0 }, // 5 ! 106: { 0, 0x80,0x80,0 }, // 6 ! 107: { 0x80,0x80,0x80,0 }, // 7 ! 108: ! 109: { 0xC0,0xC0,0xC0,0 }, // 8 ! 110: { 0xFF,0, 0, 0 }, // 9 ! 111: { 0, 0xFF,0, 0 }, // 10 ! 112: { 0xFF,0xFF,0, 0 }, // 11 ! 113: { 0, 0, 0xFF,0 }, // 12 ! 114: { 0xFF,0, 0xFF,0 }, // 13 ! 115: { 0, 0xFF,0xFF,0 }, // 14 ! 116: { 0xFF,0xFF,0xFF,0 } // 15 ! 117: } ! 118: }; ! 119: ! 120: ! 121: /******************************Public*Routine******************************\ ! 122: * DEVINFO ! 123: * ! 124: * This is the devinfo structure passed back to the engine in DrvEnablePDEV ! 125: * ! 126: \**************************************************************************/ ! 127: ! 128: #define SYSTM_LOGFONT {16,7,0,0,700,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH | FF_DONTCARE,L"System"} ! 129: #define HELVE_LOGFONT {12,9,0,0,400,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_STROKE_PRECIS,PROOF_QUALITY,VARIABLE_PITCH | FF_DONTCARE, L"MS Sans Serif"} ! 130: #define COURI_LOGFONT {12,9,0,0,400,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_STROKE_PRECIS,PROOF_QUALITY,FIXED_PITCH | FF_DONTCARE, L"Courier"} ! 131: ! 132: DEVINFO devinfoVGA = ! 133: { ! 134: (GCAPS_OPAQUERECT | GCAPS_HORIZSTRIKE | GCAPS_ALTERNATEFILL | GCAPS_MONO_DITHER | GCAPS_COLOR_DITHER | ! 135: GCAPS_WINDINGFILL | GCAPS_TRAPPAINT), // Graphics capabilities ! 136: SYSTM_LOGFONT, // Default font description ! 137: HELVE_LOGFONT, // ANSI variable font description ! 138: COURI_LOGFONT, // ANSI fixed font description ! 139: 0, // Count of device fonts ! 140: BMF_4BPP, // preferred DIB format ! 141: 8, // Width of color dither ! 142: 8, // Height of color dither ! 143: 0 // Default palette to use for this device ! 144: }; ! 145: ! 146: /******************************Public*Data*Struct*************************\ ! 147: * gaajPat ! 148: * ! 149: * These are the standard patterns defined Windows, they are used to produce ! 150: * hatch brushes, grey brushes etc. ! 151: * ! 152: \**************************************************************************/ ! 153: ! 154: BYTE gaajPat[HS_DDI_MAX][32] = { ! 155: ! 156: { 0x00,0x00,0x00,0x00, // ........ HS_HORIZONTAL 0 ! 157: 0x00,0x00,0x00,0x00, // ........ ! 158: 0x00,0x00,0x00,0x00, // ........ ! 159: 0xff,0x00,0x00,0x00, // ******** ! 160: 0x00,0x00,0x00,0x00, // ........ ! 161: 0x00,0x00,0x00,0x00, // ........ ! 162: 0x00,0x00,0x00,0x00, // ........ ! 163: 0x00,0x00,0x00,0x00 }, // ........ ! 164: ! 165: { 0x08,0x00,0x00,0x00, // ....*... HS_VERTICAL 1 ! 166: 0x08,0x00,0x00,0x00, // ....*... ! 167: 0x08,0x00,0x00,0x00, // ....*... ! 168: 0x08,0x00,0x00,0x00, // ....*... ! 169: 0x08,0x00,0x00,0x00, // ....*... ! 170: 0x08,0x00,0x00,0x00, // ....*... ! 171: 0x08,0x00,0x00,0x00, // ....*... ! 172: 0x08,0x00,0x00,0x00 }, // ....*... ! 173: ! 174: { 0x80,0x00,0x00,0x00, // *....... HS_FDIAGONAL 2 ! 175: 0x40,0x00,0x00,0x00, // .*...... ! 176: 0x20,0x00,0x00,0x00, // ..*..... ! 177: 0x10,0x00,0x00,0x00, // ...*.... ! 178: 0x08,0x00,0x00,0x00, // ....*... ! 179: 0x04,0x00,0x00,0x00, // .....*.. ! 180: 0x02,0x00,0x00,0x00, // ......*. ! 181: 0x01,0x00,0x00,0x00 }, // .......* ! 182: ! 183: { 0x01,0x00,0x00,0x00, // .......* HS_BDIAGONAL 3 ! 184: 0x02,0x00,0x00,0x00, // ......*. ! 185: 0x04,0x00,0x00,0x00, // .....*.. ! 186: 0x08,0x00,0x00,0x00, // ....*... ! 187: 0x10,0x00,0x00,0x00, // ...*.... ! 188: 0x20,0x00,0x00,0x00, // ..*..... ! 189: 0x40,0x00,0x00,0x00, // .*...... ! 190: 0x80,0x00,0x00,0x00 }, // *....... ! 191: ! 192: { 0x08,0x00,0x00,0x00, // ....*... HS_CROSS 4 ! 193: 0x08,0x00,0x00,0x00, // ....*... ! 194: 0x08,0x00,0x00,0x00, // ....*... ! 195: 0xff,0x00,0x00,0x00, // ******** ! 196: 0x08,0x00,0x00,0x00, // ....*... ! 197: 0x08,0x00,0x00,0x00, // ....*... ! 198: 0x08,0x00,0x00,0x00, // ....*... ! 199: 0x08,0x00,0x00,0x00 }, // ....*... ! 200: ! 201: { 0x81,0x00,0x00,0x00, // *......* HS_DIAGCROSS 5 ! 202: 0x42,0x00,0x00,0x00, // .*....*. ! 203: 0x24,0x00,0x00,0x00, // ..*..*.. ! 204: 0x18,0x00,0x00,0x00, // ...**... ! 205: 0x18,0x00,0x00,0x00, // ...**... ! 206: 0x24,0x00,0x00,0x00, // ..*..*.. ! 207: 0x42,0x00,0x00,0x00, // .*....*. ! 208: 0x81,0x00,0x00,0x00 }, // *......* ! 209: ! 210: { 0x81,0x00,0x00,0x00, // *......* HS_FDIAGONAL1 6 ! 211: 0x60,0x00,0x00,0x00, // .**..... ! 212: 0x18,0x00,0x00,0x00, // ...**... ! 213: 0x06,0x00,0x00,0x00, // .....**. ! 214: 0x81,0x00,0x00,0x00, // *......* ! 215: 0x60,0x00,0x00,0x00, // .**..... ! 216: 0x18,0x00,0x00,0x00, // ...**... ! 217: 0x06,0x00,0x00,0x00 }, // .....**. ! 218: ! 219: { 0x81,0x00,0x00,0x00, // *......* HS_BDIAGONAL1 7 ! 220: 0x06,0x00,0x00,0x00, // .....**. ! 221: 0x18,0x00,0x00,0x00, // ...**... ! 222: 0x60,0x00,0x00,0x00, // .**..... ! 223: 0x81,0x00,0x00,0x00, // *......* ! 224: 0x06,0x00,0x00,0x00, // .....**. ! 225: 0x18,0x00,0x00,0x00, // ...**... ! 226: 0x60,0x00,0x00,0x00 }, // .**..... ! 227: ! 228: { 0xFF,0x00,0x00,0x00, // ******** HS_SOLID 8 ! 229: 0xFF,0x00,0x00,0x00, // ******** ! 230: 0xFF,0x00,0x00,0x00, // ******** ! 231: 0xFF,0x00,0x00,0x00, // ******** ! 232: 0xFF,0x00,0x00,0x00, // ******** ! 233: 0xFF,0x00,0x00,0x00, // ******** ! 234: 0xFF,0x00,0x00,0x00, // ******** ! 235: 0xFF,0x00,0x00,0x00 }, // ******** ! 236: ! 237: { 0x38,0x00,0x00,0x00, // ..***... HS_DENSE1 9 ! 238: 0x7c,0x00,0x00,0x00, // .*****.. ! 239: 0x7c,0x00,0x00,0x00, // .*****.. ! 240: 0x38,0x00,0x00,0x00, // ..***... ! 241: 0x83,0x00,0x00,0x00, // *.....** ! 242: 0xc7,0x00,0x00,0x00, // **...*** ! 243: 0xc7,0x00,0x00,0x00, // **...*** ! 244: 0x83,0x00,0x00,0x00 }, // *.....** ! 245: ! 246: { 0x38,0x00,0x00,0x00, // ..***... HS_DENSE2 10 ! 247: 0x6c,0x00,0x00,0x00, // .**.**.. ! 248: 0x54,0x00,0x00,0x00, // .*.*.*.. ! 249: 0x38,0x00,0x00,0x00, // ..***... ! 250: 0x83,0x00,0x00,0x00, // *.....** ! 251: 0xc6,0x00,0x00,0x00, // **...**. ! 252: 0x45,0x00,0x00,0x00, // .*...*.* ! 253: 0x83,0x00,0x00,0x00 }, // *.....** ! 254: ! 255: { 0x18,0x00,0x00,0x00, // ...**... HS_DENSE3 11 ! 256: 0x3c,0x00,0x00,0x00, // ..****.. ! 257: 0x34,0x00,0x00,0x00, // ..**.*.. ! 258: 0x18,0x00,0x00,0x00, // ...**... ! 259: 0x81,0x00,0x00,0x00, // *......* ! 260: 0xc3,0x00,0x00,0x00, // **....** ! 261: 0x43,0x00,0x00,0x00, // .*....** ! 262: 0x81,0x00,0x00,0x00 }, // *......* ! 263: ! 264: { 0x18,0x00,0x00,0x00, // ...**... HS_DENSE4 12 ! 265: 0x2c,0x00,0x00,0x00, // ..*.**.. ! 266: 0x24,0x00,0x00,0x00, // ..*..*.. ! 267: 0x18,0x00,0x00,0x00, // ...**... ! 268: 0x81,0x00,0x00,0x00, // *......* ! 269: 0xc1,0x00,0x00,0x00, // **....*. ! 270: 0x42,0x00,0x00,0x00, // .*....*. ! 271: 0x81,0x00,0x00,0x00 }, // *......* ! 272: ! 273: { 0x10,0x00,0x00,0x00, // ...*.... HS_DENSE5 13 ! 274: 0x38,0x00,0x00,0x00, // ..***... ! 275: 0x28,0x00,0x00,0x00, // ..*.*... ! 276: 0x10,0x00,0x00,0x00, // ...*.... ! 277: 0x01,0x00,0x00,0x00, // .......* ! 278: 0x83,0x00,0x00,0x00, // *.....** ! 279: 0x82,0x00,0x00,0x00, // *.....*. ! 280: 0x01,0x00,0x00,0x00 }, // .......* ! 281: ! 282: { 0x00,0x00,0x00,0x00, // ........ HS_DENSE6 14 ! 283: 0x10,0x00,0x00,0x00, // ...*.... ! 284: 0x38,0x00,0x00,0x00, // ..***... ! 285: 0x10,0x00,0x00,0x00, // ...*.... ! 286: 0x00,0x00,0x00,0x00, // ........ ! 287: 0x01,0x00,0x00,0x00, // .......* ! 288: 0x83,0x00,0x00,0x00, // *.....** ! 289: 0x01,0x00,0x00,0x00 }, // .......* ! 290: ! 291: { 0x00,0x00,0x00,0x00, // ........ HS_DENSE7 15 ! 292: 0x10,0x00,0x00,0x00, // ...*.... ! 293: 0x30,0x00,0x00,0x00, // ..**.... ! 294: 0x00,0x00,0x00,0x00, // ........ ! 295: 0x00,0x00,0x00,0x00, // ........ ! 296: 0x01,0x00,0x00,0x00, // .......* ! 297: 0x03,0x00,0x00,0x00, // ......** ! 298: 0x00,0x00,0x00,0x00 }, // ........ ! 299: ! 300: { 0x00,0x00,0x00,0x00, // ........ HS_DENSE8 16 ! 301: 0x00,0x00,0x00,0x00, // ........ ! 302: 0x20,0x00,0x00,0x00, // ..*..... ! 303: 0x00,0x00,0x00,0x00, // ........ ! 304: 0x00,0x00,0x00,0x00, // ........ ! 305: 0x00,0x00,0x00,0x00, // ........ ! 306: 0x02,0x00,0x00,0x00, // ......*. ! 307: 0x00,0x00,0x00,0x00 }, // ........ ! 308: ! 309: { 0x00,0x00,0x00,0x00, // ........ HS_NOSHADE 17 ! 310: 0x00,0x00,0x00,0x00, // ........ ! 311: 0x00,0x00,0x00,0x00, // ........ ! 312: 0x00,0x00,0x00,0x00, // ........ ! 313: 0x00,0x00,0x00,0x00, // ........ ! 314: 0x00,0x00,0x00,0x00, // ........ ! 315: 0x00,0x00,0x00,0x00, // ........ ! 316: 0x00,0x00,0x00,0x00 }, // ........ ! 317: ! 318: { 0xAA,0x00,0x00,0x00, // *.*.*.*. HS_HALFTONE 18 ! 319: 0x55,0x00,0x00,0x00, // .*.*.*.* ! 320: 0xAA,0x00,0x00,0x00, // *.*.*.*. ! 321: 0x55,0x00,0x00,0x00, // .*.*.*.* ! 322: 0xAA,0x00,0x00,0x00, // *.*.*.*. ! 323: 0x55,0x00,0x00,0x00, // .*.*.*.* ! 324: 0xAA,0x00,0x00,0x00, // *.*.*.*. ! 325: 0x55,0x00,0x00,0x00 } // .*.*.*.* ! 326: }; ! 327: ! 328: // We pre-realize all of our hatch brushes here. ! 329: ! 330: BYTE gaajRealizedPat[HS_DDI_MAX][32] = { ! 331: ! 332: { 0x00,0x00, // ........ HS_HORIZONTAL 0 ! 333: 0x00,0x00, // ........ ! 334: 0x00,0x00, // ........ ! 335: 0xff,0xff, // ******** ! 336: 0x00,0x00, // ........ ! 337: 0x00,0x00, // ........ ! 338: 0x00,0x00, // ........ ! 339: 0x00,0x00}, // ........ ! 340: ! 341: { 0x08,0x08, // ....*... HS_VERTICAL 1 ! 342: 0x08,0x08, // ....*... ! 343: 0x08,0x08, // ....*... ! 344: 0x08,0x08, // ....*... ! 345: 0x08,0x08, // ....*... ! 346: 0x08,0x08, // ....*... ! 347: 0x08,0x08, // ....*... ! 348: 0x08,0x08}, // ....*... ! 349: ! 350: { 0x80,0x80, // *....... HS_FDIAGONAL 2 ! 351: 0x40,0x40, // .*...... ! 352: 0x20,0x20, // ..*..... ! 353: 0x10,0x10, // ...*.... ! 354: 0x08,0x08, // ....*... ! 355: 0x04,0x04, // .....*.. ! 356: 0x02,0x02, // ......*. ! 357: 0x01,0x01}, // .......* ! 358: ! 359: { 0x01,0x01, // .......* HS_BDIAGONAL 3 ! 360: 0x02,0x02, // ......*. ! 361: 0x04,0x04, // .....*.. ! 362: 0x08,0x08, // ....*... ! 363: 0x10,0x10, // ...*.... ! 364: 0x20,0x20, // ..*..... ! 365: 0x40,0x40, // .*...... ! 366: 0x80,0x80}, // *....... ! 367: ! 368: { 0x08,0x08, // ....*... HS_CROSS 4 ! 369: 0x08,0x08, // ....*... ! 370: 0x08,0x08, // ....*... ! 371: 0xff,0xff, // ******** ! 372: 0x08,0x08, // ....*... ! 373: 0x08,0x08, // ....*... ! 374: 0x08,0x08, // ....*... ! 375: 0x08,0x08}, // ....*... ! 376: ! 377: { 0x81,0x81, // *......* HS_DIAGCROSS 5 ! 378: 0x42,0x42, // .*....*. ! 379: 0x24,0x24, // ..*..*.. ! 380: 0x18,0x18, // ...**... ! 381: 0x18,0x18, // ...**... ! 382: 0x24,0x24, // ..*..*.. ! 383: 0x42,0x42, // .*....*. ! 384: 0x81,0x81}, // *......* ! 385: ! 386: { 0x81,0x81, // *......* HS_FDIAGONAL1 6 ! 387: 0x60,0x60, // .**..... ! 388: 0x18,0x18, // ...**... ! 389: 0x06,0x06, // .....**. ! 390: 0x81,0x81, // *......* ! 391: 0x60,0x60, // .**..... ! 392: 0x18,0x18, // ...**... ! 393: 0x06,0x06}, // .....**. ! 394: ! 395: { 0x81,0x81, // *......* HS_BDIAGONAL1 7 ! 396: 0x06,0x06, // .....**. ! 397: 0x18,0x18, // ...**... ! 398: 0x60,0x60, // .**..... ! 399: 0x81,0x81, // *......* ! 400: 0x06,0x06, // .....**. ! 401: 0x18,0x18, // ...**... ! 402: 0x60,0x60}, // .**..... ! 403: ! 404: { 0xFF,0xFF, // ******** HS_SOLID 8 ! 405: 0xFF,0xFF, // ******** ! 406: 0xFF,0xFF, // ******** ! 407: 0xFF,0xFF, // ******** ! 408: 0xFF,0xFF, // ******** ! 409: 0xFF,0xFF, // ******** ! 410: 0xFF,0xFF, // ******** ! 411: 0xFF,0xFF}, // ******** ! 412: ! 413: { 0x38,0x38, // ..***... HS_DENSE1 9 ! 414: 0x7c,0x7c, // .*****.. ! 415: 0x7c,0x7c, // .*****.. ! 416: 0x38,0x38, // ..***... ! 417: 0x83,0x83, // *.....** ! 418: 0xc7,0xc7, // **...*** ! 419: 0xc7,0xc7, // **...*** ! 420: 0x83,0x83}, // *.....** ! 421: ! 422: { 0x38,0x38, // ..***... HS_DENSE2 10 ! 423: 0x6c,0x6c, // .**.**.. ! 424: 0x54,0x54, // .*.*.*.. ! 425: 0x38,0x38, // ..***... ! 426: 0x83,0x83, // *.....** ! 427: 0xc6,0xc6, // **...**. ! 428: 0x45,0x45, // .*...*.* ! 429: 0x83,0x83}, // *.....** ! 430: ! 431: { 0x18,0x18, // ...**... HS_DENSE3 11 ! 432: 0x3c,0x3c, // ..****.. ! 433: 0x34,0x34, // ..**.*.. ! 434: 0x18,0x18, // ...**... ! 435: 0x81,0x81, // *......* ! 436: 0xc3,0xc3, // **....** ! 437: 0x43,0x43, // .*....** ! 438: 0x81,0x81}, // *......* ! 439: ! 440: { 0x18,0x18, // ...**... HS_DENSE4 12 ! 441: 0x2c,0x2c, // ..*.**.. ! 442: 0x24,0x24, // ..*..*.. ! 443: 0x18,0x18, // ...**... ! 444: 0x81,0x81, // *......* ! 445: 0xc1,0xc1, // **....*. ! 446: 0x42,0x42, // .*....*. ! 447: 0x81,0x81}, // *......* ! 448: ! 449: { 0x10,0x10, // ...*.... HS_DENSE5 13 ! 450: 0x38,0x38, // ..***... ! 451: 0x28,0x28, // ..*.*... ! 452: 0x10,0x10, // ...*.... ! 453: 0x01,0x01, // .......* ! 454: 0x83,0x83, // *.....** ! 455: 0x82,0x82, // *.....*. ! 456: 0x01,0x01}, // .......* ! 457: ! 458: { 0x00,0x00, // ........ HS_DENSE6 14 ! 459: 0x10,0x10, // ...*.... ! 460: 0x38,0x38, // ..***... ! 461: 0x10,0x10, // ...*.... ! 462: 0x00,0x00, // ........ ! 463: 0x01,0x01, // .......* ! 464: 0x83,0x83, // *.....** ! 465: 0x01,0x01}, // .......* ! 466: ! 467: { 0x00,0x00, // ........ HS_DENSE7 15 ! 468: 0x10,0x10, // ...*.... ! 469: 0x30,0x30, // ..**.... ! 470: 0x00,0x00, // ........ ! 471: 0x00,0x00, // ........ ! 472: 0x01,0x01, // .......* ! 473: 0x03,0x03, // ......** ! 474: 0x00,0x00}, // ........ ! 475: ! 476: { 0x00,0x00, // ........ HS_DENSE8 16 ! 477: 0x00,0x00, // ........ ! 478: 0x20,0x20, // ..*..... ! 479: 0x00,0x00, // ........ ! 480: 0x00,0x00, // ........ ! 481: 0x00,0x00, // ........ ! 482: 0x02,0x02, // ......*. ! 483: 0x00,0x00}, // ........ ! 484: ! 485: { 0x00,0x00, // ........ HS_NOSHADE 17 ! 486: 0x00,0x00, // ........ ! 487: 0x00,0x00, // ........ ! 488: 0x00,0x00, // ........ ! 489: 0x00,0x00, // ........ ! 490: 0x00,0x00, // ........ ! 491: 0x00,0x00, // ........ ! 492: 0x00,0x00}, // ........ ! 493: ! 494: { 0xAA,0xAA, // *.*.*.*. HS_HALFTONE 18 ! 495: 0x55,0x55, // .*.*.*.* ! 496: 0xAA,0xAA, // *.*.*.*. ! 497: 0x55,0x55, // .*.*.*.* ! 498: 0xAA,0xAA, // *.*.*.*. ! 499: 0x55,0x55, // .*.*.*.* ! 500: 0xAA,0xAA, // *.*.*.*. ! 501: 0x55,0x55} // .*.*.*.* ! 502: }; ! 503: ! 504: // DrvRealizeBrush uses this table to get to the pre-realized version of ! 505: // The hatched brush. The first number is the "real" width. The second ! 506: // number is the number of bits one must shift right to divide a y coord ! 507: // by the height of this brush (power of 2 divisor). This allows us to quickly ! 508: // figure out how many passes are in our venetian blind. For example, the ! 509: // HS_VERTICAL brush is really one scan line (0x8) repeated 8 times. We ! 510: // view this as a 1 high pattern. This will result in a one pass blt. The ! 511: // HS_HALFTONE brush is really a repeating 2 high pattern. So we can do this ! 512: // in two passes. Most of the other hatches are 8 high so we will have to ! 513: // venetian blind our pattern to the screen with 8 passes. ! 514: ! 515: ULONG gRealizedBrushHeight[] = { ! 516: 8, 3,//HS_HORIZONTAL 0 ! 517: 1, 0,//HS_VERTICAL 1 ! 518: 8, 3,//HS_FDIAGONAL 2 ! 519: 8, 3,//HS_BDIAGONAL 3 ! 520: 8, 3,//HS_CROSS 4 ! 521: 8, 3,//HS_DIAGCROSS 5 ! 522: 8, 3,//HS_FDIAGONAL1 6 ! 523: 8, 3,//HS_BDIAGONAL1 7 ! 524: 1, 0,//HS_SOLID 8 ! 525: 8, 3,//HS_DENSE1 9 ! 526: 8, 3,//HS_DENSE2 10 ! 527: 8, 3,//HS_DENSE3 11 ! 528: 8, 3,//HS_DENSE4 12 ! 529: 8, 3,//HS_DENSE5 13 ! 530: 8, 3,//HS_DENSE6 14 ! 531: 8, 3,//HS_DENSE7 15 ! 532: 8, 3,//HS_DENSE8 16 ! 533: 1, 0,//HS_NOSHADE 17 ! 534: 2, 1,//HS_HALFTONE 18 ! 535: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.