Annotation of ntddk/src/video/displays/s3/paint.c, revision 1.1

1.1     ! root        1: /******************************Module*Header*******************************\
        !             2: * Module Name: paint.c
        !             3: *
        !             4: *
        !             5: *
        !             6: * Copyright (c) 1992 Microsoft Corporation
        !             7: *
        !             8: \**************************************************************************/
        !             9: 
        !            10: #include "driver.h"
        !            11: 
        !            12: /******************************Public*Data*********************************\
        !            13: * MIX translation table
        !            14: *
        !            15: * Translates a mix 1-16, into an old style Rop 0-255.
        !            16: *
        !            17: \**************************************************************************/
        !            18: 
        !            19: BYTE gaMix[] =
        !            20: {
        !            21:     0xFF,  // R2_WHITE        - Allow rop = gaMix[mix & 0x0F]
        !            22:     0x00,  // R2_BLACK
        !            23:     0x05,  // R2_NOTMERGEPEN
        !            24:     0x0A,  // R2_MASKNOTPEN
        !            25:     0x0F,  // R2_NOTCOPYPEN
        !            26:     0x50,  // R2_MASKPENNOT
        !            27:     0x55,  // R2_NOT
        !            28:     0x5A,  // R2_XORPEN
        !            29:     0x5F,  // R2_NOTMASKPEN
        !            30:     0xA0,  // R2_MASKPEN
        !            31:     0xA5,  // R2_NOTXORPEN
        !            32:     0xAA,  // R2_NOP
        !            33:     0xAF,  // R2_MERGENOTPEN
        !            34:     0xF0,  // R2_COPYPEN
        !            35:     0xF5,  // R2_MERGEPENNOT
        !            36:     0xFA,  // R2_MERGEPEN
        !            37:     0xFF   // R2_WHITE
        !            38: };
        !            39: 
        !            40: /*****************************************************************************
        !            41:  * DrvPaint -
        !            42:  ****************************************************************************/
        !            43: BOOL DrvPaint(
        !            44:     SURFOBJ  *pso,
        !            45:     CLIPOBJ  *pco,
        !            46:     BRUSHOBJ *pbo,
        !            47:     POINTL   *pptlBrushOrg,
        !            48:     MIX      mix)
        !            49: {
        !            50:     INT     i;
        !            51:     ROP4    rop4;
        !            52:     BOOL    bRet,
        !            53:             bMoreClips;
        !            54: 
        !            55:     PPDEV       ppdev;
        !            56:     ENUMTRAPS8  traps8;
        !            57:     DDAENUM     ddae;
        !            58:     LONG        yRow;
        !            59:     RECTL       rcl;
        !            60:     PULONG      px;
        !            61: 
        !            62:     DISPDBG((3, "S3.DLL: DrvPaint - Entry\n"));
        !            63: 
        !            64:     ppdev = (PPDEV) pso->dhsurf;
        !            65: 
        !            66:     // Protect against a potentially NULL clip object.
        !            67: 
        !            68:     if (pco == NULL)
        !            69:         return FALSE;
        !            70: 
        !            71:     rop4  = (gaMix[(mix >> 8) & 0x0F]) << 8;
        !            72:     rop4 |= ((ULONG) gaMix[mix & 0x0F]);
        !            73: 
        !            74:     bRet = FALSE;
        !            75: 
        !            76:     switch (pco->iMode)
        !            77:     {
        !            78:         case TC_RECTANGLES:
        !            79: 
        !            80:             bRet = DrvBitBlt(pso,
        !            81:                              (SURFOBJ *) NULL,
        !            82:                              (SURFOBJ *) NULL,
        !            83:                              pco,
        !            84:                              (XLATEOBJ *) NULL,
        !            85:                              &(pco->rclBounds),
        !            86:                              (PPOINTL) NULL,
        !            87:                              (PPOINTL) NULL,
        !            88:                              pbo,
        !            89:                              pptlBrushOrg,
        !            90:                              rop4);
        !            91:             break;
        !            92: 
        !            93:         case TC_TRAPEZOIDS:
        !            94: 
        !            95:             // Enumerate all the trapezodial clip objects.
        !            96: 
        !            97:             CLIPOBJ_cEnumStart(pco, TRUE, CT_TRAPEZOIDS, CD_ANY, 8);
        !            98: 
        !            99:             do
        !           100:             {
        !           101:                 bMoreClips = CLIPOBJ_bEnum(pco, sizeof(traps8), (PULONG) &traps8);
        !           102: 
        !           103:                 for (i = 0; i < (INT) traps8.c; i++)
        !           104:                 {
        !           105:                     // Enumerate all the rectangles in this trapezoid.
        !           106: 
        !           107:                     if (!(DDAOBJ_bEnum(ppdev->pdda, &(traps8.atrap[i]),
        !           108:                                        sizeof(ddae), (DDALIST *) &ddae,
        !           109:                                        JD_ENUM_TRAPEZOID)))
        !           110:                     {
        !           111:                         continue;
        !           112:                     }
        !           113: 
        !           114:                     do
        !           115:                     {
        !           116:                         px = (PULONG) (&ddae.axPairs[0]);
        !           117: 
        !           118:                         for (yRow = ddae.yTop; yRow < ddae.yBottom; yRow++)
        !           119:                         {
        !           120:                             if (*px < *(px + 1))
        !           121:                             {
        !           122:                                 rcl.top    = yRow;
        !           123:                                 rcl.left   = *px;
        !           124:                                 rcl.bottom = yRow + 1;
        !           125:                                 rcl.right  = *(px + 1);
        !           126: 
        !           127:                                 bRet = DrvBitBlt(pso,
        !           128:                                                  (SURFOBJ *) NULL,
        !           129:                                                  (SURFOBJ *) NULL,
        !           130:                                                  ppdev->pcoDefault,
        !           131:                                                  (XLATEOBJ *) NULL,
        !           132:                                                  &rcl,
        !           133:                                                  (PPOINTL) NULL,
        !           134:                                                  (PPOINTL) NULL,
        !           135:                                                  pbo,
        !           136:                                                  pptlBrushOrg,
        !           137:                                                  rop4);
        !           138:                             }
        !           139:                             px += 2;
        !           140:                         }
        !           141:                     } while (DDAOBJ_bEnum(ppdev->pdda, NULL,
        !           142:                                             sizeof(ddae), (DDALIST *) &ddae,
        !           143:                                             JD_ENUM_TRAPEZOID));
        !           144:                 }
        !           145: 
        !           146:             } while (bMoreClips);
        !           147: 
        !           148:             bRet = TRUE;
        !           149:             break;
        !           150: 
        !           151:         default:
        !           152: 
        !           153:             DISPDBG((0, "S3.DLL!DrvPaint - Unhandled TC_xxxx\n"));
        !           154: 
        !           155:             break;
        !           156:     }
        !           157: 
        !           158:     return (bRet);
        !           159: }
        !           160: 

unix.superglobalmegacorp.com

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