fix 24bpp bug

This commit is contained in:
cxgeorge 2001-03-12 02:27:26 +00:00
parent d3701f3eda
commit 2dfc0dca85

View File

@ -796,7 +796,7 @@ HRESULT ConvertDDSurftoPixBuf(PixelBuffer *pixbuf,LPDIRECTDRAWSURFACE7 pDDSurf)
break; break;
} }
} else { // convert to 24bpp pixbuf } else { // convert to 24bpp pixbuf
BYTE *pDstWord = (BYTE *) pbuf; BYTE *pDstByte = (BYTE *) pbuf;
switch(ddsd.ddpfPixelFormat.dwRGBBitCount) { switch(ddsd.ddpfPixelFormat.dwRGBBitCount) {
case 32: { case 32: {
@ -818,16 +818,16 @@ HRESULT ConvertDDSurftoPixBuf(PixelBuffer *pixbuf,LPDIRECTDRAWSURFACE7 pDDSurf)
g = (BYTE)((dwPixel>> 8)&0x000000ff); g = (BYTE)((dwPixel>> 8)&0x000000ff);
b = (BYTE)((dwPixel )&0x000000ff); b = (BYTE)((dwPixel )&0x000000ff);
*pDstWord++ = r; *pDstByte++ = r;
*pDstWord++ = g; *pDstByte++ = g;
*pDstWord++ = b; *pDstByte++ = b;
} }
} }
break; break;
} }
case 24: { case 24: {
BYTE *pSrcByte,*pDstByte; BYTE *pSrcByte;
pDDSurfBytes+=ddsd.lPitch*(dwYWindowOffset+dwCopyHeight-1); pDDSurfBytes+=ddsd.lPitch*(dwYWindowOffset+dwCopyHeight-1);
for(DWORD y=0; y<dwCopyHeight; y++,pDDSurfBytes-=ddsd.lPitch) { for(DWORD y=0; y<dwCopyHeight; y++,pDDSurfBytes-=ddsd.lPitch) {
@ -896,9 +896,9 @@ HRESULT ConvertDDSurftoPixBuf(PixelBuffer *pixbuf,LPDIRECTDRAWSURFACE7 pDDSurf)
g = (dwPixel & greenmask) >> greenshift; g = (dwPixel & greenmask) >> greenshift;
r = (dwPixel & redmask) >> redshift; r = (dwPixel & redmask) >> redshift;
*pDstWord++ = r; *pDstByte++ = r;
*pDstWord++ = g; *pDstByte++ = g;
*pDstWord++ = b; *pDstByte++ = b;
} }
} }
} }