1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/liboil/src/fb/fbpict.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,610 @@
1.4 +/*
1.5 + * $XFree86: xc/programs/Xserver/fb/fbpict.h,v 1.7 2001/07/18 10:15:02 keithp Exp $
1.6 + *
1.7 + * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
1.8 + *
1.9 + * Permission to use, copy, modify, distribute, and sell this software and its
1.10 + * documentation for any purpose is hereby granted without fee, provided that
1.11 + * the above copyright notice appear in all copies and that both that
1.12 + * copyright notice and this permission notice appear in supporting
1.13 + * documentation, and that the name of Keith Packard not be used in
1.14 + * advertising or publicity pertaining to distribution of the software without
1.15 + * specific, written prior permission. Keith Packard makes no
1.16 + * representations about the suitability of this software for any purpose. It
1.17 + * is provided "as is" without express or implied warranty.
1.18 + *
1.19 + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1.20 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
1.21 + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
1.22 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
1.23 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1.24 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1.25 + * PERFORMANCE OF THIS SOFTWARE.
1.26 + */
1.27 +
1.28 +#ifdef HAVE_DIX_CONFIG_H
1.29 +#include <dix-config.h>
1.30 +#endif
1.31 +
1.32 +#ifndef _FBPICT_H_
1.33 +#define _FBPICT_H_
1.34 +
1.35 +//#include "renderedge.h"
1.36 +
1.37 +#define FbIntMult(a,b,t) ( (t) = (a) * (b) + 0x80, ( ( ( (t)>>8 ) + (t) )>>8 ) )
1.38 +#define FbIntDiv(a,b) (((CARD16) (a) * 255) / (b))
1.39 +
1.40 +#define FbGet8(v,i) ((CARD16) (CARD8) ((v) >> i))
1.41 +
1.42 +/*
1.43 + * There are two ways of handling alpha -- either as a single unified value or
1.44 + * a separate value for each component, hence each macro must have two
1.45 + * versions. The unified alpha version has a 'U' at the end of the name,
1.46 + * the component version has a 'C'. Similarly, functions which deal with
1.47 + * this difference will have two versions using the same convention.
1.48 + */
1.49 +
1.50 +#define FbOverU(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),(a),(t)) + FbGet8(x,i),\
1.51 + (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
1.52 +
1.53 +#define FbOverC(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),FbGet8(a,i),(t)) + FbGet8(x,i),\
1.54 + (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
1.55 +
1.56 +#define FbInU(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),(a),(t)) << (i))
1.57 +
1.58 +#define FbInC(x,i,a,t) ((CARD32) FbIntMult(FbGet8(x,i),FbGet8(a,i),(t)) << (i))
1.59 +
1.60 +#define FbGen(x,y,i,ax,ay,t,u,v) ((t) = (FbIntMult(FbGet8(y,i),ay,(u)) + \
1.61 + FbIntMult(FbGet8(x,i),ax,(v))),\
1.62 + (CARD32) ((CARD8) ((t) | \
1.63 + (0 - ((t) >> 8)))) << (i))
1.64 +
1.65 +#define FbAdd(x,y,i,t) ((t) = FbGet8(x,i) + FbGet8(y,i), \
1.66 + (CARD32) ((CARD8) ((t) | (0 - ((t) >> 8)))) << (i))
1.67 +
1.68 +
1.69 +#define Alpha(x) ((x) >> 24)
1.70 +#define Red(x) (((x) >> 16) & 0xff)
1.71 +#define Green(x) (((x) >> 8) & 0xff)
1.72 +#define Blue(x) ((x) & 0xff)
1.73 +
1.74 +#define fbComposeGetSolid(pict, bits, fmt) { \
1.75 + FbBits *__bits__; \
1.76 + FbStride __stride__; \
1.77 + int __bpp__; \
1.78 + int __xoff__,__yoff__; \
1.79 +\
1.80 + fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
1.81 + switch (__bpp__) { \
1.82 + case 32: \
1.83 + (bits) = *(CARD32 *) __bits__; \
1.84 + break; \
1.85 + case 24: \
1.86 + (bits) = Fetch24 ((CARD8 *) __bits__); \
1.87 + break; \
1.88 + case 16: \
1.89 + (bits) = *(CARD16 *) __bits__; \
1.90 + (bits) = cvt0565to8888(bits); \
1.91 + break; \
1.92 + default: \
1.93 + return; \
1.94 + } \
1.95 + /* If necessary, convert RGB <--> BGR. */ \
1.96 + if (PICT_FORMAT_TYPE((pict)->format) != PICT_FORMAT_TYPE(fmt)) \
1.97 + { \
1.98 + (bits) = (((bits) & 0xff000000) | \
1.99 + (((bits) & 0x00ff0000) >> 16) | \
1.100 + (((bits) & 0x0000ff00) >> 0) | \
1.101 + (((bits) & 0x000000ff) << 16)); \
1.102 + } \
1.103 + /* manage missing src alpha */ \
1.104 + if ((pict)->pFormat->direct.alphaMask == 0) \
1.105 + (bits) |= 0xff000000; \
1.106 +}
1.107 +
1.108 +#define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
1.109 + FbBits *__bits__; \
1.110 + FbStride __stride__; \
1.111 + int __bpp__; \
1.112 + int __xoff__,__yoff__; \
1.113 +\
1.114 + fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
1.115 + (stride) = __stride__ * sizeof (FbBits) / sizeof (type); \
1.116 + (line) = ((type *) __bits__) + (stride) * ((y) - __yoff__) + (mul) * ((x) - __xoff__); \
1.117 +}
1.118 +#define cvt8888to0565(s) ((((s) >> 3) & 0x001f) | \
1.119 + (((s) >> 5) & 0x07e0) | \
1.120 + (((s) >> 8) & 0xf800))
1.121 +#define cvt0565to8888(s) (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
1.122 + ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
1.123 + ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
1.124 +
1.125 +#if IMAGE_BYTE_ORDER == MSBFirst
1.126 +#define Fetch24(a) ((unsigned long) (a) & 1 ? \
1.127 + ((*(a) << 16) | *((CARD16 *) ((a)+1))) : \
1.128 + ((*((CARD16 *) (a)) << 8) | *((a)+2)))
1.129 +#define Store24(a,v) ((unsigned long) (a) & 1 ? \
1.130 + ((*(a) = (CARD8) ((v) >> 16)), \
1.131 + (*((CARD16 *) ((a)+1)) = (CARD16) (v))) : \
1.132 + ((*((CARD16 *) (a)) = (CARD16) ((v) >> 8)), \
1.133 + (*((a)+2) = (CARD8) (v))))
1.134 +#else
1.135 +#define Fetch24(a) ((unsigned long) (a) & 1 ? \
1.136 + ((*(a)) | (*((CARD16 *) ((a)+1)) << 8)) : \
1.137 + ((*((CARD16 *) (a))) | (*((a)+2) << 16)))
1.138 +#define Store24(a,v) ((unsigned long) (a) & 1 ? \
1.139 + ((*(a) = (CARD8) (v)), \
1.140 + (*((CARD16 *) ((a)+1)) = (CARD16) ((v) >> 8))) : \
1.141 + ((*((CARD16 *) (a)) = (CARD16) (v)),\
1.142 + (*((a)+2) = (CARD8) ((v) >> 16))))
1.143 +#endif
1.144 +
1.145 +/*
1.146 + The methods below use some tricks to be able to do two color
1.147 + components at the same time.
1.148 +*/
1.149 +
1.150 +/*
1.151 + x_c = (x_c * a) / 255
1.152 +*/
1.153 +#define FbByteMul(x, a) do { \
1.154 + CARD32 t = (x & 0xff00ff) *a; \
1.155 + t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; \
1.156 + t &= 0xff00ff; \
1.157 + \
1.158 + x = ((x >> 8) & 0xff00ff) * a; \
1.159 + x = (x + ((x >> 8) & 0xff00ff) + 0x800080); \
1.160 + x &= 0xff00ff00; \
1.161 + x += t; \
1.162 + } while (0)
1.163 +
1.164 +/*
1.165 + x_c = (x_c * a) / 255 + y
1.166 +*/
1.167 +#define FbByteMulAdd(x, a, y) do { \
1.168 + CARD32 t = (x & 0xff00ff) * a; \
1.169 + t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; \
1.170 + t &= 0xff00ff; \
1.171 + t += y & 0xff00ff; \
1.172 + t |= 0x1000100 - ((t >> 8) & 0xff00ff); \
1.173 + t &= 0xff00ff; \
1.174 + \
1.175 + x = ((x >> 8) & 0xff00ff) * a; \
1.176 + x = (x + ((x >> 8) & 0xff00ff) + 0x800080) >> 8; \
1.177 + x &= 0xff00ff; \
1.178 + x += (y >> 8) & 0xff00ff; \
1.179 + x |= 0x1000100 - ((t >> 8) & 0xff00ff); \
1.180 + x &= 0xff00ff; \
1.181 + x <<= 8; \
1.182 + x += t; \
1.183 + } while (0)
1.184 +
1.185 +/*
1.186 + x_c = (x_c * a + y_c * b) / 255
1.187 +*/
1.188 +#define FbByteAddMul(x, a, y, b) do { \
1.189 + CARD32 t; \
1.190 + CARD32 r = (x >> 24) * a + (y >> 24) * b; \
1.191 + r += (r >> 8) + 0x80; \
1.192 + r >>= 8; \
1.193 + \
1.194 + t = (x & 0xff00) * a + (y & 0xff00) * b; \
1.195 + t += (t >> 8) + 0x8000; \
1.196 + t >>= 16; \
1.197 + \
1.198 + t |= r << 16; \
1.199 + t |= 0x1000100 - ((t >> 8) & 0xff00ff); \
1.200 + t &= 0xff00ff; \
1.201 + t <<= 8; \
1.202 + \
1.203 + r = ((x >> 16) & 0xff) * a + ((y >> 16) & 0xff) * b; \
1.204 + r += (r >> 8) + 0x80; \
1.205 + r >>= 8; \
1.206 + \
1.207 + x = (x & 0xff) * a + (y & 0xff) * b; \
1.208 + x += (x >> 8) + 0x80; \
1.209 + x >>= 8; \
1.210 + x |= r << 16; \
1.211 + x |= 0x1000100 - ((x >> 8) & 0xff00ff); \
1.212 + x &= 0xff00ff; \
1.213 + x |= t; \
1.214 +} while (0)
1.215 +
1.216 +/*
1.217 + x_c = (x_c * a + y_c *b) / 256
1.218 +*/
1.219 +#define FbByteAddMul_256(x, a, y, b) do { \
1.220 + CARD32 t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; \
1.221 + t >>= 8; \
1.222 + t &= 0xff00ff; \
1.223 + \
1.224 + x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; \
1.225 + x &= 0xff00ff00; \
1.226 + x += t; \
1.227 +} while (0)
1.228 +/*
1.229 + x_c = (x_c * a_c) / 255
1.230 +*/
1.231 +#define FbByteMulC(x, a) do { \
1.232 + CARD32 t; \
1.233 + CARD32 r = (x & 0xff) * (a & 0xff); \
1.234 + r |= (x & 0xff0000) * ((a >> 16) & 0xff); \
1.235 + r = (r + ((r >> 8) & 0xff00ff) + 0x800080) >> 8; \
1.236 + r &= 0xff00ff; \
1.237 + \
1.238 + x >>= 8; \
1.239 + t = (x & 0xff) * ((a >> 8) & 0xff); \
1.240 + t |= (x & 0xff0000) * (a >> 24); \
1.241 + t = (t + ((t >> 8) & 0xff00ff) + 0x800080); \
1.242 + x = r | (t & 0xff00ff00); \
1.243 + \
1.244 + } while (0)
1.245 +
1.246 +/*
1.247 + x_c = (x_c * a) / 255 + y
1.248 +*/
1.249 +#define FbByteMulAddC(x, a, y) do { \
1.250 + CARD32 t; \
1.251 + CARD32 r = (x & 0xff) * (a & 0xff); \
1.252 + r |= (x & 0xff0000) * ((a >> 16) & 0xff); \
1.253 + r = (r + ((r >> 8) & 0xff00ff) + 0x800080) >> 8; \
1.254 + r &= 0xff00ff; \
1.255 + r += y & 0xff00ff; \
1.256 + r |= 0x1000100 - ((r >> 8) & 0xff00ff); \
1.257 + r &= 0xff00ff; \
1.258 + \
1.259 + x >>= 8; \
1.260 + t = (x & 0xff) * ((a >> 8) & 0xff); \
1.261 + t |= (x & 0xff0000) * (a >> 24); \
1.262 + t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; \
1.263 + t &= 0xff00ff; \
1.264 + t += (y >> 8) & 0xff00ff; \
1.265 + t |= 0x1000100 - ((t >> 8) & 0xff00ff); \
1.266 + t &= 0xff00ff; \
1.267 + x = r | (t << 8); \
1.268 + } while (0)
1.269 +
1.270 +/*
1.271 + x_c = (x_c * a_c + y_c * b) / 255
1.272 +*/
1.273 +#define FbByteAddMulC(x, a, y, b) do { \
1.274 + CARD32 t; \
1.275 + CARD32 r = (x >> 24) * (a >> 24) + (y >> 24) * b; \
1.276 + r += (r >> 8) + 0x80; \
1.277 + r >>= 8; \
1.278 + \
1.279 + t = (x & 0xff00) * ((a >> 8) & 0xff) + (y & 0xff00) * b; \
1.280 + t += (t >> 8) + 0x8000; \
1.281 + t >>= 16; \
1.282 + \
1.283 + t |= r << 16; \
1.284 + t |= 0x1000100 - ((t >> 8) & 0xff00ff); \
1.285 + t &= 0xff00ff; \
1.286 + t <<= 8; \
1.287 + \
1.288 + r = ((x >> 16) & 0xff) * ((a >> 16) & 0xff) + ((y >> 16) & 0xff) * b; \
1.289 + r += (r >> 8) + 0x80; \
1.290 + r >>= 8; \
1.291 + \
1.292 + x = (x & 0xff) * (a & 0xff) + (y & 0xff) * b; \
1.293 + x += (x >> 8) + 0x80; \
1.294 + x >>= 8; \
1.295 + x |= r << 16; \
1.296 + x |= 0x1000100 - ((x >> 8) & 0xff00ff); \
1.297 + x &= 0xff00ff; \
1.298 + x |= t; \
1.299 + } while (0)
1.300 +
1.301 +/*
1.302 + x_c = min(x_c + y_c, 255)
1.303 +*/
1.304 +#define FbByteAdd(x, y) do { \
1.305 + CARD32 t; \
1.306 + CARD32 r = (x & 0xff00ff) + (y & 0xff00ff); \
1.307 + r |= 0x1000100 - ((r >> 8) & 0xff00ff); \
1.308 + r &= 0xff00ff; \
1.309 + \
1.310 + t = ((x >> 8) & 0xff00ff) + ((y >> 8) & 0xff00ff); \
1.311 + t |= 0x1000100 - ((t >> 8) & 0xff00ff); \
1.312 + r |= (t & 0xff00ff) << 8; \
1.313 + x = r; \
1.314 + } while (0)
1.315 +
1.316 +#define div_255(x) (((x) + ((x) >> 8) + 0x80) >> 8)
1.317 +
1.318 +#if defined(__i386__) && defined(__GNUC__)
1.319 +#define FASTCALL __attribute__((regparm(3)))
1.320 +#else
1.321 +#define FASTCALL
1.322 +#endif
1.323 +
1.324 +#if defined(__GNUC__)
1.325 +#define INLINE __inline__
1.326 +#else
1.327 +#define INLINE
1.328 +#endif
1.329 +
1.330 +typedef struct _FbComposeData {
1.331 + CARD8 op;
1.332 + PicturePtr src;
1.333 + PicturePtr mask;
1.334 + PicturePtr dest;
1.335 + INT16 xSrc;
1.336 + INT16 ySrc;
1.337 + INT16 xMask;
1.338 + INT16 yMask;
1.339 + INT16 xDest;
1.340 + INT16 yDest;
1.341 + CARD16 width;
1.342 + CARD16 height;
1.343 +} FbComposeData;
1.344 +
1.345 +#if 0
1.346 +typedef FASTCALL void (*CombineMaskU) (CARD32 *src, const CARD32 *mask, int width);
1.347 +typedef FASTCALL void (*CombineFuncU) (CARD32 *dest, const CARD32 *src, int width);
1.348 +typedef FASTCALL void (*CombineFuncC) (CARD32 *dest, CARD32 *src, CARD32 *mask, int width);
1.349 +
1.350 +typedef struct _FbComposeFunctions {
1.351 + CombineFuncU *combineU;
1.352 + CombineFuncC *combineC;
1.353 + CombineMaskU combineMaskU;
1.354 +} FbComposeFunctions;
1.355 +
1.356 +/* fbcompose.c */
1.357 +
1.358 +void
1.359 +fbCompositeGeneral (CARD8 op,
1.360 + PicturePtr pSrc,
1.361 + PicturePtr pMask,
1.362 + PicturePtr pDst,
1.363 + INT16 xSrc,
1.364 + INT16 ySrc,
1.365 + INT16 xMask,
1.366 + INT16 yMask,
1.367 + INT16 xDst,
1.368 + INT16 yDst,
1.369 + CARD16 width,
1.370 + CARD16 height);
1.371 +
1.372 +
1.373 +/* fbedge.c */
1.374 +void
1.375 +fbRasterizeEdges (FbBits *buf,
1.376 + int bpp,
1.377 + int width,
1.378 + int stride,
1.379 + RenderEdge *l,
1.380 + RenderEdge *r,
1.381 + xFixed t,
1.382 + xFixed b);
1.383 +
1.384 +/* fbpict.c */
1.385 +CARD32
1.386 +fbOver (CARD32 x, CARD32 y);
1.387 +
1.388 +CARD32
1.389 +fbOver24 (CARD32 x, CARD32 y);
1.390 +
1.391 +CARD32
1.392 +fbIn (CARD32 x, CARD8 y);
1.393 +
1.394 +void
1.395 +fbCompositeSolidMask_nx8x8888 (CARD8 op,
1.396 + PicturePtr pSrc,
1.397 + PicturePtr pMask,
1.398 + PicturePtr pDst,
1.399 + INT16 xSrc,
1.400 + INT16 ySrc,
1.401 + INT16 xMask,
1.402 + INT16 yMask,
1.403 + INT16 xDst,
1.404 + INT16 yDst,
1.405 + CARD16 width,
1.406 + CARD16 height);
1.407 +
1.408 +void
1.409 +fbCompositeSolidMask_nx8x0888 (CARD8 op,
1.410 + PicturePtr pSrc,
1.411 + PicturePtr pMask,
1.412 + PicturePtr pDst,
1.413 + INT16 xSrc,
1.414 + INT16 ySrc,
1.415 + INT16 xMask,
1.416 + INT16 yMask,
1.417 + INT16 xDst,
1.418 + INT16 yDst,
1.419 + CARD16 width,
1.420 + CARD16 height);
1.421 +
1.422 +void
1.423 +fbCompositeSolidMask_nx8888x8888C (CARD8 op,
1.424 + PicturePtr pSrc,
1.425 + PicturePtr pMask,
1.426 + PicturePtr pDst,
1.427 + INT16 xSrc,
1.428 + INT16 ySrc,
1.429 + INT16 xMask,
1.430 + INT16 yMask,
1.431 + INT16 xDst,
1.432 + INT16 yDst,
1.433 + CARD16 width,
1.434 + CARD16 height);
1.435 +
1.436 +void
1.437 +fbCompositeSolidMask_nx8x0565 (CARD8 op,
1.438 + PicturePtr pSrc,
1.439 + PicturePtr pMask,
1.440 + PicturePtr pDst,
1.441 + INT16 xSrc,
1.442 + INT16 ySrc,
1.443 + INT16 xMask,
1.444 + INT16 yMask,
1.445 + INT16 xDst,
1.446 + INT16 yDst,
1.447 + CARD16 width,
1.448 + CARD16 height);
1.449 +
1.450 +void
1.451 +fbCompositeSolidMask_nx8888x0565C (CARD8 op,
1.452 + PicturePtr pSrc,
1.453 + PicturePtr pMask,
1.454 + PicturePtr pDst,
1.455 + INT16 xSrc,
1.456 + INT16 ySrc,
1.457 + INT16 xMask,
1.458 + INT16 yMask,
1.459 + INT16 xDst,
1.460 + INT16 yDst,
1.461 + CARD16 width,
1.462 + CARD16 height);
1.463 +
1.464 +void
1.465 +fbCompositeSrc_8888x8888 (CARD8 op,
1.466 + PicturePtr pSrc,
1.467 + PicturePtr pMask,
1.468 + PicturePtr pDst,
1.469 + INT16 xSrc,
1.470 + INT16 ySrc,
1.471 + INT16 xMask,
1.472 + INT16 yMask,
1.473 + INT16 xDst,
1.474 + INT16 yDst,
1.475 + CARD16 width,
1.476 + CARD16 height);
1.477 +
1.478 +void
1.479 +fbCompositeSrc_8888x0888 (CARD8 op,
1.480 + PicturePtr pSrc,
1.481 + PicturePtr pMask,
1.482 + PicturePtr pDst,
1.483 + INT16 xSrc,
1.484 + INT16 ySrc,
1.485 + INT16 xMask,
1.486 + INT16 yMask,
1.487 + INT16 xDst,
1.488 + INT16 yDst,
1.489 + CARD16 width,
1.490 + CARD16 height);
1.491 +
1.492 +void
1.493 +fbCompositeSrc_8888x0565 (CARD8 op,
1.494 + PicturePtr pSrc,
1.495 + PicturePtr pMask,
1.496 + PicturePtr pDst,
1.497 + INT16 xSrc,
1.498 + INT16 ySrc,
1.499 + INT16 xMask,
1.500 + INT16 yMask,
1.501 + INT16 xDst,
1.502 + INT16 yDst,
1.503 + CARD16 width,
1.504 + CARD16 height);
1.505 +
1.506 +void
1.507 +fbCompositeSrc_0565x0565 (CARD8 op,
1.508 + PicturePtr pSrc,
1.509 + PicturePtr pMask,
1.510 + PicturePtr pDst,
1.511 + INT16 xSrc,
1.512 + INT16 ySrc,
1.513 + INT16 xMask,
1.514 + INT16 yMask,
1.515 + INT16 xDst,
1.516 + INT16 yDst,
1.517 + CARD16 width,
1.518 + CARD16 height);
1.519 +
1.520 +void
1.521 +fbCompositeSrcAdd_8000x8000 (CARD8 op,
1.522 + PicturePtr pSrc,
1.523 + PicturePtr pMask,
1.524 + PicturePtr pDst,
1.525 + INT16 xSrc,
1.526 + INT16 ySrc,
1.527 + INT16 xMask,
1.528 + INT16 yMask,
1.529 + INT16 xDst,
1.530 + INT16 yDst,
1.531 + CARD16 width,
1.532 + CARD16 height);
1.533 +
1.534 +void
1.535 +fbCompositeSrcAdd_8888x8888 (CARD8 op,
1.536 + PicturePtr pSrc,
1.537 + PicturePtr pMask,
1.538 + PicturePtr pDst,
1.539 + INT16 xSrc,
1.540 + INT16 ySrc,
1.541 + INT16 xMask,
1.542 + INT16 yMask,
1.543 + INT16 xDst,
1.544 + INT16 yDst,
1.545 + CARD16 width,
1.546 + CARD16 height);
1.547 +
1.548 +void
1.549 +fbCompositeSrcAdd_1000x1000 (CARD8 op,
1.550 + PicturePtr pSrc,
1.551 + PicturePtr pMask,
1.552 + PicturePtr pDst,
1.553 + INT16 xSrc,
1.554 + INT16 ySrc,
1.555 + INT16 xMask,
1.556 + INT16 yMask,
1.557 + INT16 xDst,
1.558 + INT16 yDst,
1.559 + CARD16 width,
1.560 + CARD16 height);
1.561 +
1.562 +void
1.563 +fbCompositeSolidMask_nx1xn (CARD8 op,
1.564 + PicturePtr pSrc,
1.565 + PicturePtr pMask,
1.566 + PicturePtr pDst,
1.567 + INT16 xSrc,
1.568 + INT16 ySrc,
1.569 + INT16 xMask,
1.570 + INT16 yMask,
1.571 + INT16 xDst,
1.572 + INT16 yDst,
1.573 + CARD16 width,
1.574 + CARD16 height);
1.575 +
1.576 +void
1.577 +fbComposite (CARD8 op,
1.578 + PicturePtr pSrc,
1.579 + PicturePtr pMask,
1.580 + PicturePtr pDst,
1.581 + INT16 xSrc,
1.582 + INT16 ySrc,
1.583 + INT16 xMask,
1.584 + INT16 yMask,
1.585 + INT16 xDst,
1.586 + INT16 yDst,
1.587 + CARD16 width,
1.588 + CARD16 height);
1.589 +
1.590 +/* fbtrap.c */
1.591 +
1.592 +void
1.593 +fbAddTraps (PicturePtr pPicture,
1.594 + INT16 xOff,
1.595 + INT16 yOff,
1.596 + int ntrap,
1.597 + xTrap *traps);
1.598 +
1.599 +void
1.600 +fbRasterizeTrapezoid (PicturePtr alpha,
1.601 + xTrapezoid *trap,
1.602 + int x_off,
1.603 + int y_off);
1.604 +
1.605 +void
1.606 +fbAddTriangles (PicturePtr pPicture,
1.607 + INT16 xOff,
1.608 + INT16 yOff,
1.609 + int ntri,
1.610 + xTriangle *tris);
1.611 +#endif
1.612 +
1.613 +#endif /* _FBPICT_H_ */