62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
/******************************Module*Header*******************************\
|
|
* Module Name: paint.c
|
|
*
|
|
* Copyright (c) 1992-1995 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include "precomp.h"
|
|
|
|
/******************************Public*Data*********************************\
|
|
* MIX translation table
|
|
*
|
|
* Translates a mix 1-16, into an old style Rop 0-255.
|
|
*
|
|
\**************************************************************************/
|
|
|
|
BYTE gaMix[] =
|
|
{
|
|
0xFF, // R2_WHITE - Allow rop = gaMix[mix & 0x0F]
|
|
0x00, // R2_BLACK
|
|
0x05, // R2_NOTMERGEPEN
|
|
0x0A, // R2_MASKNOTPEN
|
|
0x0F, // R2_NOTCOPYPEN
|
|
0x50, // R2_MASKPENNOT
|
|
0x55, // R2_NOT
|
|
0x5A, // R2_XORPEN
|
|
0x5F, // R2_NOTMASKPEN
|
|
0xA0, // R2_MASKPEN
|
|
0xA5, // R2_NOTXORPEN
|
|
0xAA, // R2_NOP
|
|
0xAF, // R2_MERGENOTPEN
|
|
0xF0, // R2_COPYPEN
|
|
0xF5, // R2_MERGEPENNOT
|
|
0xFA, // R2_MERGEPEN
|
|
0xFF // R2_WHITE - Allow rop = gaMix[mix & 0xFF]
|
|
};
|
|
|
|
/******************************Public*Routine******************************\
|
|
* BOOL DrvPaint
|
|
*
|
|
\**************************************************************************/
|
|
|
|
BOOL DrvPaint(
|
|
SURFOBJ* pso,
|
|
CLIPOBJ* pco,
|
|
BRUSHOBJ* pbo,
|
|
POINTL* pptlBrush,
|
|
MIX mix)
|
|
{
|
|
ROP4 rop4;
|
|
|
|
rop4 = ((MIX) gaMix[mix >> 8] << 8) | gaMix[mix & 0xf];
|
|
|
|
// Since our DrvFillPath routine handles almost all fills, DrvPaint
|
|
// won't get called all that much (mainly via PaintRgn, FillRgn, or
|
|
// complex clipped polygons). As such, we save some code and simply
|
|
// punt to DrvBitBlt:
|
|
|
|
return(DrvBitBlt(pso, NULL, NULL, pco, NULL, &pco->rclBounds, NULL,
|
|
NULL, pbo, pptlBrush, rop4));
|
|
}
|