xserver-multidpi/fb/fbpict.h
Keith Packard a29bfbd3d0 Empty damage object when freeing pixmap.
Wrap InstallColormap so that the DDX doesn't see colormaps from our ARGB
    visual (avoids lovely green tint to screen). Also, set visual->nplanes
    of ARGB visual to all used (including alpha) planes so DIX can set
    pixel values correctly.
Translate automatic update regions correctly to account for borders
When nplanes == 32 (ARGB visuals), mask in all ones for alpha values to
    allocated pixel values.
Remove redundant fbAddTraps declaration
Fix fbCopyWindow to work on non-screen pixmaps (not needed yet)
Replace broken clipping code with that from modular tree.
Respect subWindowMode.
2004-08-13 08:16:14 +00:00

1062 lines
26 KiB
C

/*
* $XFree86: xc/programs/Xserver/fb/fbpict.h,v 1.7 2001/07/18 10:15:02 keithp Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _FBPICT_H_
#define _FBPICT_H_
#include "renderedge.h"
#define FbIntMult(a,b,t) ( (t) = (a) * (b) + 0x80, ( ( ( (t)>>8 ) + (t) )>>8 ) )
#define FbIntDiv(a,b) (((CARD16) (a) * 255) / (b))
#define FbGet8(v,i) ((CARD16) (CARD8) ((v) >> i))
/*
* There are two ways of handling alpha -- either as a single unified value or
* a separate value for each component, hence each macro must have two
* versions. The unified alpha version has a 'U' at the end of the name,
* the component version has a 'C'. Similarly, functions which deal with
* this difference will have two versions using the same convention.
*/
#define FbOverU(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),(a),(t)) + FbGet8(x,i),\
(CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
#define FbOverC(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),FbGet8(a,i),(t)) + FbGet8(x,i),\
(CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
#define FbInU(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),(a),(t)) << (i))
#define FbInC(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),FbGet8(a,i),(t)) << (i))
#define FbGen(x,y,i,ax,ay,t,u,v) ((t) = (FbIntMult(FbGet8(y,i),ay,(u)) + \
FbIntMult(FbGet8(x,i),ax,(v))),\
(CARD32) ((CARD8) ((t) | \
(0 - ((t) >> 8)))) << (i))
#define FbAdd(x,y,i,t) ((t) = FbGet8(x,i) + FbGet8(y,i), \
(CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
typedef void (*CompositeFunc) (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
#define fbComposeGetSolid(pict, bits) { \
FbBits *__bits__; \
FbStride __stride__; \
int __bpp__; \
int __xoff__,__yoff__; \
\
fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
switch (__bpp__) { \
case 32: \
(bits) = *(CARD32 *) __bits__; \
break; \
case 24: \
(bits) = Fetch24 ((CARD8 *) __bits__); \
break; \
case 16: \
(bits) = *(CARD16 *) __bits__; \
(bits) = cvt0565to8888(bits); \
break; \
default: \
return; \
} \
/* manage missing src alpha */ \
if ((pict)->pFormat->direct.alphaMask == 0) \
(bits) |= 0xff000000; \
}
#define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
FbBits *__bits__; \
FbStride __stride__; \
int __bpp__; \
int __xoff__,__yoff__; \
\
fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
(stride) = __stride__ * sizeof (FbBits) / sizeof (type); \
(line) = ((type *) __bits__) + (stride) * ((y) - __yoff__) + (mul) * ((x) - __xoff__); \
}
#define cvt8888to0565(s) ((((s) >> 3) & 0x001f) | \
(((s) >> 5) & 0x07e0) | \
(((s) >> 8) & 0xf800))
#define cvt0565to8888(s) (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
#if IMAGE_BYTE_ORDER == MSBFirst
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
((*(a) << 16) | *((CARD16 *) ((a)+1))) : \
((*((CARD16 *) (a)) << 8) | *((a)+2)))
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
((*(a) = (CARD8) ((v) >> 16)), \
(*((CARD16 *) ((a)+1)) = (CARD16) (v))) : \
((*((CARD16 *) (a)) = (CARD16) ((v) >> 8)), \
(*((a)+2) = (CARD8) (v))))
#else
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
((*(a)) | (*((CARD16 *) ((a)+1)) << 8)) : \
((*((CARD16 *) (a))) | (*((a)+2) << 16)))
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
((*(a) = (CARD8) (v)), \
(*((CARD16 *) ((a)+1)) = (CARD16) ((v) >> 8))) : \
((*((CARD16 *) (a)) = (CARD16) (v)),\
(*((a)+2) = (CARD8) ((v) >> 16))))
#endif
typedef struct _FbCompositeOperand FbCompositeOperand;
typedef CARD32 (*FbCompositeFetch)(FbCompositeOperand *op);
typedef void (*FbCompositeStore) (FbCompositeOperand *op, CARD32 value);
typedef void (*FbCompositeStep) (FbCompositeOperand *op);
typedef void (*FbCompositeSet) (FbCompositeOperand *op, int x, int y);
struct _FbCompositeOperand {
union {
struct {
FbBits *top_line;
int left_offset;
int start_offset;
FbBits *line;
CARD32 offset;
FbStride stride;
int bpp;
} drawable;
struct {
int alpha_dx;
int alpha_dy;
} external;
struct {
int top_y;
int left_x;
int start_x;
int x;
int y;
PictTransformPtr transform;
int filter;
} transform;
} u;
FbCompositeFetch fetch;
FbCompositeFetch fetcha;
FbCompositeStore store;
FbCompositeStep over;
FbCompositeStep down;
FbCompositeSet set;
miIndexedPtr indexed;
RegionPtr clip;
};
typedef void (*FbCombineFunc) (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
/*
* indexed by op
*/
extern FbCombineFunc fbCombineFunc[];
typedef struct _FbAccessMap {
CARD32 format;
FbCompositeFetch fetch;
FbCompositeFetch fetcha;
FbCompositeStore store;
} FbAccessMap;
/*
* search on format
*/
extern FbAccessMap fbAccessMap[];
/* fbcompose.c */
typedef struct _fbCompSrc {
CARD32 value;
CARD32 alpha;
} FbCompSrc;
/*
* All compositing operators *
*/
CARD32
fbCombineMaskU (FbCompositeOperand *src,
FbCompositeOperand *msk);
FbCompSrc
fbCombineMaskC (FbCompositeOperand *src,
FbCompositeOperand *msk);
CARD32
fbCombineMaskValueC (FbCompositeOperand *src,
FbCompositeOperand *msk);
CARD32
fbCombineMaskAlphaU (FbCompositeOperand *src,
FbCompositeOperand *msk);
CARD32
fbCombineMaskAlphaC (FbCompositeOperand *src,
FbCompositeOperand *msk);
#if 0
CARD32
FbCombineMask (FbCompositeOperand *src,
FbCompositeOperand *msk);
#endif
void
fbCombineClear (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineSrcU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineSrcC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDst (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOverU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOverC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOverReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOverReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineInU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineInC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineInReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineInReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOutU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOutC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOutReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineOutReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineAtopU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineAtopC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineAtopReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineAtopReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineXorU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineXorC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineAddU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineAddC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineSaturateU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineSaturateC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
CARD8
fbCombineDisjointOutPart (CARD8 a, CARD8 b);
CARD8
fbCombineDisjointInPart (CARD8 a, CARD8 b);
void
fbCombineDisjointGeneralU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst,
CARD8 combine);
void
fbCombineDisjointGeneralC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst,
CARD8 combine);
void
fbCombineDisjointOverU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointOverC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
#define fbCombineDisjointOverReverseU fbCombineSaturateU
#define fbCombineDisjointOverReverseC fbCombineSaturateC
void
fbCombineDisjointInU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointInC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointInReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointInReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointOutU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointOutC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointOutReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointOutReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointAtopU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointAtopC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointAtopReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointAtopReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointXorU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineDisjointXorC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
CARD8
fbCombineConjointOutPart (CARD8 a, CARD8 b);
CARD8
fbCombineConjointInPart (CARD8 a, CARD8 b);
void
fbCombineConjointGeneralU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst,
CARD8 combine);
void
fbCombineConjointGeneralC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst,
CARD8 combine);
void
fbCombineConjointOverU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOverC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOverReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOverReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointInU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointInC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointInReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointInReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOutU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOutC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOutReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointOutReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointAtopU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointAtopC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointAtopReverseU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointAtopReverseC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointXorU (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
void
fbCombineConjointXorC (FbCompositeOperand *src,
FbCompositeOperand *msk,
FbCompositeOperand *dst);
/*
* All fetch functions
*/
CARD32
fbFetch_a8r8g8b8 (FbCompositeOperand *op);
CARD32
fbFetch_x8r8g8b8 (FbCompositeOperand *op);
CARD32
fbFetch_a8b8g8r8 (FbCompositeOperand *op);
CARD32
fbFetch_x8b8g8r8 (FbCompositeOperand *op);
CARD32
fbFetch_r8g8b8 (FbCompositeOperand *op);
CARD32
fbFetch_b8g8r8 (FbCompositeOperand *op);
CARD32
fbFetch_r5g6b5 (FbCompositeOperand *op);
CARD32
fbFetch_b5g6r5 (FbCompositeOperand *op);
CARD32
fbFetch_a1r5g5b5 (FbCompositeOperand *op);
CARD32
fbFetch_x1r5g5b5 (FbCompositeOperand *op);
CARD32
fbFetch_a1b5g5r5 (FbCompositeOperand *op);
CARD32
fbFetch_x1b5g5r5 (FbCompositeOperand *op);
CARD32
fbFetch_a4r4g4b4 (FbCompositeOperand *op);
CARD32
fbFetch_x4r4g4b4 (FbCompositeOperand *op);
CARD32
fbFetch_a4b4g4r4 (FbCompositeOperand *op);
CARD32
fbFetch_x4b4g4r4 (FbCompositeOperand *op);
CARD32
fbFetch_a8 (FbCompositeOperand *op);
CARD32
fbFetcha_a8 (FbCompositeOperand *op);
CARD32
fbFetch_r3g3b2 (FbCompositeOperand *op);
CARD32
fbFetch_b2g3r3 (FbCompositeOperand *op);
CARD32
fbFetch_a2r2g2b2 (FbCompositeOperand *op);
CARD32
fbFetch_a2b2g2r2 (FbCompositeOperand *op);
CARD32
fbFetch_c8 (FbCompositeOperand *op);
CARD32
fbFetch_a4 (FbCompositeOperand *op);
CARD32
fbFetcha_a4 (FbCompositeOperand *op);
CARD32
fbFetch_r1g2b1 (FbCompositeOperand *op);
CARD32
fbFetch_b1g2r1 (FbCompositeOperand *op);
CARD32
fbFetch_a1r1g1b1 (FbCompositeOperand *op);
CARD32
fbFetch_a1b1g1r1 (FbCompositeOperand *op);
CARD32
fbFetch_c4 (FbCompositeOperand *op);
CARD32
fbFetch_a1 (FbCompositeOperand *op);
CARD32
fbFetcha_a1 (FbCompositeOperand *op);
CARD32
fbFetch_g1 (FbCompositeOperand *op);
void
fbStore_a8r8g8b8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_x8r8g8b8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a8b8g8r8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_x8b8g8r8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_r8g8b8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_b8g8r8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_r5g6b5 (FbCompositeOperand *op, CARD32 value);
void
fbStore_b5g6r5 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a1r5g5b5 (FbCompositeOperand *op, CARD32 value);
void
fbStore_x1r5g5b5 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a1b5g5r5 (FbCompositeOperand *op, CARD32 value);
void
fbStore_x1b5g5r5 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a4r4g4b4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_x4r4g4b4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a4b4g4r4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_x4b4g4r4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_r3g3b2 (FbCompositeOperand *op, CARD32 value);
void
fbStore_b2g3r3 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a2r2g2b2 (FbCompositeOperand *op, CARD32 value);
void
fbStore_c8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_g8 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_r1g2b1 (FbCompositeOperand *op, CARD32 value);
void
fbStore_b1g2r1 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a1r1g1b1 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a1b1g1r1 (FbCompositeOperand *op, CARD32 value);
void
fbStore_c4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_g4 (FbCompositeOperand *op, CARD32 value);
void
fbStore_a1 (FbCompositeOperand *op, CARD32 value);
void
fbStore_g1 (FbCompositeOperand *op, CARD32 value);
CARD32
fbFetch_external (FbCompositeOperand *op);
CARD32
fbFetch_transform (FbCompositeOperand *op);
CARD32
fbFetcha_transform (FbCompositeOperand *op);
CARD32
fbFetcha_external (FbCompositeOperand *op);
void
fbStore_external (FbCompositeOperand *op, CARD32 value);
Bool
fbBuildOneCompositeOperand (PicturePtr pPict,
FbCompositeOperand *op,
INT16 x,
INT16 y);
Bool
fbBuildCompositeOperand (PicturePtr pPict,
FbCompositeOperand *op,
INT16 x,
INT16 y,
Bool transform,
Bool alpha);
void
fbCompositeGeneral (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
/* fbedge.c */
void
fbRasterizeEdges (FbBits *buf,
int bpp,
int width,
int stride,
RenderEdge *l,
RenderEdge *r,
xFixed t,
xFixed b);
/* fbpict.c */
CARD32
fbOver (CARD32 x, CARD32 y);
CARD32
fbOver24 (CARD32 x, CARD32 y);
CARD32
fbIn (CARD32 x, CARD8 y);
void
fbCompositeSolidMask_nx8x8888 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSolidMask_nx8x0888 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSolidMask_nx8888x8888C (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSolidMask_nx8x0565 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSolidMask_nx8888x0565C (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrc_8888x8888 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrc_8888x0888 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrc_8888x0565 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrc_0565x0565 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrcAdd_8000x8000 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrcAdd_8888x8888 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSrcAdd_1000x1000 (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbCompositeSolidMask_nx1xn (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
void
fbComposite (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst,
INT16 yDst,
CARD16 width,
CARD16 height);
/* fbtrap.c */
void
fbAddTraps (PicturePtr pPicture,
INT16 xOff,
INT16 yOff,
int ntrap,
xTrap *traps);
void
fbRasterizeTrapezoid (PicturePtr alpha,
xTrapezoid *trap,
int x_off,
int y_off);
void
fbAddTriangles (PicturePtr pPicture,
INT16 xOff,
INT16 yOff,
int ntri,
xTriangle *tris);
#endif /* _FBPICT_H_ */