VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.18.0/fb.h@ 102435

Last change on this file since 102435 was 58634, checked in by vboxsync, 9 years ago

Additions/x11: added header files for building X.Org video driver against X.Org Server 1.18.

  • Property svn:eol-style set to native
File size: 36.1 KB
Line 
1/*
2 *
3 * Copyright © 1998 Keith Packard
4 *
5 * Permission to use, copy, modify, distribute, and sell this software and its
6 * documentation for any purpose is hereby granted without fee, provided that
7 * the above copyright notice appear in all copies and that both that
8 * copyright notice and this permission notice appear in supporting
9 * documentation, and that the name of Keith Packard not be used in
10 * advertising or publicity pertaining to distribution of the software without
11 * specific, written prior permission. Keith Packard makes no
12 * representations about the suitability of this software for any purpose. It
13 * is provided "as is" without express or implied warranty.
14 *
15 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
17 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
19 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
21 * PERFORMANCE OF THIS SOFTWARE.
22 */
23
24#ifndef _FB_H_
25#define _FB_H_
26
27#include <X11/X.h>
28#include <pixman.h>
29
30#include "scrnintstr.h"
31#include "pixmap.h"
32#include "pixmapstr.h"
33#include "region.h"
34#include "gcstruct.h"
35#include "colormap.h"
36#include "miscstruct.h"
37#include "servermd.h"
38#include "windowstr.h"
39#include "privates.h"
40#include "mi.h"
41#include "migc.h"
42#include "picturestr.h"
43
44#ifdef FB_ACCESS_WRAPPER
45
46#include "wfbrename.h"
47#define FBPREFIX(x) wfb##x
48#define WRITE(ptr, val) ((*wfbWriteMemory)((ptr), (val), sizeof(*(ptr))))
49#define READ(ptr) ((*wfbReadMemory)((ptr), sizeof(*(ptr))))
50
51#define MEMCPY_WRAPPED(dst, src, size) do { \
52 size_t _i; \
53 CARD8 *_dst = (CARD8*)(dst), *_src = (CARD8*)(src); \
54 for(_i = 0; _i < size; _i++) { \
55 WRITE(_dst +_i, READ(_src + _i)); \
56 } \
57} while(0)
58
59#define MEMSET_WRAPPED(dst, val, size) do { \
60 size_t _i; \
61 CARD8 *_dst = (CARD8*)(dst); \
62 for(_i = 0; _i < size; _i++) { \
63 WRITE(_dst +_i, (val)); \
64 } \
65} while(0)
66
67#else
68
69#define FBPREFIX(x) fb##x
70#define WRITE(ptr, val) (*(ptr) = (val))
71#define READ(ptr) (*(ptr))
72#define MEMCPY_WRAPPED(dst, src, size) memcpy((dst), (src), (size))
73#define MEMSET_WRAPPED(dst, val, size) memset((dst), (val), (size))
74
75#endif
76
77/*
78 * This single define controls the basic size of data manipulated
79 * by this software; it must be log2(sizeof (FbBits) * 8)
80 */
81
82#ifndef FB_SHIFT
83#define FB_SHIFT LOG2_BITMAP_PAD
84#endif
85
86#define FB_UNIT (1 << FB_SHIFT)
87#define FB_MASK (FB_UNIT - 1)
88#define FB_ALLONES ((FbBits) -1)
89#if GLYPHPADBYTES != 4
90#error "GLYPHPADBYTES must be 4"
91#endif
92/* for driver compat - intel UXA needs the second one at least */
93#define FB_24BIT
94#define FB_24_32BIT
95#define FB_STIP_SHIFT LOG2_BITMAP_PAD
96#define FB_STIP_UNIT (1 << FB_STIP_SHIFT)
97#define FB_STIP_MASK (FB_STIP_UNIT - 1)
98#define FB_STIP_ALLONES ((FbStip) -1)
99#define FB_STIP_ODDSTRIDE(s) (((s) & (FB_MASK >> FB_STIP_SHIFT)) != 0)
100#define FB_STIP_ODDPTR(p) ((((long) (p)) & (FB_MASK >> 3)) != 0)
101#define FbStipStrideToBitsStride(s) (((s) >> (FB_SHIFT - FB_STIP_SHIFT)))
102#define FbBitsStrideToStipStride(s) (((s) << (FB_SHIFT - FB_STIP_SHIFT)))
103#define FbFullMask(n) ((n) == FB_UNIT ? FB_ALLONES : ((((FbBits) 1) << n) - 1))
104
105#if FB_SHIFT == 5
106typedef CARD32 FbBits;
107#else
108#error "Unsupported FB_SHIFT"
109#endif
110
111#if LOG2_BITMAP_PAD == FB_SHIFT
112typedef FbBits FbStip;
113#endif
114
115typedef int FbStride;
116
117#ifdef FB_DEBUG
118extern _X_EXPORT void fbValidateDrawable(DrawablePtr d);
119extern _X_EXPORT void fbInitializeDrawable(DrawablePtr d);
120extern _X_EXPORT void fbSetBits(FbStip * bits, int stride, FbStip data);
121
122#define FB_HEAD_BITS (FbStip) (0xbaadf00d)
123#define FB_TAIL_BITS (FbStip) (0xbaddf0ad)
124#else
125#define fbValidateDrawable(d)
126#define fdInitializeDrawable(d)
127#endif
128
129#include "fbrop.h"
130
131#if BITMAP_BIT_ORDER == LSBFirst
132#define FbScrLeft(x,n) ((x) >> (n))
133#define FbScrRight(x,n) ((x) << (n))
134/* #define FbLeftBits(x,n) ((x) & ((((FbBits) 1) << (n)) - 1)) */
135#define FbLeftStipBits(x,n) ((x) & ((((FbStip) 1) << (n)) - 1))
136#define FbStipMoveLsb(x,s,n) (FbStipRight (x,(s)-(n)))
137#define FbPatternOffsetBits 0
138#else
139#define FbScrLeft(x,n) ((x) << (n))
140#define FbScrRight(x,n) ((x) >> (n))
141/* #define FbLeftBits(x,n) ((x) >> (FB_UNIT - (n))) */
142#define FbLeftStipBits(x,n) ((x) >> (FB_STIP_UNIT - (n)))
143#define FbStipMoveLsb(x,s,n) (x)
144#define FbPatternOffsetBits (sizeof (FbBits) - 1)
145#endif
146
147#include "micoord.h"
148
149#define FbStipLeft(x,n) FbScrLeft(x,n)
150#define FbStipRight(x,n) FbScrRight(x,n)
151
152#define FbRotLeft(x,n) FbScrLeft(x,n) | (n ? FbScrRight(x,FB_UNIT-n) : 0)
153#define FbRotRight(x,n) FbScrRight(x,n) | (n ? FbScrLeft(x,FB_UNIT-n) : 0)
154
155#define FbRotStipLeft(x,n) FbStipLeft(x,n) | (n ? FbStipRight(x,FB_STIP_UNIT-n) : 0)
156#define FbRotStipRight(x,n) FbStipRight(x,n) | (n ? FbStipLeft(x,FB_STIP_UNIT-n) : 0)
157
158#define FbLeftMask(x) ( ((x) & FB_MASK) ? \
159 FbScrRight(FB_ALLONES,(x) & FB_MASK) : 0)
160#define FbRightMask(x) ( ((FB_UNIT - (x)) & FB_MASK) ? \
161 FbScrLeft(FB_ALLONES,(FB_UNIT - (x)) & FB_MASK) : 0)
162
163#define FbLeftStipMask(x) ( ((x) & FB_STIP_MASK) ? \
164 FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) : 0)
165#define FbRightStipMask(x) ( ((FB_STIP_UNIT - (x)) & FB_STIP_MASK) ? \
166 FbScrLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - (x)) & FB_STIP_MASK) : 0)
167
168#define FbBitsMask(x,w) (FbScrRight(FB_ALLONES,(x) & FB_MASK) & \
169 FbScrLeft(FB_ALLONES,(FB_UNIT - ((x) + (w))) & FB_MASK))
170
171#define FbStipMask(x,w) (FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) & \
172 FbStipLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - ((x)+(w))) & FB_STIP_MASK))
173
174#define FbMaskBits(x,w,l,n,r) { \
175 n = (w); \
176 r = FbRightMask((x)+n); \
177 l = FbLeftMask(x); \
178 if (l) { \
179 n -= FB_UNIT - ((x) & FB_MASK); \
180 if (n < 0) { \
181 n = 0; \
182 l &= r; \
183 r = 0; \
184 } \
185 } \
186 n >>= FB_SHIFT; \
187}
188
189#define FbByteMaskInvalid 0x10
190
191#define FbPatternOffset(o,t) ((o) ^ (FbPatternOffsetBits & ~(sizeof (t) - 1)))
192
193#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o)))
194#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3))
195#define FbStorePart(dst,off,t,xor) (WRITE(FbPtrOffset(dst,off,t), \
196 FbSelectPart(xor,off,t)))
197#ifndef FbSelectPart
198#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t)
199#endif
200
201#define FbMaskBitsBytes(x,w,copy,l,lb,n,r,rb) { \
202 n = (w); \
203 lb = 0; \
204 rb = 0; \
205 r = FbRightMask((x)+n); \
206 if (r) { \
207 /* compute right byte length */ \
208 if ((copy) && (((x) + n) & 7) == 0) { \
209 rb = (((x) + n) & FB_MASK) >> 3; \
210 } else { \
211 rb = FbByteMaskInvalid; \
212 } \
213 } \
214 l = FbLeftMask(x); \
215 if (l) { \
216 /* compute left byte length */ \
217 if ((copy) && ((x) & 7) == 0) { \
218 lb = ((x) & FB_MASK) >> 3; \
219 } else { \
220 lb = FbByteMaskInvalid; \
221 } \
222 /* subtract out the portion painted by leftMask */ \
223 n -= FB_UNIT - ((x) & FB_MASK); \
224 if (n < 0) { \
225 if (lb != FbByteMaskInvalid) { \
226 if (rb == FbByteMaskInvalid) { \
227 lb = FbByteMaskInvalid; \
228 } else if (rb) { \
229 lb |= (rb - lb) << (FB_SHIFT - 3); \
230 rb = 0; \
231 } \
232 } \
233 n = 0; \
234 l &= r; \
235 r = 0; \
236 }\
237 } \
238 n >>= FB_SHIFT; \
239}
240
241#define FbDoLeftMaskByteRRop(dst,lb,l,and,xor) { \
242 switch (lb) { \
243 case (sizeof (FbBits) - 3) | (1 << (FB_SHIFT - 3)): \
244 FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \
245 break; \
246 case (sizeof (FbBits) - 3) | (2 << (FB_SHIFT - 3)): \
247 FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \
248 FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
249 break; \
250 case (sizeof (FbBits) - 2) | (1 << (FB_SHIFT - 3)): \
251 FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
252 break; \
253 case sizeof (FbBits) - 3: \
254 FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \
255 case sizeof (FbBits) - 2: \
256 FbStorePart(dst,sizeof (FbBits) - 2,CARD16,xor); \
257 break; \
258 case sizeof (FbBits) - 1: \
259 FbStorePart(dst,sizeof (FbBits) - 1,CARD8,xor); \
260 break; \
261 default: \
262 WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, l)); \
263 break; \
264 } \
265}
266
267#define FbDoRightMaskByteRRop(dst,rb,r,and,xor) { \
268 switch (rb) { \
269 case 1: \
270 FbStorePart(dst,0,CARD8,xor); \
271 break; \
272 case 2: \
273 FbStorePart(dst,0,CARD16,xor); \
274 break; \
275 case 3: \
276 FbStorePart(dst,0,CARD16,xor); \
277 FbStorePart(dst,2,CARD8,xor); \
278 break; \
279 default: \
280 WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, r)); \
281 } \
282}
283
284#define FbMaskStip(x,w,l,n,r) { \
285 n = (w); \
286 r = FbRightStipMask((x)+n); \
287 l = FbLeftStipMask(x); \
288 if (l) { \
289 n -= FB_STIP_UNIT - ((x) & FB_STIP_MASK); \
290 if (n < 0) { \
291 n = 0; \
292 l &= r; \
293 r = 0; \
294 } \
295 } \
296 n >>= FB_STIP_SHIFT; \
297}
298
299/*
300 * These macros are used to transparently stipple
301 * in copy mode; the expected usage is with 'n' constant
302 * so all of the conditional parts collapse into a minimal
303 * sequence of partial word writes
304 *
305 * 'n' is the bytemask of which bytes to store, 'a' is the address
306 * of the FbBits base unit, 'o' is the offset within that unit
307 *
308 * The term "lane" comes from the hardware term "byte-lane" which
309 */
310
311#define FbLaneCase1(n,a,o) \
312 if ((n) == 0x01) { \
313 WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), fgxor); \
314 }
315
316#define FbLaneCase2(n,a,o) \
317 if ((n) == 0x03) { \
318 WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), fgxor); \
319 } else { \
320 FbLaneCase1((n)&1,a,o) \
321 FbLaneCase1((n)>>1,a,(o)+1) \
322 }
323
324#define FbLaneCase4(n,a,o) \
325 if ((n) == 0x0f) { \
326 WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), fgxor); \
327 } else { \
328 FbLaneCase2((n)&3,a,o) \
329 FbLaneCase2((n)>>2,a,(o)+2) \
330 }
331
332#define FbLaneCase(n,a) FbLaneCase4(n,(CARD8 *) (a),0)
333
334/* Rotate a filled pixel value to the specified alignement */
335#define FbRot24(p,b) (FbScrRight(p,b) | FbScrLeft(p,24-(b)))
336#define FbRot24Stip(p,b) (FbStipRight(p,b) | FbStipLeft(p,24-(b)))
337
338/* step a filled pixel value to the next/previous FB_UNIT alignment */
339#define FbNext24Pix(p) (FbRot24(p,(24-FB_UNIT%24)))
340#define FbPrev24Pix(p) (FbRot24(p,FB_UNIT%24))
341#define FbNext24Stip(p) (FbRot24(p,(24-FB_STIP_UNIT%24)))
342#define FbPrev24Stip(p) (FbRot24(p,FB_STIP_UNIT%24))
343
344/* step a rotation value to the next/previous rotation value */
345#define FbNext24Rot(r) ((r) == 0 ? 16 : (r) - 8)
346#define FbPrev24Rot(r) ((r) == 16 ? 0 : (r) + 8)
347
348#if IMAGE_BYTE_ORDER == MSBFirst
349#define FbFirst24Rot(x) (((x) + 16) % 24)
350#else
351#define FbFirst24Rot(x) ((x) % 24)
352#endif
353
354#define FbNext24RotStip(r) ((r) == 0 ? 16 : (r) - 8)
355#define FbPrev24RotStip(r) ((r) == 16 ? 0 : (r) + 8)
356
357/* Whether 24-bit specific code is needed for this filled pixel value */
358#define FbCheck24Pix(p) ((p) == FbNext24Pix(p))
359
360/* Macros for dealing with dashing */
361
362#define FbDashDeclare \
363 unsigned char *__dash, *__firstDash, *__lastDash
364
365#define FbDashInit(pGC,pPriv,dashOffset,dashlen,even) { \
366 (even) = TRUE; \
367 __firstDash = (pGC)->dash; \
368 __lastDash = __firstDash + (pGC)->numInDashList; \
369 (dashOffset) %= (pPriv)->dashLength; \
370 \
371 __dash = __firstDash; \
372 while ((dashOffset) >= ((dashlen) = *__dash)) \
373 { \
374 (dashOffset) -= (dashlen); \
375 (even) = 1-(even); \
376 if (++__dash == __lastDash) \
377 __dash = __firstDash; \
378 } \
379 (dashlen) -= (dashOffset); \
380}
381
382#define FbDashNext(dashlen) { \
383 if (++__dash == __lastDash) \
384 __dash = __firstDash; \
385 (dashlen) = *__dash; \
386}
387
388/* as numInDashList is always even, this case can skip a test */
389
390#define FbDashNextEven(dashlen) { \
391 (dashlen) = *++__dash; \
392}
393
394#define FbDashNextOdd(dashlen) FbDashNext(dashlen)
395
396#define FbDashStep(dashlen,even) { \
397 if (!--(dashlen)) { \
398 FbDashNext(dashlen); \
399 (even) = 1-(even); \
400 } \
401}
402
403extern _X_EXPORT const GCOps fbGCOps;
404extern _X_EXPORT const GCFuncs fbGCFuncs;
405
406/* Framebuffer access wrapper */
407typedef FbBits(*ReadMemoryProcPtr) (const void *src, int size);
408typedef void (*WriteMemoryProcPtr) (void *dst, FbBits value, int size);
409typedef void (*SetupWrapProcPtr) (ReadMemoryProcPtr * pRead,
410 WriteMemoryProcPtr * pWrite,
411 DrawablePtr pDraw);
412typedef void (*FinishWrapProcPtr) (DrawablePtr pDraw);
413
414#ifdef FB_ACCESS_WRAPPER
415
416#define fbPrepareAccess(pDraw) \
417 fbGetScreenPrivate((pDraw)->pScreen)->setupWrap( \
418 &wfbReadMemory, \
419 &wfbWriteMemory, \
420 (pDraw))
421#define fbFinishAccess(pDraw) \
422 fbGetScreenPrivate((pDraw)->pScreen)->finishWrap(pDraw)
423
424#else
425
426#define fbPrepareAccess(pPix)
427#define fbFinishAccess(pDraw)
428
429#endif
430
431extern _X_EXPORT DevPrivateKey
432fbGetScreenPrivateKey(void);
433
434/* private field of a screen */
435typedef struct {
436 unsigned char win32bpp; /* window bpp for 32-bpp images */
437 unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */
438#ifdef FB_ACCESS_WRAPPER
439 SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */
440 FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */
441#endif
442 DevPrivateKeyRec gcPrivateKeyRec;
443 DevPrivateKeyRec winPrivateKeyRec;
444} FbScreenPrivRec, *FbScreenPrivPtr;
445
446#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
447 dixLookupPrivate(&(pScreen)->devPrivates, fbGetScreenPrivateKey()))
448
449/* private field of GC */
450typedef struct {
451 FbBits and, xor; /* reduced rop values */
452 FbBits bgand, bgxor; /* for stipples */
453 FbBits fg, bg, pm; /* expanded and filled */
454 unsigned int dashLength; /* total of all dash elements */
455 unsigned char bpp; /* current drawable bpp */
456} FbGCPrivRec, *FbGCPrivPtr;
457
458#define fbGetGCPrivateKey(pGC) (&fbGetScreenPrivate((pGC)->pScreen)->gcPrivateKeyRec)
459
460#define fbGetGCPrivate(pGC) ((FbGCPrivPtr)\
461 dixLookupPrivate(&(pGC)->devPrivates, fbGetGCPrivateKey(pGC)))
462
463#define fbGetCompositeClip(pGC) ((pGC)->pCompositeClip)
464#define fbGetExpose(pGC) ((pGC)->fExpose)
465#define fbGetFreeCompClip(pGC) ((pGC)->freeCompClip)
466#define fbGetRotatedPixmap(pGC) ((pGC)->pRotatedPixmap)
467
468#define fbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate)
469
470#define fbGetWinPrivateKey(pWin) (&fbGetScreenPrivate(((DrawablePtr) (pWin))->pScreen)->winPrivateKeyRec)
471
472#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
473 dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
474
475#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
476#define __fbPixDrawableY(pPix) ((pPix)->drawable.y)
477
478#ifdef COMPOSITE
479#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)
480#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix) - (pPix)->screen_y)
481#else
482#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix))
483#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix))
484#endif
485#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix))
486#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix))
487
488#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \
489 if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
490 (pixmap) = fbGetWindowPixmap(pDrawable); \
491 (xoff) = __fbPixOffXWin(pixmap); \
492 (yoff) = __fbPixOffYWin(pixmap); \
493 } else { \
494 (pixmap) = (PixmapPtr) (pDrawable); \
495 (xoff) = __fbPixOffXPix(pixmap); \
496 (yoff) = __fbPixOffYPix(pixmap); \
497 } \
498 fbPrepareAccess(pDrawable); \
499}
500
501#define fbGetPixmapBitsData(pixmap, pointer, stride, bpp) { \
502 (pointer) = (FbBits *) (pixmap)->devPrivate.ptr; \
503 (stride) = ((int) (pixmap)->devKind) / sizeof (FbBits); (void)(stride); \
504 (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
505}
506
507#define fbGetPixmapStipData(pixmap, pointer, stride, bpp) { \
508 (pointer) = (FbStip *) (pixmap)->devPrivate.ptr; \
509 (stride) = ((int) (pixmap)->devKind) / sizeof (FbStip); (void)(stride); \
510 (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
511}
512
513#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
514 PixmapPtr _pPix; \
515 fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
516 fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \
517}
518
519#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
520 PixmapPtr _pPix; \
521 fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
522 fbGetPixmapStipData(_pPix, pointer, stride, bpp); \
523}
524
525/*
526 * XFree86 empties the root BorderClip when the VT is inactive,
527 * here's a macro which uses that to disable GetImage and GetSpans
528 */
529
530#define fbWindowEnabled(pWin) \
531 RegionNotEmpty(&(pWin)->drawable.pScreen->root->borderClip)
532
533#define fbDrawableEnabled(pDrawable) \
534 ((pDrawable)->type == DRAWABLE_PIXMAP ? \
535 TRUE : fbWindowEnabled((WindowPtr) pDrawable))
536
537#define FbPowerOfTwo(w) (((w) & ((w) - 1)) == 0)
538/*
539 * Accelerated tiles are power of 2 width <= FB_UNIT
540 */
541#define FbEvenTile(w) ((w) <= FB_UNIT && FbPowerOfTwo(w))
542
543/*
544 * fb24_32.c
545 */
546extern _X_EXPORT void
547
548fb24_32GetSpans(DrawablePtr pDrawable,
549 int wMax,
550 DDXPointPtr ppt, int *pwidth, int nspans, char *pchardstStart);
551
552extern _X_EXPORT void
553
554fb24_32SetSpans(DrawablePtr pDrawable,
555 GCPtr pGC,
556 char *src,
557 DDXPointPtr ppt, int *pwidth, int nspans, int fSorted);
558
559extern _X_EXPORT void
560
561fb24_32PutZImage(DrawablePtr pDrawable,
562 RegionPtr pClip,
563 int alu,
564 FbBits pm,
565 int x,
566 int y, int width, int height, CARD8 *src, FbStride srcStride);
567
568extern _X_EXPORT void
569
570fb24_32GetImage(DrawablePtr pDrawable,
571 int x,
572 int y,
573 int w,
574 int h, unsigned int format, unsigned long planeMask, char *d);
575
576extern _X_EXPORT void
577
578fb24_32CopyMtoN(DrawablePtr pSrcDrawable,
579 DrawablePtr pDstDrawable,
580 GCPtr pGC,
581 BoxPtr pbox,
582 int nbox,
583 int dx,
584 int dy,
585 Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
586
587extern _X_EXPORT PixmapPtr
588 fb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel);
589
590extern _X_EXPORT Bool
591 fb24_32CreateScreenResources(ScreenPtr pScreen);
592
593extern _X_EXPORT Bool
594
595fb24_32ModifyPixmapHeader(PixmapPtr pPixmap,
596 int width,
597 int height,
598 int depth,
599 int bitsPerPixel, int devKind, void *pPixData);
600
601/*
602 * fballpriv.c
603 */
604extern _X_EXPORT Bool
605fbAllocatePrivates(ScreenPtr pScreen);
606
607/*
608 * fbarc.c
609 */
610
611extern _X_EXPORT void
612fbPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc * parcs);
613
614/*
615 * fbbits.c
616 */
617
618extern _X_EXPORT void
619
620fbBresSolid8(DrawablePtr pDrawable,
621 GCPtr pGC,
622 int dashOffset,
623 int signdx,
624 int signdy,
625 int axis, int x, int y, int e, int e1, int e3, int len);
626
627extern _X_EXPORT void
628
629fbBresDash8(DrawablePtr pDrawable,
630 GCPtr pGC,
631 int dashOffset,
632 int signdx,
633 int signdy, int axis, int x, int y, int e, int e1, int e3, int len);
634
635extern _X_EXPORT void
636
637fbDots8(FbBits * dst,
638 FbStride dstStride,
639 int dstBpp,
640 BoxPtr pBox,
641 xPoint * pts,
642 int npt,
643 int xorg, int yorg, int xoff, int yoff, FbBits and, FbBits xor);
644
645extern _X_EXPORT void
646
647fbArc8(FbBits * dst,
648 FbStride dstStride,
649 int dstBpp, xArc * arc, int dx, int dy, FbBits and, FbBits xor);
650
651extern _X_EXPORT void
652
653fbGlyph8(FbBits * dstLine,
654 FbStride dstStride,
655 int dstBpp, FbStip * stipple, FbBits fg, int height, int shift);
656
657extern _X_EXPORT void
658
659fbPolyline8(DrawablePtr pDrawable,
660 GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig);
661
662extern _X_EXPORT void
663 fbPolySegment8(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg);
664
665extern _X_EXPORT void
666
667fbBresSolid16(DrawablePtr pDrawable,
668 GCPtr pGC,
669 int dashOffset,
670 int signdx,
671 int signdy,
672 int axis, int x, int y, int e, int e1, int e3, int len);
673
674extern _X_EXPORT void
675
676fbBresDash16(DrawablePtr pDrawable,
677 GCPtr pGC,
678 int dashOffset,
679 int signdx,
680 int signdy,
681 int axis, int x, int y, int e, int e1, int e3, int len);
682
683extern _X_EXPORT void
684
685fbDots16(FbBits * dst,
686 FbStride dstStride,
687 int dstBpp,
688 BoxPtr pBox,
689 xPoint * pts,
690 int npt,
691 int xorg, int yorg, int xoff, int yoff, FbBits and, FbBits xor);
692
693extern _X_EXPORT void
694
695fbArc16(FbBits * dst,
696 FbStride dstStride,
697 int dstBpp, xArc * arc, int dx, int dy, FbBits and, FbBits xor);
698
699extern _X_EXPORT void
700
701fbGlyph16(FbBits * dstLine,
702 FbStride dstStride,
703 int dstBpp, FbStip * stipple, FbBits fg, int height, int shift);
704
705extern _X_EXPORT void
706
707fbPolyline16(DrawablePtr pDrawable,
708 GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig);
709
710extern _X_EXPORT void
711 fbPolySegment16(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg);
712
713extern _X_EXPORT void
714
715fbBresSolid24(DrawablePtr pDrawable,
716 GCPtr pGC,
717 int dashOffset,
718 int signdx,
719 int signdy,
720 int axis, int x, int y, int e, int e1, int e3, int len);
721
722extern _X_EXPORT void
723
724fbBresDash24(DrawablePtr pDrawable,
725 GCPtr pGC,
726 int dashOffset,
727 int signdx,
728 int signdy,
729 int axis, int x, int y, int e, int e1, int e3, int len);
730
731extern _X_EXPORT void
732
733fbDots24(FbBits * dst,
734 FbStride dstStride,
735 int dstBpp,
736 BoxPtr pBox,
737 xPoint * pts,
738 int npt,
739 int xorg, int yorg, int xoff, int yoff, FbBits and, FbBits xor);
740
741extern _X_EXPORT void
742
743fbArc24(FbBits * dst,
744 FbStride dstStride,
745 int dstBpp, xArc * arc, int dx, int dy, FbBits and, FbBits xor);
746
747extern _X_EXPORT void
748fbPolyline24(DrawablePtr pDrawable,
749 GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig);
750
751extern _X_EXPORT void
752 fbPolySegment24(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg);
753
754extern _X_EXPORT void
755
756fbBresSolid32(DrawablePtr pDrawable,
757 GCPtr pGC,
758 int dashOffset,
759 int signdx,
760 int signdy,
761 int axis, int x, int y, int e, int e1, int e3, int len);
762
763extern _X_EXPORT void
764
765fbBresDash32(DrawablePtr pDrawable,
766 GCPtr pGC,
767 int dashOffset,
768 int signdx,
769 int signdy,
770 int axis, int x, int y, int e, int e1, int e3, int len);
771
772extern _X_EXPORT void
773
774fbDots32(FbBits * dst,
775 FbStride dstStride,
776 int dstBpp,
777 BoxPtr pBox,
778 xPoint * pts,
779 int npt,
780 int xorg, int yorg, int xoff, int yoff, FbBits and, FbBits xor);
781
782extern _X_EXPORT void
783
784fbArc32(FbBits * dst,
785 FbStride dstStride,
786 int dstBpp, xArc * arc, int dx, int dy, FbBits and, FbBits xor);
787
788extern _X_EXPORT void
789
790fbGlyph32(FbBits * dstLine,
791 FbStride dstStride,
792 int dstBpp, FbStip * stipple, FbBits fg, int height, int shift);
793extern _X_EXPORT void
794
795fbPolyline32(DrawablePtr pDrawable,
796 GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig);
797
798extern _X_EXPORT void
799 fbPolySegment32(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg);
800
801/*
802 * fbblt.c
803 */
804extern _X_EXPORT void
805
806fbBlt(FbBits * src,
807 FbStride srcStride,
808 int srcX,
809 FbBits * dst,
810 FbStride dstStride,
811 int dstX,
812 int width,
813 int height, int alu, FbBits pm, int bpp, Bool reverse, Bool upsidedown);
814
815extern _X_EXPORT void
816
817fbBlt24(FbBits * srcLine,
818 FbStride srcStride,
819 int srcX,
820 FbBits * dstLine,
821 FbStride dstStride,
822 int dstX,
823 int width,
824 int height, int alu, FbBits pm, Bool reverse, Bool upsidedown);
825
826extern _X_EXPORT void
827 fbBltStip(FbStip * src, FbStride srcStride, /* in FbStip units, not FbBits units */
828 int srcX, FbStip * dst, FbStride dstStride, /* in FbStip units, not FbBits units */
829 int dstX, int width, int height, int alu, FbBits pm, int bpp);
830
831/*
832 * fbbltone.c
833 */
834extern _X_EXPORT void
835
836fbBltOne(FbStip * src,
837 FbStride srcStride,
838 int srcX,
839 FbBits * dst,
840 FbStride dstStride,
841 int dstX,
842 int dstBpp,
843 int width,
844 int height, FbBits fgand, FbBits fbxor, FbBits bgand, FbBits bgxor);
845
846extern _X_EXPORT void
847 fbBltOne24(FbStip * src, FbStride srcStride, /* FbStip units per scanline */
848 int srcX, /* bit position of source */
849 FbBits * dst, FbStride dstStride, /* FbBits units per scanline */
850 int dstX, /* bit position of dest */
851 int dstBpp, /* bits per destination unit */
852 int width, /* width in bits of destination */
853 int height, /* height in scanlines */
854 FbBits fgand, /* rrop values */
855 FbBits fgxor, FbBits bgand, FbBits bgxor);
856
857extern _X_EXPORT void
858
859fbBltPlane(FbBits * src,
860 FbStride srcStride,
861 int srcX,
862 int srcBpp,
863 FbStip * dst,
864 FbStride dstStride,
865 int dstX,
866 int width,
867 int height,
868 FbStip fgand,
869 FbStip fgxor, FbStip bgand, FbStip bgxor, Pixel planeMask);
870
871/*
872 * fbcmap_mi.c
873 */
874extern _X_EXPORT int
875 fbListInstalledColormaps(ScreenPtr pScreen, Colormap * pmaps);
876
877extern _X_EXPORT void
878 fbInstallColormap(ColormapPtr pmap);
879
880extern _X_EXPORT void
881 fbUninstallColormap(ColormapPtr pmap);
882
883extern _X_EXPORT void
884
885fbResolveColor(unsigned short *pred,
886 unsigned short *pgreen,
887 unsigned short *pblue, VisualPtr pVisual);
888
889extern _X_EXPORT Bool
890 fbInitializeColormap(ColormapPtr pmap);
891
892extern _X_EXPORT int
893
894fbExpandDirectColors(ColormapPtr pmap,
895 int ndef, xColorItem * indefs, xColorItem * outdefs);
896
897extern _X_EXPORT Bool
898 fbCreateDefColormap(ScreenPtr pScreen);
899
900extern _X_EXPORT void
901 fbClearVisualTypes(void);
902
903extern _X_EXPORT Bool
904 fbHasVisualTypes(int depth);
905
906extern _X_EXPORT Bool
907 fbSetVisualTypes(int depth, int visuals, int bitsPerRGB);
908
909extern _X_EXPORT Bool
910
911fbSetVisualTypesAndMasks(int depth, int visuals, int bitsPerRGB,
912 Pixel redMask, Pixel greenMask, Pixel blueMask);
913
914extern _X_EXPORT Bool
915
916fbInitVisuals(VisualPtr * visualp,
917 DepthPtr * depthp,
918 int *nvisualp,
919 int *ndepthp,
920 int *rootDepthp,
921 VisualID * defaultVisp, unsigned long sizes, int bitsPerRGB);
922
923/*
924 * fbcopy.c
925 */
926
927extern _X_EXPORT void
928
929fbCopyNtoN(DrawablePtr pSrcDrawable,
930 DrawablePtr pDstDrawable,
931 GCPtr pGC,
932 BoxPtr pbox,
933 int nbox,
934 int dx,
935 int dy,
936 Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
937
938extern _X_EXPORT void
939
940fbCopy1toN(DrawablePtr pSrcDrawable,
941 DrawablePtr pDstDrawable,
942 GCPtr pGC,
943 BoxPtr pbox,
944 int nbox,
945 int dx,
946 int dy,
947 Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
948
949extern _X_EXPORT void
950
951fbCopyNto1(DrawablePtr pSrcDrawable,
952 DrawablePtr pDstDrawable,
953 GCPtr pGC,
954 BoxPtr pbox,
955 int nbox,
956 int dx,
957 int dy,
958 Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
959
960extern _X_EXPORT RegionPtr
961
962fbCopyArea(DrawablePtr pSrcDrawable,
963 DrawablePtr pDstDrawable,
964 GCPtr pGC,
965 int xIn, int yIn, int widthSrc, int heightSrc, int xOut, int yOut);
966
967extern _X_EXPORT RegionPtr
968
969fbCopyPlane(DrawablePtr pSrcDrawable,
970 DrawablePtr pDstDrawable,
971 GCPtr pGC,
972 int xIn,
973 int yIn,
974 int widthSrc,
975 int heightSrc, int xOut, int yOut, unsigned long bitplane);
976
977/*
978 * fbfill.c
979 */
980extern _X_EXPORT void
981 fbFill(DrawablePtr pDrawable, GCPtr pGC, int x, int y, int width, int height);
982
983extern _X_EXPORT void
984
985fbSolidBoxClipped(DrawablePtr pDrawable,
986 RegionPtr pClip,
987 int xa, int ya, int xb, int yb, FbBits and, FbBits xor);
988
989/*
990 * fbfillrect.c
991 */
992extern _X_EXPORT void
993
994fbPolyFillRect(DrawablePtr pDrawable,
995 GCPtr pGC, int nrectInit, xRectangle *prectInit);
996
997#define fbPolyFillArc miPolyFillArc
998
999#define fbFillPolygon miFillPolygon
1000
1001/*
1002 * fbfillsp.c
1003 */
1004extern _X_EXPORT void
1005
1006fbFillSpans(DrawablePtr pDrawable,
1007 GCPtr pGC,
1008 int nInit, DDXPointPtr pptInit, int *pwidthInit, int fSorted);
1009
1010/*
1011 * fbgc.c
1012 */
1013
1014extern _X_EXPORT Bool
1015 fbCreateGC(GCPtr pGC);
1016
1017extern _X_EXPORT void
1018 fbPadPixmap(PixmapPtr pPixmap);
1019
1020extern _X_EXPORT void
1021 fbValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable);
1022
1023/*
1024 * fbgetsp.c
1025 */
1026extern _X_EXPORT void
1027
1028fbGetSpans(DrawablePtr pDrawable,
1029 int wMax,
1030 DDXPointPtr ppt, int *pwidth, int nspans, char *pchardstStart);
1031
1032/*
1033 * fbglyph.c
1034 */
1035
1036extern _X_EXPORT void
1037
1038fbPolyGlyphBlt(DrawablePtr pDrawable,
1039 GCPtr pGC,
1040 int x,
1041 int y,
1042 unsigned int nglyph, CharInfoPtr * ppci, void *pglyphBase);
1043
1044extern _X_EXPORT void
1045
1046fbImageGlyphBlt(DrawablePtr pDrawable,
1047 GCPtr pGC,
1048 int x,
1049 int y,
1050 unsigned int nglyph, CharInfoPtr * ppci, void *pglyphBase);
1051
1052/*
1053 * fbimage.c
1054 */
1055
1056extern _X_EXPORT void
1057
1058fbPutImage(DrawablePtr pDrawable,
1059 GCPtr pGC,
1060 int depth,
1061 int x, int y, int w, int h, int leftPad, int format, char *pImage);
1062
1063extern _X_EXPORT void
1064
1065fbPutZImage(DrawablePtr pDrawable,
1066 RegionPtr pClip,
1067 int alu,
1068 FbBits pm,
1069 int x,
1070 int y, int width, int height, FbStip * src, FbStride srcStride);
1071
1072extern _X_EXPORT void
1073
1074fbPutXYImage(DrawablePtr pDrawable,
1075 RegionPtr pClip,
1076 FbBits fg,
1077 FbBits bg,
1078 FbBits pm,
1079 int alu,
1080 Bool opaque,
1081 int x,
1082 int y,
1083 int width, int height, FbStip * src, FbStride srcStride, int srcX);
1084
1085extern _X_EXPORT void
1086
1087fbGetImage(DrawablePtr pDrawable,
1088 int x,
1089 int y,
1090 int w, int h, unsigned int format, unsigned long planeMask, char *d);
1091/*
1092 * fbline.c
1093 */
1094
1095extern _X_EXPORT void
1096fbPolyLine(DrawablePtr pDrawable,
1097 GCPtr pGC, int mode, int npt, DDXPointPtr ppt);
1098
1099extern _X_EXPORT void
1100 fbFixCoordModePrevious(int npt, DDXPointPtr ppt);
1101
1102extern _X_EXPORT void
1103 fbPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg);
1104
1105#define fbPolyRectangle miPolyRectangle
1106
1107/*
1108 * fbpict.c
1109 */
1110
1111extern _X_EXPORT Bool
1112 fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
1113
1114extern _X_EXPORT void
1115fbDestroyGlyphCache(void);
1116
1117/*
1118 * fbpixmap.c
1119 */
1120
1121extern _X_EXPORT PixmapPtr
1122
1123fbCreatePixmapBpp(ScreenPtr pScreen, int width, int height, int depth, int bpp,
1124 unsigned usage_hint);
1125
1126extern _X_EXPORT PixmapPtr
1127
1128fbCreatePixmap(ScreenPtr pScreen, int width, int height, int depth,
1129 unsigned usage_hint);
1130
1131extern _X_EXPORT Bool
1132 fbDestroyPixmap(PixmapPtr pPixmap);
1133
1134extern _X_EXPORT RegionPtr
1135 fbPixmapToRegion(PixmapPtr pPix);
1136
1137/*
1138 * fbpoint.c
1139 */
1140
1141extern _X_EXPORT void
1142
1143fbPolyPoint(DrawablePtr pDrawable,
1144 GCPtr pGC, int mode, int npt, xPoint * pptInit);
1145
1146/*
1147 * fbpush.c
1148 */
1149
1150extern _X_EXPORT void
1151
1152fbPushImage(DrawablePtr pDrawable,
1153 GCPtr pGC,
1154 FbStip * src,
1155 FbStride srcStride, int srcX, int x, int y, int width, int height);
1156
1157extern _X_EXPORT void
1158
1159fbPushPixels(GCPtr pGC,
1160 PixmapPtr pBitmap,
1161 DrawablePtr pDrawable, int dx, int dy, int xOrg, int yOrg);
1162
1163/*
1164 * fbscreen.c
1165 */
1166
1167extern _X_EXPORT Bool
1168 fbCloseScreen(ScreenPtr pScreen);
1169
1170extern _X_EXPORT Bool
1171 fbRealizeFont(ScreenPtr pScreen, FontPtr pFont);
1172
1173extern _X_EXPORT Bool
1174 fbUnrealizeFont(ScreenPtr pScreen, FontPtr pFont);
1175
1176extern _X_EXPORT void
1177
1178fbQueryBestSize(int class,
1179 unsigned short *width, unsigned short *height,
1180 ScreenPtr pScreen);
1181
1182extern _X_EXPORT PixmapPtr
1183 _fbGetWindowPixmap(WindowPtr pWindow);
1184
1185extern _X_EXPORT void
1186 _fbSetWindowPixmap(WindowPtr pWindow, PixmapPtr pPixmap);
1187
1188extern _X_EXPORT Bool
1189 fbSetupScreen(ScreenPtr pScreen, void *pbits, /* pointer to screen bitmap */
1190 int xsize, /* in pixels */
1191 int ysize, int dpix, /* dots per inch */
1192 int dpiy, int width, /* pixel width of frame buffer */
1193 int bpp); /* bits per pixel of frame buffer */
1194
1195extern _X_EXPORT Bool
1196
1197wfbFinishScreenInit(ScreenPtr pScreen,
1198 void *pbits,
1199 int xsize,
1200 int ysize,
1201 int dpix,
1202 int dpiy,
1203 int width,
1204 int bpp,
1205 SetupWrapProcPtr setupWrap, FinishWrapProcPtr finishWrap);
1206
1207extern _X_EXPORT Bool
1208
1209wfbScreenInit(ScreenPtr pScreen,
1210 void *pbits,
1211 int xsize,
1212 int ysize,
1213 int dpix,
1214 int dpiy,
1215 int width,
1216 int bpp,
1217 SetupWrapProcPtr setupWrap, FinishWrapProcPtr finishWrap);
1218
1219extern _X_EXPORT Bool
1220
1221fbFinishScreenInit(ScreenPtr pScreen,
1222 void *pbits,
1223 int xsize,
1224 int ysize, int dpix, int dpiy, int width, int bpp);
1225
1226extern _X_EXPORT Bool
1227
1228fbScreenInit(ScreenPtr pScreen,
1229 void *pbits,
1230 int xsize, int ysize, int dpix, int dpiy, int width, int bpp);
1231
1232/*
1233 * fbseg.c
1234 */
1235typedef void FbBres(DrawablePtr pDrawable,
1236 GCPtr pGC,
1237 int dashOffset,
1238 int signdx,
1239 int signdy,
1240 int axis, int x, int y, int e, int e1, int e3, int len);
1241
1242extern _X_EXPORT void
1243fbSegment(DrawablePtr pDrawable,
1244 GCPtr pGC,
1245 int xa, int ya, int xb, int yb, Bool drawLast, int *dashOffset);
1246
1247/*
1248 * fbsetsp.c
1249 */
1250
1251extern _X_EXPORT void
1252fbSetSpans(DrawablePtr pDrawable,
1253 GCPtr pGC,
1254 char *src, DDXPointPtr ppt, int *pwidth, int nspans, int fSorted);
1255
1256/*
1257 * fbsolid.c
1258 */
1259
1260extern _X_EXPORT void
1261
1262fbSolid(FbBits * dst,
1263 FbStride dstStride,
1264 int dstX, int bpp, int width, int height, FbBits and, FbBits xor);
1265
1266extern _X_EXPORT void
1267
1268fbSolid24(FbBits * dst,
1269 FbStride dstStride,
1270 int dstX, int width, int height, FbBits and, FbBits xor);
1271
1272/*
1273 * fbutil.c
1274 */
1275extern _X_EXPORT FbBits fbReplicatePixel(Pixel p, int bpp);
1276
1277#ifdef FB_ACCESS_WRAPPER
1278extern _X_EXPORT ReadMemoryProcPtr wfbReadMemory;
1279extern _X_EXPORT WriteMemoryProcPtr wfbWriteMemory;
1280#endif
1281
1282/*
1283 * fbwindow.c
1284 */
1285
1286extern _X_EXPORT Bool
1287 fbCreateWindow(WindowPtr pWin);
1288
1289extern _X_EXPORT Bool
1290 fbDestroyWindow(WindowPtr pWin);
1291
1292extern _X_EXPORT Bool
1293 fbRealizeWindow(WindowPtr pWindow);
1294
1295extern _X_EXPORT Bool
1296 fbPositionWindow(WindowPtr pWin, int x, int y);
1297
1298extern _X_EXPORT Bool
1299 fbUnrealizeWindow(WindowPtr pWindow);
1300
1301extern _X_EXPORT void
1302
1303fbCopyWindowProc(DrawablePtr pSrcDrawable,
1304 DrawablePtr pDstDrawable,
1305 GCPtr pGC,
1306 BoxPtr pbox,
1307 int nbox,
1308 int dx,
1309 int dy,
1310 Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
1311
1312extern _X_EXPORT void
1313 fbCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
1314
1315extern _X_EXPORT Bool
1316 fbChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
1317
1318extern _X_EXPORT void
1319
1320fbFillRegionSolid(DrawablePtr pDrawable,
1321 RegionPtr pRegion, FbBits and, FbBits xor);
1322
1323extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
1324 Bool has_clip,
1325 int *xoff, int *yoff);
1326
1327extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);
1328
1329#endif /* _FB_H_ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette