mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-04 04:48:00 +02:00
Bug #4260, Reviewed by B. Biggs
Use & not && for bitwise AND. src/fbpict.c src/fbmmx.c: Take 'dest' as an argument, if pict and dest don't match for RGB, BGR, swap result.
This commit is contained in:
parent
e06df6a38a
commit
a1bca924b9
5 changed files with 40 additions and 21 deletions
|
|
@ -1,3 +1,14 @@
|
|||
2005-08-28 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Bug #4260, Reviewed by B. Biggs
|
||||
|
||||
* src/fbcompose.c (fbStore_a8b8g8r8, fbStore_x8b8g8r8): Use & not
|
||||
&& for bitwise AND.
|
||||
|
||||
* src/fbpict.h (fbComposeGetSolid) src/fbpict.c src/fbmmx.c: Take
|
||||
'dest' as an argument, if pict and dest don't match for RGB, BGR,
|
||||
swap result.
|
||||
|
||||
2005-08-28 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* src/fbmmx.c (detectCPUFeatures): Use local labels rather than
|
||||
|
|
|
|||
|
|
@ -1049,7 +1049,7 @@ fbStore_a8b8g8r8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
|
|||
int i;
|
||||
CARD32 *pixel = (CARD32 *)bits + x;
|
||||
for (i = 0; i < width; ++i)
|
||||
*pixel++ = (values[i] & 0xff00ff00) | ((values[i] >> 16) && 0xff) | ((values[i] & 0xff) << 16);
|
||||
*pixel++ = (values[i] & 0xff00ff00) | ((values[i] >> 16) & 0xff) | ((values[i] & 0xff) << 16);
|
||||
}
|
||||
|
||||
static FASTCALL void
|
||||
|
|
@ -1058,7 +1058,7 @@ fbStore_x8b8g8r8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
|
|||
int i;
|
||||
CARD32 *pixel = (CARD32 *)bits + x;
|
||||
for (i = 0; i < width; ++i)
|
||||
*pixel++ = (values[i] & 0x0000ff00) | ((values[i] >> 16) && 0xff) | ((values[i] & 0xff) << 16);
|
||||
*pixel++ = (values[i] & 0x0000ff00) | ((values[i] >> 16) & 0xff) | ((values[i] & 0xff) << 16);
|
||||
}
|
||||
|
||||
static FASTCALL void
|
||||
|
|
|
|||
|
|
@ -886,7 +886,7 @@ fbCompositeSolid_nx8888mmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
if (src >> 24 == 0)
|
||||
return;
|
||||
|
|
@ -964,7 +964,7 @@ fbCompositeSolid_nx0565mmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
if (src >> 24 == 0)
|
||||
return;
|
||||
|
|
@ -1049,7 +1049,7 @@ fbCompositeSolidMask_nx8888x8888Cmmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
if (srca == 0)
|
||||
|
|
@ -1424,7 +1424,7 @@ fbCompositeSolidMask_nx8x8888mmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
if (srca == 0)
|
||||
|
|
@ -1539,7 +1539,7 @@ fbCompositeSolidMaskSrc_nx8x8888mmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
if (srca == 0)
|
||||
|
|
@ -1670,7 +1670,7 @@ fbCompositeSolidMask_nx8x0565mmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
if (srca == 0)
|
||||
|
|
@ -2011,7 +2011,7 @@ fbCompositeSolidMask_nx8888x0565Cmmx (pixman_operator_t op,
|
|||
|
||||
CHECKPOINT();
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
if (srca == 0)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: fbpict.c,v 1.5 2005-08-28 02:32:57 vektor Exp $
|
||||
* $Id: fbpict.c,v 1.6 2005-09-12 12:55:11 otaylor Exp $
|
||||
*
|
||||
* Copyright © 2000 SuSE, Inc.
|
||||
*
|
||||
|
|
@ -169,7 +169,7 @@ fbCompositeSolidMask_nx8x8888 (pixman_operator_t op,
|
|||
FbStride dstStride, maskStride;
|
||||
CARD16 w;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
dstMask = FbFullMask (pDst->pDrawable->depth);
|
||||
srca = src >> 24;
|
||||
|
|
@ -228,7 +228,7 @@ fbCompositeSolidMask_nx8888x8888C (pixman_operator_t op,
|
|||
CARD16 w;
|
||||
CARD32 m, n, o, p;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
dstMask = FbFullMask (pDst->pDrawable->depth);
|
||||
srca = src >> 24;
|
||||
|
|
@ -302,7 +302,7 @@ fbCompositeSolidMask_nx8x0888 (pixman_operator_t op,
|
|||
CARD16 w;
|
||||
CARD32 rs,gs,bs,rd,gd,bd;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
srcia = 255-srca;
|
||||
|
|
@ -398,7 +398,7 @@ fbCompositeSolidMask_nx8x0565 (pixman_operator_t op,
|
|||
FbStride dstStride, maskStride;
|
||||
CARD16 w,src16;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
if (src == 0)
|
||||
return;
|
||||
|
|
@ -476,7 +476,7 @@ fbCompositeSolidMask_nx8888x0565 (pixman_operator_t op,
|
|||
FbStride dstStride, maskStride;
|
||||
CARD16 w, src16;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
if (src == 0)
|
||||
return;
|
||||
|
|
@ -555,7 +555,7 @@ fbCompositeSolidMask_nx8888x0565C (pixman_operator_t op,
|
|||
CARD16 w;
|
||||
CARD32 m, n, o;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
srca = src >> 24;
|
||||
if (src == 0)
|
||||
|
|
@ -926,7 +926,7 @@ fbCompositeSolidMask_nx1xn (pixman_operator_t op,
|
|||
int maskXoff, maskYoff;
|
||||
FbBits src;
|
||||
|
||||
fbComposeGetSolid(pSrc, src);
|
||||
fbComposeGetSolid(pSrc, pDst, src);
|
||||
|
||||
if ((src & 0xff000000) != 0xff000000)
|
||||
{
|
||||
|
|
@ -1008,7 +1008,7 @@ fbCompositeTrans_0565xnx0565(pixman_operator_t op,
|
|||
CARD16 s_16, d_16;
|
||||
CARD32 s_32, d_32;
|
||||
|
||||
fbComposeGetSolid (pMask, mask);
|
||||
fbComposeGetSolid (pMask, pDst, mask);
|
||||
maskAlpha = mask >> 27;
|
||||
|
||||
if (!maskAlpha)
|
||||
|
|
@ -1110,7 +1110,7 @@ fbCompositeTrans_0888xnx0888(pixman_operator_t op,
|
|||
FbBits mask;
|
||||
CARD16 maskAlpha,maskiAlpha;
|
||||
|
||||
fbComposeGetSolid (pMask, mask);
|
||||
fbComposeGetSolid (pMask, pDst, mask);
|
||||
maskAlpha = mask >> 24;
|
||||
maskiAlpha= 255-maskAlpha;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* $Id: fbpict.h,v 1.1 2005-08-11 04:10:13 vektor Exp $
|
||||
* $Id: fbpict.h,v 1.2 2005-09-12 12:55:11 otaylor Exp $
|
||||
*
|
||||
* Copyright © 2000 Keith Packard
|
||||
* 2005 Lars Knoll & Zack Rusin, Trolltech
|
||||
|
|
@ -67,7 +67,9 @@
|
|||
#define Green(x) (((x) >> 8) & 0xff)
|
||||
#define Blue(x) ((x) & 0xff)
|
||||
|
||||
#define fbComposeGetSolid(pict, bits) { \
|
||||
#define IsRGB(pict) ((pict)->image_format.red > (pict)->image_format.blue)
|
||||
|
||||
#define fbComposeGetSolid(pict, dest, bits) { \
|
||||
FbBits *__bits__; \
|
||||
FbStride __stride__; \
|
||||
int __bpp__; \
|
||||
|
|
@ -99,6 +101,12 @@
|
|||
/* manage missing src alpha */ \
|
||||
if ((pict)->image_format.alphaMask == 0) \
|
||||
(bits) |= 0xff000000; \
|
||||
/* Handle RGB/BGR mismatch */ \
|
||||
if (dest && IsRGB(dest) != IsRGB(pict)) \
|
||||
bits = (((bits & 0xff000000)) | \
|
||||
((bits & 0x00ff0000) >> 16) | \
|
||||
((bits & 0x0000ff00)) | \
|
||||
((bits & 0x000000ff) << 16)); \
|
||||
}
|
||||
|
||||
#define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue