Annotation of ntddk/src/video/displays/vga/gdiinfo.c, revision 1.1.1.1

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: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.