static int BitBlt_DSPDxax_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HGDI_DC hdcSrc, int nXSrc, int nYSrc)
{
int x, y;
- uint16* srcp;
+ uint8* srcp;
uint16* dstp;
- uint16* patp;
+ uint16 src16;
uint16 color16;
HGDI_BITMAP hSrcBmp;
color16 = gdi_get_color_16bpp(hdcDest, hdcDest->textColor);
hSrcBmp = (HGDI_BITMAP) hdcSrc->selectedObject;
- srcp = (uint16*) hSrcBmp->data;
if (hdcSrc->bytesPerPixel != 1)
{
for (y = 0; y < nHeight; y++)
{
- srcp = (uint16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
+ srcp = (uint8*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
dstp = (uint16*) gdi_get_bitmap_pointer(hdcDest, nXDest, nYDest + y);
if (dstp != 0)
{
for (x = 0; x < nWidth; x++)
{
- patp = (uint16*) &color16;
- *dstp = (*srcp & *patp) | (~(*srcp) & *dstp);
+ src16 = (*srcp << 8) | *srcp;
+ *dstp = (src16 & color16) | (~src16 & *dstp);
srcp++;
dstp++;
}