Add support for 24bpp dib colorbox blit
Elias Ross
genman at maison-otaku.net
Fri Mar 12 15:07:19 CST 2004
<http://bugs.winehq.org/attachment.cgi?id=557&action=view>
-------------- next part --------------
Index: dib.c
===================================================================
RCS file: /home/wine/wine/dlls/ddraw/dsurface/dib.c,v
retrieving revision 1.32
diff -b -B -U8 -r1.32 dib.c
--- dib.c 4 Mar 2004 20:41:14 -0000 1.32
+++ dib.c 10 Mar 2004 08:32:28 -0000
@@ -904,19 +904,40 @@
if (tmp < keylow || tmp > keyhigh) d[x] = tmp; \
} \
(LPBYTE)s += sdesc.u1.lPitch; \
(LPBYTE)d += ddesc.u1.lPitch; \
} \
break; \
}
+#define COPYBOX_COLORKEY3() { \
+ BYTE *d, *s; \
+ DWORD tmp; \
+ s = (BYTE *) sdesc.lpSurface; \
+ d = (BYTE *) ddesc.lpSurface; \
+ for (y = 0; y < h; y++) { \
+ for (x = 0; x < w * 3; x += 3) { \
+ tmp = (DWORD)s[x] + ((DWORD)s[x + 1] << 8) + ((DWORD)s[x + 2] << 16); \
+ if (tmp < keylow || tmp > keyhigh) { \
+ d[x + 0] = s[x + 0]; \
+ d[x + 1] = s[x + 1]; \
+ d[x + 2] = s[x + 2]; \
+ } \
+ } \
+ (LPBYTE)s += sdesc.u1.lPitch; \
+ (LPBYTE)d += ddesc.u1.lPitch; \
+ } \
+ break; \
+ }
+
switch (bpp) {
case 1: COPYBOX_COLORKEY(BYTE)
case 2: COPYBOX_COLORKEY(WORD)
+ case 3: COPYBOX_COLORKEY3()
case 4: COPYBOX_COLORKEY(DWORD)
default:
FIXME("Source color key blitting not supported for bpp %d\n",bpp*8);
ret = DDERR_UNSUPPORTED;
goto error;
}
#undef COPYBOX_COLORKEY
} else {
More information about the wine-patches
mailing list