|
|
Definition at line 121 of file cards.c.
Referenced by cdtDraw().
{
HDC hdcCard;
DWORD dwRasterOp = SRCCOPY, OldBkColor;
BOOL bSaveEdges = TRUE;
BOOL bStretch = FALSE;
if (type & ectSAVEEDGESMASK)
{
type &= ~ectSAVEEDGESMASK;
bSaveEdges = FALSE;
}
if (dx != CARD_WIDTH || dy != CARD_HEIGHT)
{
bStretch = TRUE;
bSaveEdges = FALSE;
}
switch (type)
{
case ectINVERTED:
dwRasterOp = NOTSRCCOPY;
case ectFACES:
card = (card % 4) * 13 + (card / 4);
break;
case ectBACKS:
--card;
break;
case ectEMPTYNOBG:
dwRasterOp = SRCAND;
case ectEMPTY:
card = 52;
break;
case ectERASE:
break;
case ectREDX:
card = 66;
break;
case ectGREENO:
card = 67;
break;
default:
return FALSE;
}
if (type == ectEMPTY || type == ectERASE)
{
POINT pPoint;
HBRUSH hBrush;
hBrush = CreateSolidBrush(color);
GetDCOrgEx(hdc, &pPoint);
SetBrushOrgEx(hdc, pPoint.x, pPoint.y, 0);
SelectObject(hdc, hBrush);
PatBlt(hdc, x, y, dx, dy, PATCOPY);
}
if (type != ectERASE)
{
hdcCard = CreateCompatibleDC(hdc);
SelectObject(hdcCard, g_CardBitmaps[card]);
OldBkColor = SetBkColor(hdc, (type == ectFACES) ? 0xFFFFFF : color);
if (bSaveEdges)
{
COLORREF SavedPixels[12];
SavedPixels[0] = GetPixel(hdc, x, y);
SavedPixels[1] = GetPixel(hdc, x + 1, y);
SavedPixels[2] = GetPixel(hdc, x, y + 1);
SavedPixels[3] = GetPixel(hdc, x + dx - 1, y);
SavedPixels[4] = GetPixel(hdc, x + dx - 2, y);
SavedPixels[5] = GetPixel(hdc, x + dx - 1, y + 1);
SavedPixels[6] = GetPixel(hdc, x, y + dy - 1);
SavedPixels[7] = GetPixel(hdc, x + 1, y + dy - 1);
SavedPixels[8] = GetPixel(hdc, x, y + dy - 2);
SavedPixels[9] = GetPixel(hdc, x + dx - 1, y + dy - 1);
SavedPixels[10] = GetPixel(hdc, x + dx - 2, y + dy - 1);
SavedPixels[11] = GetPixel(hdc, x + dx - 1, y + dy - 2);
BltCard(hdc, x, y, dx, dy, hdcCard, dwRasterOp, bStretch);
SetPixel(hdc, x, y, SavedPixels[0]);
SetPixel(hdc, x + 1, y, SavedPixels[1]);
SetPixel(hdc, x, y + 1, SavedPixels[2]);
SetPixel(hdc, x + dx - 1, y, SavedPixels[3]);
SetPixel(hdc, x + dx - 2, y, SavedPixels[4]);
SetPixel(hdc, x + dx - 1, y + 1, SavedPixels[5]);
SetPixel(hdc, x, y + dy - 1, SavedPixels[6]);
SetPixel(hdc, x + 1, y + dy - 1, SavedPixels[7]);
SetPixel(hdc, x, y + dy - 2, SavedPixels[8]);
SetPixel(hdc, x + dx - 1, y + dy - 1, SavedPixels[9]);
SetPixel(hdc, x + dx - 2, y + dy - 1, SavedPixels[10]);
SetPixel(hdc, x + dx - 1, y + dy - 2, SavedPixels[11]);
}
else
{
BltCard(hdc, x, y, dx, dy, hdcCard, dwRasterOp, bStretch);
}
SetBkColor(hdc, OldBkColor);
DeleteDC(hdcCard);
}
return TRUE;
}
|