fb.h revision 6747b715
105b261ecSmrg/* 205b261ecSmrg * 305b261ecSmrg * Copyright © 1998 Keith Packard 405b261ecSmrg * 505b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its 605b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that 705b261ecSmrg * the above copyright notice appear in all copies and that both that 805b261ecSmrg * copyright notice and this permission notice appear in supporting 905b261ecSmrg * documentation, and that the name of Keith Packard not be used in 1005b261ecSmrg * advertising or publicity pertaining to distribution of the software without 1105b261ecSmrg * specific, written prior permission. Keith Packard makes no 1205b261ecSmrg * representations about the suitability of this software for any purpose. It 1305b261ecSmrg * is provided "as is" without express or implied warranty. 1405b261ecSmrg * 1505b261ecSmrg * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1605b261ecSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1705b261ecSmrg * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1805b261ecSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1905b261ecSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 2005b261ecSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2105b261ecSmrg * PERFORMANCE OF THIS SOFTWARE. 2205b261ecSmrg */ 2305b261ecSmrg 2405b261ecSmrg 2505b261ecSmrg#ifndef _FB_H_ 2605b261ecSmrg#define _FB_H_ 2705b261ecSmrg 2805b261ecSmrg#include <X11/X.h> 2905b261ecSmrg#include <pixman.h> 3005b261ecSmrg 3105b261ecSmrg#include "scrnintstr.h" 3205b261ecSmrg#include "pixmap.h" 3305b261ecSmrg#include "pixmapstr.h" 3405b261ecSmrg#include "region.h" 3505b261ecSmrg#include "gcstruct.h" 3605b261ecSmrg#include "colormap.h" 3705b261ecSmrg#include "miscstruct.h" 3805b261ecSmrg#include "servermd.h" 3905b261ecSmrg#include "windowstr.h" 404642e01fSmrg#include "privates.h" 4105b261ecSmrg#include "mi.h" 4205b261ecSmrg#include "migc.h" 4305b261ecSmrg#include "mibstore.h" 4405b261ecSmrg#include "picturestr.h" 4505b261ecSmrg 4605b261ecSmrg#ifdef FB_ACCESS_WRAPPER 4705b261ecSmrg 4805b261ecSmrg#include "wfbrename.h" 4905b261ecSmrg#define FBPREFIX(x) wfb##x 5005b261ecSmrg#define WRITE(ptr, val) ((*wfbWriteMemory)((ptr), (val), sizeof(*(ptr)))) 5105b261ecSmrg#define READ(ptr) ((*wfbReadMemory)((ptr), sizeof(*(ptr)))) 5205b261ecSmrg 5305b261ecSmrg#define MEMCPY_WRAPPED(dst, src, size) do { \ 5405b261ecSmrg size_t _i; \ 5505b261ecSmrg CARD8 *_dst = (CARD8*)(dst), *_src = (CARD8*)(src); \ 5605b261ecSmrg for(_i = 0; _i < size; _i++) { \ 5705b261ecSmrg WRITE(_dst +_i, READ(_src + _i)); \ 5805b261ecSmrg } \ 5905b261ecSmrg} while(0) 6005b261ecSmrg 6105b261ecSmrg#define MEMSET_WRAPPED(dst, val, size) do { \ 6205b261ecSmrg size_t _i; \ 6305b261ecSmrg CARD8 *_dst = (CARD8*)(dst); \ 6405b261ecSmrg for(_i = 0; _i < size; _i++) { \ 6505b261ecSmrg WRITE(_dst +_i, (val)); \ 6605b261ecSmrg } \ 6705b261ecSmrg} while(0) 6805b261ecSmrg 6905b261ecSmrg#else 7005b261ecSmrg 7105b261ecSmrg#define FBPREFIX(x) fb##x 7205b261ecSmrg#define WRITE(ptr, val) (*(ptr) = (val)) 7305b261ecSmrg#define READ(ptr) (*(ptr)) 7405b261ecSmrg#define MEMCPY_WRAPPED(dst, src, size) memcpy((dst), (src), (size)) 7505b261ecSmrg#define MEMSET_WRAPPED(dst, val, size) memset((dst), (val), (size)) 7605b261ecSmrg 7705b261ecSmrg#endif 7805b261ecSmrg 7905b261ecSmrg/* 8005b261ecSmrg * This single define controls the basic size of data manipulated 8105b261ecSmrg * by this software; it must be log2(sizeof (FbBits) * 8) 8205b261ecSmrg */ 8305b261ecSmrg 8405b261ecSmrg#ifndef FB_SHIFT 8505b261ecSmrg#define FB_SHIFT LOG2_BITMAP_PAD 8605b261ecSmrg#endif 8705b261ecSmrg 8805b261ecSmrg#if FB_SHIFT < LOG2_BITMAP_PAD 8905b261ecSmrg error FB_SHIFT must be >= LOG2_BITMAP_PAD 9005b261ecSmrg#endif 9105b261ecSmrg 9205b261ecSmrg#define FB_UNIT (1 << FB_SHIFT) 9305b261ecSmrg#define FB_HALFUNIT (1 << (FB_SHIFT-1)) 9405b261ecSmrg#define FB_MASK (FB_UNIT - 1) 9505b261ecSmrg#define FB_ALLONES ((FbBits) -1) 9605b261ecSmrg 9705b261ecSmrg#if GLYPHPADBYTES != 4 9805b261ecSmrg#error "GLYPHPADBYTES must be 4" 9905b261ecSmrg#endif 10005b261ecSmrg/* whether to bother to include 24bpp support */ 10105b261ecSmrg#ifndef FBNO24BIT 10205b261ecSmrg#define FB_24BIT 10305b261ecSmrg#endif 10405b261ecSmrg 10505b261ecSmrg/* 10605b261ecSmrg * Unless otherwise instructed, fb includes code to advertise 24bpp 10705b261ecSmrg * windows with 32bpp image format for application compatibility 10805b261ecSmrg */ 10905b261ecSmrg 11005b261ecSmrg#ifdef FB_24BIT 11105b261ecSmrg#ifndef FBNO24_32 11205b261ecSmrg#define FB_24_32BIT 11305b261ecSmrg#endif 11405b261ecSmrg#endif 11505b261ecSmrg 11605b261ecSmrg#define FB_STIP_SHIFT LOG2_BITMAP_PAD 11705b261ecSmrg#define FB_STIP_UNIT (1 << FB_STIP_SHIFT) 11805b261ecSmrg#define FB_STIP_MASK (FB_STIP_UNIT - 1) 11905b261ecSmrg#define FB_STIP_ALLONES ((FbStip) -1) 12005b261ecSmrg 12105b261ecSmrg#define FB_STIP_ODDSTRIDE(s) (((s) & (FB_MASK >> FB_STIP_SHIFT)) != 0) 12205b261ecSmrg#define FB_STIP_ODDPTR(p) ((((long) (p)) & (FB_MASK >> 3)) != 0) 12305b261ecSmrg 12405b261ecSmrg#define FbStipStrideToBitsStride(s) (((s) >> (FB_SHIFT - FB_STIP_SHIFT))) 12505b261ecSmrg#define FbBitsStrideToStipStride(s) (((s) << (FB_SHIFT - FB_STIP_SHIFT))) 12605b261ecSmrg 12705b261ecSmrg#define FbFullMask(n) ((n) == FB_UNIT ? FB_ALLONES : ((((FbBits) 1) << n) - 1)) 12805b261ecSmrg 12905b261ecSmrg#if FB_SHIFT == 6 13005b261ecSmrg# ifdef WIN32 13105b261ecSmrgtypedef unsigned __int64 FbBits; 13205b261ecSmrg# else 13305b261ecSmrg# if defined(__alpha__) || defined(__alpha) || \ 13405b261ecSmrg defined(ia64) || defined(__ia64__) || \ 13505b261ecSmrg defined(__sparc64__) || defined(_LP64) || \ 13605b261ecSmrg defined(__s390x__) || \ 13705b261ecSmrg defined(amd64) || defined (__amd64__) || \ 1384642e01fSmrg defined (__powerpc64__) 13905b261ecSmrgtypedef unsigned long FbBits; 14005b261ecSmrg# else 14105b261ecSmrgtypedef unsigned long long FbBits; 14205b261ecSmrg# endif 14305b261ecSmrg# endif 14405b261ecSmrg#endif 14505b261ecSmrg 14605b261ecSmrg#if FB_SHIFT == 5 14705b261ecSmrgtypedef CARD32 FbBits; 14805b261ecSmrg#endif 14905b261ecSmrg 15005b261ecSmrg#if FB_SHIFT == 4 15105b261ecSmrgtypedef CARD16 FbBits; 15205b261ecSmrg#endif 15305b261ecSmrg 15405b261ecSmrg#if LOG2_BITMAP_PAD == FB_SHIFT 15505b261ecSmrgtypedef FbBits FbStip; 15605b261ecSmrg#else 15705b261ecSmrg# if LOG2_BITMAP_PAD == 5 15805b261ecSmrgtypedef CARD32 FbStip; 15905b261ecSmrg# endif 16005b261ecSmrg#endif 16105b261ecSmrg 16205b261ecSmrgtypedef int FbStride; 16305b261ecSmrg 16405b261ecSmrg 16505b261ecSmrg#ifdef FB_DEBUG 1666747b715Smrgextern _X_EXPORT void fbValidateDrawable(DrawablePtr d); 1676747b715Smrgextern _X_EXPORT void fbInitializeDrawable(DrawablePtr d); 1686747b715Smrgextern _X_EXPORT void fbSetBits (FbStip *bits, int stride, FbStip data); 16905b261ecSmrg#define FB_HEAD_BITS (FbStip) (0xbaadf00d) 17005b261ecSmrg#define FB_TAIL_BITS (FbStip) (0xbaddf0ad) 17105b261ecSmrg#else 17205b261ecSmrg#define fbValidateDrawable(d) 17305b261ecSmrg#define fdInitializeDrawable(d) 17405b261ecSmrg#endif 17505b261ecSmrg 17605b261ecSmrg#include "fbrop.h" 17705b261ecSmrg 17805b261ecSmrg#if BITMAP_BIT_ORDER == LSBFirst 17905b261ecSmrg#define FbScrLeft(x,n) ((x) >> (n)) 18005b261ecSmrg#define FbScrRight(x,n) ((x) << (n)) 18105b261ecSmrg/* #define FbLeftBits(x,n) ((x) & ((((FbBits) 1) << (n)) - 1)) */ 18205b261ecSmrg#define FbLeftStipBits(x,n) ((x) & ((((FbStip) 1) << (n)) - 1)) 18305b261ecSmrg#define FbStipMoveLsb(x,s,n) (FbStipRight (x,(s)-(n))) 18405b261ecSmrg#define FbPatternOffsetBits 0 18505b261ecSmrg#else 18605b261ecSmrg#define FbScrLeft(x,n) ((x) << (n)) 18705b261ecSmrg#define FbScrRight(x,n) ((x) >> (n)) 18805b261ecSmrg/* #define FbLeftBits(x,n) ((x) >> (FB_UNIT - (n))) */ 18905b261ecSmrg#define FbLeftStipBits(x,n) ((x) >> (FB_STIP_UNIT - (n))) 19005b261ecSmrg#define FbStipMoveLsb(x,s,n) (x) 19105b261ecSmrg#define FbPatternOffsetBits (sizeof (FbBits) - 1) 19205b261ecSmrg#endif 19305b261ecSmrg 19405b261ecSmrg#include "micoord.h" 19505b261ecSmrg 19605b261ecSmrg#define FbStipLeft(x,n) FbScrLeft(x,n) 19705b261ecSmrg#define FbStipRight(x,n) FbScrRight(x,n) 19805b261ecSmrg 19905b261ecSmrg#define FbRotLeft(x,n) FbScrLeft(x,n) | (n ? FbScrRight(x,FB_UNIT-n) : 0) 20005b261ecSmrg#define FbRotRight(x,n) FbScrRight(x,n) | (n ? FbScrLeft(x,FB_UNIT-n) : 0) 20105b261ecSmrg 20205b261ecSmrg#define FbRotStipLeft(x,n) FbStipLeft(x,n) | (n ? FbStipRight(x,FB_STIP_UNIT-n) : 0) 20305b261ecSmrg#define FbRotStipRight(x,n) FbStipRight(x,n) | (n ? FbStipLeft(x,FB_STIP_UNIT-n) : 0) 20405b261ecSmrg 20505b261ecSmrg#define FbLeftMask(x) ( ((x) & FB_MASK) ? \ 20605b261ecSmrg FbScrRight(FB_ALLONES,(x) & FB_MASK) : 0) 20705b261ecSmrg#define FbRightMask(x) ( ((FB_UNIT - (x)) & FB_MASK) ? \ 20805b261ecSmrg FbScrLeft(FB_ALLONES,(FB_UNIT - (x)) & FB_MASK) : 0) 20905b261ecSmrg 21005b261ecSmrg#define FbLeftStipMask(x) ( ((x) & FB_STIP_MASK) ? \ 21105b261ecSmrg FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) : 0) 21205b261ecSmrg#define FbRightStipMask(x) ( ((FB_STIP_UNIT - (x)) & FB_STIP_MASK) ? \ 21305b261ecSmrg FbScrLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - (x)) & FB_STIP_MASK) : 0) 21405b261ecSmrg 21505b261ecSmrg#define FbBitsMask(x,w) (FbScrRight(FB_ALLONES,(x) & FB_MASK) & \ 21605b261ecSmrg FbScrLeft(FB_ALLONES,(FB_UNIT - ((x) + (w))) & FB_MASK)) 21705b261ecSmrg 21805b261ecSmrg#define FbStipMask(x,w) (FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) & \ 21905b261ecSmrg FbStipLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - ((x)+(w))) & FB_STIP_MASK)) 22005b261ecSmrg 22105b261ecSmrg 22205b261ecSmrg#define FbMaskBits(x,w,l,n,r) { \ 22305b261ecSmrg n = (w); \ 22405b261ecSmrg r = FbRightMask((x)+n); \ 22505b261ecSmrg l = FbLeftMask(x); \ 22605b261ecSmrg if (l) { \ 22705b261ecSmrg n -= FB_UNIT - ((x) & FB_MASK); \ 22805b261ecSmrg if (n < 0) { \ 22905b261ecSmrg n = 0; \ 23005b261ecSmrg l &= r; \ 23105b261ecSmrg r = 0; \ 23205b261ecSmrg } \ 23305b261ecSmrg } \ 23405b261ecSmrg n >>= FB_SHIFT; \ 23505b261ecSmrg} 23605b261ecSmrg 23705b261ecSmrg#ifdef FBNOPIXADDR 23805b261ecSmrg#define FbMaskBitsBytes(x,w,copy,l,lb,n,r,rb) FbMaskBits(x,w,l,n,r) 23905b261ecSmrg#define FbDoLeftMaskByteRRop(dst,lb,l,and,xor) { \ 24005b261ecSmrg *dst = FbDoMaskRRop(*dst,and,xor,l); \ 24105b261ecSmrg} 24205b261ecSmrg#define FbDoRightMaskByteRRop(dst,rb,r,and,xor) { \ 24305b261ecSmrg *dst = FbDoMaskRRop(*dst,and,xor,r); \ 24405b261ecSmrg} 24505b261ecSmrg#else 24605b261ecSmrg 24705b261ecSmrg#define FbByteMaskInvalid 0x10 24805b261ecSmrg 24905b261ecSmrg#define FbPatternOffset(o,t) ((o) ^ (FbPatternOffsetBits & ~(sizeof (t) - 1))) 25005b261ecSmrg 25105b261ecSmrg#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o))) 25205b261ecSmrg#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3)) 25305b261ecSmrg#define FbStorePart(dst,off,t,xor) (WRITE(FbPtrOffset(dst,off,t), \ 25405b261ecSmrg FbSelectPart(xor,off,t))) 25505b261ecSmrg#ifndef FbSelectPart 25605b261ecSmrg#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t) 25705b261ecSmrg#endif 25805b261ecSmrg 25905b261ecSmrg#define FbMaskBitsBytes(x,w,copy,l,lb,n,r,rb) { \ 26005b261ecSmrg n = (w); \ 26105b261ecSmrg lb = 0; \ 26205b261ecSmrg rb = 0; \ 26305b261ecSmrg r = FbRightMask((x)+n); \ 26405b261ecSmrg if (r) { \ 26505b261ecSmrg /* compute right byte length */ \ 26605b261ecSmrg if ((copy) && (((x) + n) & 7) == 0) { \ 26705b261ecSmrg rb = (((x) + n) & FB_MASK) >> 3; \ 26805b261ecSmrg } else { \ 26905b261ecSmrg rb = FbByteMaskInvalid; \ 27005b261ecSmrg } \ 27105b261ecSmrg } \ 27205b261ecSmrg l = FbLeftMask(x); \ 27305b261ecSmrg if (l) { \ 27405b261ecSmrg /* compute left byte length */ \ 27505b261ecSmrg if ((copy) && ((x) & 7) == 0) { \ 27605b261ecSmrg lb = ((x) & FB_MASK) >> 3; \ 27705b261ecSmrg } else { \ 27805b261ecSmrg lb = FbByteMaskInvalid; \ 27905b261ecSmrg } \ 28005b261ecSmrg /* subtract out the portion painted by leftMask */ \ 28105b261ecSmrg n -= FB_UNIT - ((x) & FB_MASK); \ 28205b261ecSmrg if (n < 0) { \ 28305b261ecSmrg if (lb != FbByteMaskInvalid) { \ 28405b261ecSmrg if (rb == FbByteMaskInvalid) { \ 28505b261ecSmrg lb = FbByteMaskInvalid; \ 28605b261ecSmrg } else if (rb) { \ 28705b261ecSmrg lb |= (rb - lb) << (FB_SHIFT - 3); \ 28805b261ecSmrg rb = 0; \ 28905b261ecSmrg } \ 29005b261ecSmrg } \ 29105b261ecSmrg n = 0; \ 29205b261ecSmrg l &= r; \ 29305b261ecSmrg r = 0; \ 29405b261ecSmrg }\ 29505b261ecSmrg } \ 29605b261ecSmrg n >>= FB_SHIFT; \ 29705b261ecSmrg} 29805b261ecSmrg 29905b261ecSmrg#if FB_SHIFT == 6 30005b261ecSmrg#define FbDoLeftMaskByteRRop6Cases(dst,xor) \ 30105b261ecSmrg case (sizeof (FbBits) - 7) | (1 << (FB_SHIFT - 3)): \ 30205b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 30305b261ecSmrg break; \ 30405b261ecSmrg case (sizeof (FbBits) - 7) | (2 << (FB_SHIFT - 3)): \ 30505b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 30605b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD8,xor); \ 30705b261ecSmrg break; \ 30805b261ecSmrg case (sizeof (FbBits) - 7) | (3 << (FB_SHIFT - 3)): \ 30905b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 31005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 31105b261ecSmrg break; \ 31205b261ecSmrg case (sizeof (FbBits) - 7) | (4 << (FB_SHIFT - 3)): \ 31305b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 31405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 31505b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \ 31605b261ecSmrg break; \ 31705b261ecSmrg case (sizeof (FbBits) - 7) | (5 << (FB_SHIFT - 3)): \ 31805b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 31905b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 32005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 32105b261ecSmrg break; \ 32205b261ecSmrg case (sizeof (FbBits) - 7) | (6 << (FB_SHIFT - 3)): \ 32305b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 32405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 32505b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 32605b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \ 32705b261ecSmrg break; \ 32805b261ecSmrg case (sizeof (FbBits) - 7): \ 32905b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \ 33005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 33105b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \ 33205b261ecSmrg break; \ 33305b261ecSmrg case (sizeof (FbBits) - 6) | (1 << (FB_SHIFT - 3)): \ 33405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD8,xor); \ 33505b261ecSmrg break; \ 33605b261ecSmrg case (sizeof (FbBits) - 6) | (2 << (FB_SHIFT - 3)): \ 33705b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 33805b261ecSmrg break; \ 33905b261ecSmrg case (sizeof (FbBits) - 6) | (3 << (FB_SHIFT - 3)): \ 34005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 34105b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \ 34205b261ecSmrg break; \ 34305b261ecSmrg case (sizeof (FbBits) - 6) | (4 << (FB_SHIFT - 3)): \ 34405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 34505b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 34605b261ecSmrg break; \ 34705b261ecSmrg case (sizeof (FbBits) - 6) | (5 << (FB_SHIFT - 3)): \ 34805b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 34905b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 35005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \ 35105b261ecSmrg break; \ 35205b261ecSmrg case (sizeof (FbBits) - 6): \ 35305b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \ 35405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \ 35505b261ecSmrg break; \ 35605b261ecSmrg case (sizeof (FbBits) - 5) | (1 << (FB_SHIFT - 3)): \ 35705b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \ 35805b261ecSmrg break; \ 35905b261ecSmrg case (sizeof (FbBits) - 5) | (2 << (FB_SHIFT - 3)): \ 36005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \ 36105b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \ 36205b261ecSmrg break; \ 36305b261ecSmrg case (sizeof (FbBits) - 5) | (3 << (FB_SHIFT - 3)): \ 36405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \ 36505b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 36605b261ecSmrg break; \ 36705b261ecSmrg case (sizeof (FbBits) - 5) | (4 << (FB_SHIFT - 3)): \ 36805b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \ 36905b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 37005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \ 37105b261ecSmrg break; \ 37205b261ecSmrg case (sizeof (FbBits) - 5): \ 37305b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \ 37405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \ 37505b261ecSmrg break; \ 37605b261ecSmrg case (sizeof (FbBits) - 4) | (1 << (FB_SHIFT - 3)): \ 37705b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \ 37805b261ecSmrg break; \ 37905b261ecSmrg case (sizeof (FbBits) - 4) | (2 << (FB_SHIFT - 3)): \ 38005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 38105b261ecSmrg break; \ 38205b261ecSmrg case (sizeof (FbBits) - 4) | (3 << (FB_SHIFT - 3)): \ 38305b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \ 38405b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \ 38505b261ecSmrg break; \ 38605b261ecSmrg case (sizeof (FbBits) - 4): \ 38705b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \ 38805b261ecSmrg break; 38905b261ecSmrg 39005b261ecSmrg#define FbDoRightMaskByteRRop6Cases(dst,xor) \ 39105b261ecSmrg case 4: \ 39205b261ecSmrg FbStorePart(dst,0,CARD32,xor); \ 39305b261ecSmrg break; \ 39405b261ecSmrg case 5: \ 39505b261ecSmrg FbStorePart(dst,0,CARD32,xor); \ 39605b261ecSmrg FbStorePart(dst,4,CARD8,xor); \ 39705b261ecSmrg break; \ 39805b261ecSmrg case 6: \ 39905b261ecSmrg FbStorePart(dst,0,CARD32,xor); \ 40005b261ecSmrg FbStorePart(dst,4,CARD16,xor); \ 40105b261ecSmrg break; \ 40205b261ecSmrg case 7: \ 40305b261ecSmrg FbStorePart(dst,0,CARD32,xor); \ 40405b261ecSmrg FbStorePart(dst,4,CARD16,xor); \ 40505b261ecSmrg FbStorePart(dst,6,CARD8,xor); \ 40605b261ecSmrg break; 40705b261ecSmrg#else 40805b261ecSmrg#define FbDoLeftMaskByteRRop6Cases(dst,xor) 40905b261ecSmrg#define FbDoRightMaskByteRRop6Cases(dst,xor) 41005b261ecSmrg#endif 41105b261ecSmrg 41205b261ecSmrg#define FbDoLeftMaskByteRRop(dst,lb,l,and,xor) { \ 41305b261ecSmrg switch (lb) { \ 41405b261ecSmrg FbDoLeftMaskByteRRop6Cases(dst,xor) \ 41505b261ecSmrg case (sizeof (FbBits) - 3) | (1 << (FB_SHIFT - 3)): \ 41605b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \ 41705b261ecSmrg break; \ 41805b261ecSmrg case (sizeof (FbBits) - 3) | (2 << (FB_SHIFT - 3)): \ 41905b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \ 42005b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \ 42105b261ecSmrg break; \ 42205b261ecSmrg case (sizeof (FbBits) - 2) | (1 << (FB_SHIFT - 3)): \ 42305b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \ 42405b261ecSmrg break; \ 42505b261ecSmrg case sizeof (FbBits) - 3: \ 42605b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \ 42705b261ecSmrg case sizeof (FbBits) - 2: \ 42805b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 2,CARD16,xor); \ 42905b261ecSmrg break; \ 43005b261ecSmrg case sizeof (FbBits) - 1: \ 43105b261ecSmrg FbStorePart(dst,sizeof (FbBits) - 1,CARD8,xor); \ 43205b261ecSmrg break; \ 43305b261ecSmrg default: \ 43405b261ecSmrg WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, l)); \ 43505b261ecSmrg break; \ 43605b261ecSmrg } \ 43705b261ecSmrg} 43805b261ecSmrg 43905b261ecSmrg 44005b261ecSmrg#define FbDoRightMaskByteRRop(dst,rb,r,and,xor) { \ 44105b261ecSmrg switch (rb) { \ 44205b261ecSmrg case 1: \ 44305b261ecSmrg FbStorePart(dst,0,CARD8,xor); \ 44405b261ecSmrg break; \ 44505b261ecSmrg case 2: \ 44605b261ecSmrg FbStorePart(dst,0,CARD16,xor); \ 44705b261ecSmrg break; \ 44805b261ecSmrg case 3: \ 44905b261ecSmrg FbStorePart(dst,0,CARD16,xor); \ 45005b261ecSmrg FbStorePart(dst,2,CARD8,xor); \ 45105b261ecSmrg break; \ 45205b261ecSmrg FbDoRightMaskByteRRop6Cases(dst,xor) \ 45305b261ecSmrg default: \ 45405b261ecSmrg WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, r)); \ 45505b261ecSmrg } \ 45605b261ecSmrg} 45705b261ecSmrg#endif 45805b261ecSmrg 45905b261ecSmrg#define FbMaskStip(x,w,l,n,r) { \ 46005b261ecSmrg n = (w); \ 46105b261ecSmrg r = FbRightStipMask((x)+n); \ 46205b261ecSmrg l = FbLeftStipMask(x); \ 46305b261ecSmrg if (l) { \ 46405b261ecSmrg n -= FB_STIP_UNIT - ((x) & FB_STIP_MASK); \ 46505b261ecSmrg if (n < 0) { \ 46605b261ecSmrg n = 0; \ 46705b261ecSmrg l &= r; \ 46805b261ecSmrg r = 0; \ 46905b261ecSmrg } \ 47005b261ecSmrg } \ 47105b261ecSmrg n >>= FB_STIP_SHIFT; \ 47205b261ecSmrg} 47305b261ecSmrg 47405b261ecSmrg/* 47505b261ecSmrg * These macros are used to transparently stipple 47605b261ecSmrg * in copy mode; the expected usage is with 'n' constant 47705b261ecSmrg * so all of the conditional parts collapse into a minimal 47805b261ecSmrg * sequence of partial word writes 47905b261ecSmrg * 48005b261ecSmrg * 'n' is the bytemask of which bytes to store, 'a' is the address 48105b261ecSmrg * of the FbBits base unit, 'o' is the offset within that unit 48205b261ecSmrg * 48305b261ecSmrg * The term "lane" comes from the hardware term "byte-lane" which 48405b261ecSmrg */ 48505b261ecSmrg 4866747b715Smrg#define FbLaneCase1(n,a,o) \ 4876747b715Smrg if ((n) == 0x01) { \ 4886747b715Smrg WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), fgxor); \ 4896747b715Smrg } 4906747b715Smrg 4916747b715Smrg#define FbLaneCase2(n,a,o) \ 4926747b715Smrg if ((n) == 0x03) { \ 4936747b715Smrg WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), fgxor); \ 4946747b715Smrg } else { \ 4956747b715Smrg FbLaneCase1((n)&1,a,o) \ 4966747b715Smrg FbLaneCase1((n)>>1,a,(o)+1) \ 4976747b715Smrg } 4986747b715Smrg 4996747b715Smrg#define FbLaneCase4(n,a,o) \ 5006747b715Smrg if ((n) == 0x0f) { \ 5016747b715Smrg WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), fgxor); \ 5026747b715Smrg } else { \ 5036747b715Smrg FbLaneCase2((n)&3,a,o) \ 5046747b715Smrg FbLaneCase2((n)>>2,a,(o)+2) \ 5056747b715Smrg } 5066747b715Smrg 5076747b715Smrg#define FbLaneCase8(n,a,o) \ 5086747b715Smrg if ((n) == 0x0ff) { \ 5096747b715Smrg *(FbBits *) ((a)+(o)) = fgxor; \ 5106747b715Smrg } else { \ 5116747b715Smrg FbLaneCase4((n)&15,a,o) \ 5126747b715Smrg FbLaneCase4((n)>>4,a,(o)+4) \ 5136747b715Smrg } 51405b261ecSmrg 51505b261ecSmrg#if FB_SHIFT == 6 51605b261ecSmrg#define FbLaneCase(n,a) FbLaneCase8(n,(CARD8 *) (a),0) 51705b261ecSmrg#endif 51805b261ecSmrg 51905b261ecSmrg#if FB_SHIFT == 5 52005b261ecSmrg#define FbLaneCase(n,a) FbLaneCase4(n,(CARD8 *) (a),0) 52105b261ecSmrg#endif 52205b261ecSmrg 52305b261ecSmrg/* Rotate a filled pixel value to the specified alignement */ 52405b261ecSmrg#define FbRot24(p,b) (FbScrRight(p,b) | FbScrLeft(p,24-(b))) 52505b261ecSmrg#define FbRot24Stip(p,b) (FbStipRight(p,b) | FbStipLeft(p,24-(b))) 52605b261ecSmrg 52705b261ecSmrg/* step a filled pixel value to the next/previous FB_UNIT alignment */ 52805b261ecSmrg#define FbNext24Pix(p) (FbRot24(p,(24-FB_UNIT%24))) 52905b261ecSmrg#define FbPrev24Pix(p) (FbRot24(p,FB_UNIT%24)) 53005b261ecSmrg#define FbNext24Stip(p) (FbRot24(p,(24-FB_STIP_UNIT%24))) 53105b261ecSmrg#define FbPrev24Stip(p) (FbRot24(p,FB_STIP_UNIT%24)) 53205b261ecSmrg 53305b261ecSmrg/* step a rotation value to the next/previous rotation value */ 53405b261ecSmrg#if FB_UNIT == 64 53505b261ecSmrg#define FbNext24Rot(r) ((r) == 16 ? 0 : (r) + 8) 53605b261ecSmrg#define FbPrev24Rot(r) ((r) == 0 ? 16 : (r) - 8) 53705b261ecSmrg 53805b261ecSmrg#if IMAGE_BYTE_ORDER == MSBFirst 53905b261ecSmrg#define FbFirst24Rot(x) (((x) + 8) % 24) 54005b261ecSmrg#else 54105b261ecSmrg#define FbFirst24Rot(x) ((x) % 24) 54205b261ecSmrg#endif 54305b261ecSmrg 54405b261ecSmrg#endif 54505b261ecSmrg 54605b261ecSmrg#if FB_UNIT == 32 54705b261ecSmrg#define FbNext24Rot(r) ((r) == 0 ? 16 : (r) - 8) 54805b261ecSmrg#define FbPrev24Rot(r) ((r) == 16 ? 0 : (r) + 8) 54905b261ecSmrg 55005b261ecSmrg#if IMAGE_BYTE_ORDER == MSBFirst 55105b261ecSmrg#define FbFirst24Rot(x) (((x) + 16) % 24) 55205b261ecSmrg#else 55305b261ecSmrg#define FbFirst24Rot(x) ((x) % 24) 55405b261ecSmrg#endif 55505b261ecSmrg#endif 55605b261ecSmrg 55705b261ecSmrg#define FbNext24RotStip(r) ((r) == 0 ? 16 : (r) - 8) 55805b261ecSmrg#define FbPrev24RotStip(r) ((r) == 16 ? 0 : (r) + 8) 55905b261ecSmrg 56005b261ecSmrg/* Whether 24-bit specific code is needed for this filled pixel value */ 56105b261ecSmrg#define FbCheck24Pix(p) ((p) == FbNext24Pix(p)) 56205b261ecSmrg 56305b261ecSmrg/* Macros for dealing with dashing */ 56405b261ecSmrg 56505b261ecSmrg#define FbDashDeclare \ 56605b261ecSmrg unsigned char *__dash, *__firstDash, *__lastDash 56705b261ecSmrg 56805b261ecSmrg#define FbDashInit(pGC,pPriv,dashOffset,dashlen,even) { \ 56905b261ecSmrg (even) = TRUE; \ 57005b261ecSmrg __firstDash = (pGC)->dash; \ 57105b261ecSmrg __lastDash = __firstDash + (pGC)->numInDashList; \ 57205b261ecSmrg (dashOffset) %= (pPriv)->dashLength; \ 57305b261ecSmrg \ 57405b261ecSmrg __dash = __firstDash; \ 57505b261ecSmrg while ((dashOffset) >= ((dashlen) = *__dash)) \ 57605b261ecSmrg { \ 57705b261ecSmrg (dashOffset) -= (dashlen); \ 57805b261ecSmrg (even) = 1-(even); \ 57905b261ecSmrg if (++__dash == __lastDash) \ 58005b261ecSmrg __dash = __firstDash; \ 58105b261ecSmrg } \ 58205b261ecSmrg (dashlen) -= (dashOffset); \ 58305b261ecSmrg} 58405b261ecSmrg 58505b261ecSmrg#define FbDashNext(dashlen) { \ 58605b261ecSmrg if (++__dash == __lastDash) \ 58705b261ecSmrg __dash = __firstDash; \ 58805b261ecSmrg (dashlen) = *__dash; \ 58905b261ecSmrg} 59005b261ecSmrg 59105b261ecSmrg/* as numInDashList is always even, this case can skip a test */ 59205b261ecSmrg 59305b261ecSmrg#define FbDashNextEven(dashlen) { \ 59405b261ecSmrg (dashlen) = *++__dash; \ 59505b261ecSmrg} 59605b261ecSmrg 59705b261ecSmrg#define FbDashNextOdd(dashlen) FbDashNext(dashlen) 59805b261ecSmrg 59905b261ecSmrg#define FbDashStep(dashlen,even) { \ 60005b261ecSmrg if (!--(dashlen)) { \ 60105b261ecSmrg FbDashNext(dashlen); \ 60205b261ecSmrg (even) = 1-(even); \ 60305b261ecSmrg } \ 60405b261ecSmrg} 60505b261ecSmrg 6066747b715Smrgextern _X_EXPORT DevPrivateKey 6076747b715SmrgfbGetGCPrivateKey (void); 6086747b715Smrg 6096747b715Smrgextern _X_EXPORT DevPrivateKey 6106747b715SmrgfbGetWinPrivateKey (void); 6116747b715Smrg 6126747b715Smrgextern _X_EXPORT const GCOps fbGCOps; 6136747b715Smrgextern _X_EXPORT const GCFuncs fbGCFuncs; 61405b261ecSmrg 61505b261ecSmrg#ifdef FB_24_32BIT 61605b261ecSmrg#define FB_SCREEN_PRIVATE 61705b261ecSmrg#endif 61805b261ecSmrg 61905b261ecSmrg/* Framebuffer access wrapper */ 62005b261ecSmrgtypedef FbBits (*ReadMemoryProcPtr)(const void *src, int size); 62105b261ecSmrgtypedef void (*WriteMemoryProcPtr)(void *dst, FbBits value, int size); 62205b261ecSmrgtypedef void (*SetupWrapProcPtr)(ReadMemoryProcPtr *pRead, 62305b261ecSmrg WriteMemoryProcPtr *pWrite, 62405b261ecSmrg DrawablePtr pDraw); 62505b261ecSmrgtypedef void (*FinishWrapProcPtr)(DrawablePtr pDraw); 62605b261ecSmrg 62705b261ecSmrg#ifdef FB_ACCESS_WRAPPER 62805b261ecSmrg 62905b261ecSmrg#define fbPrepareAccess(pDraw) \ 63005b261ecSmrg fbGetScreenPrivate((pDraw)->pScreen)->setupWrap( \ 63105b261ecSmrg &wfbReadMemory, \ 63205b261ecSmrg &wfbWriteMemory, \ 63305b261ecSmrg (pDraw)) 63405b261ecSmrg#define fbFinishAccess(pDraw) \ 63505b261ecSmrg fbGetScreenPrivate((pDraw)->pScreen)->finishWrap(pDraw) 63605b261ecSmrg 63705b261ecSmrg#else 63805b261ecSmrg 63905b261ecSmrg#define fbPrepareAccess(pPix) 64005b261ecSmrg#define fbFinishAccess(pDraw) 64105b261ecSmrg 64205b261ecSmrg#endif 64305b261ecSmrg 64405b261ecSmrg 64505b261ecSmrg#ifdef FB_SCREEN_PRIVATE 6466747b715Smrgextern _X_EXPORT DevPrivateKey 6476747b715SmrgfbGetScreenPrivateKey(void); 64805b261ecSmrg 64905b261ecSmrg/* private field of a screen */ 65005b261ecSmrgtypedef struct { 65105b261ecSmrg unsigned char win32bpp; /* window bpp for 32-bpp images */ 65205b261ecSmrg unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */ 65305b261ecSmrg#ifdef FB_ACCESS_WRAPPER 65405b261ecSmrg SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */ 65505b261ecSmrg FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */ 65605b261ecSmrg#endif 65705b261ecSmrg} FbScreenPrivRec, *FbScreenPrivPtr; 65805b261ecSmrg 65905b261ecSmrg#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \ 6606747b715Smrg dixLookupPrivate(&(pScreen)->devPrivates, fbGetScreenPrivateKey())) 66105b261ecSmrg#endif 66205b261ecSmrg 66305b261ecSmrg/* private field of GC */ 66405b261ecSmrgtypedef struct { 66505b261ecSmrg FbBits and, xor; /* reduced rop values */ 66605b261ecSmrg FbBits bgand, bgxor; /* for stipples */ 66705b261ecSmrg FbBits fg, bg, pm; /* expanded and filled */ 66805b261ecSmrg unsigned int dashLength; /* total of all dash elements */ 66905b261ecSmrg unsigned char oneRect; /* clip list is single rectangle */ 67005b261ecSmrg unsigned char evenStipple; /* stipple is even */ 67105b261ecSmrg unsigned char bpp; /* current drawable bpp */ 67205b261ecSmrg} FbGCPrivRec, *FbGCPrivPtr; 67305b261ecSmrg 67405b261ecSmrg#define fbGetGCPrivate(pGC) ((FbGCPrivPtr)\ 6756747b715Smrg dixLookupPrivate(&(pGC)->devPrivates, fbGetGCPrivateKey())) 67605b261ecSmrg 67705b261ecSmrg#define fbGetCompositeClip(pGC) ((pGC)->pCompositeClip) 67805b261ecSmrg#define fbGetExpose(pGC) ((pGC)->fExpose) 67905b261ecSmrg#define fbGetFreeCompClip(pGC) ((pGC)->freeCompClip) 68005b261ecSmrg#define fbGetRotatedPixmap(pGC) ((pGC)->pRotatedPixmap) 68105b261ecSmrg 68205b261ecSmrg#define fbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate) 68305b261ecSmrg#define fbGetWindowPixmap(pWin) ((PixmapPtr)\ 6846747b715Smrg dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey())) 68505b261ecSmrg 68605b261ecSmrg#ifdef ROOTLESS 68705b261ecSmrg#define __fbPixDrawableX(pPix) ((pPix)->drawable.x) 68805b261ecSmrg#define __fbPixDrawableY(pPix) ((pPix)->drawable.y) 68905b261ecSmrg#else 69005b261ecSmrg#define __fbPixDrawableX(pPix) 0 69105b261ecSmrg#define __fbPixDrawableY(pPix) 0 69205b261ecSmrg#endif 69305b261ecSmrg 69405b261ecSmrg#ifdef COMPOSITE 69505b261ecSmrg#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x) 69605b261ecSmrg#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix) - (pPix)->screen_y) 69705b261ecSmrg#else 69805b261ecSmrg#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix)) 69905b261ecSmrg#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix)) 70005b261ecSmrg#endif 70105b261ecSmrg#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix)) 70205b261ecSmrg#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix)) 70305b261ecSmrg 7046747b715Smrg#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \ 7056747b715Smrg if ((pDrawable)->type != DRAWABLE_PIXMAP) { \ 7066747b715Smrg (pixmap) = fbGetWindowPixmap(pDrawable); \ 7076747b715Smrg (xoff) = __fbPixOffXWin(pixmap); \ 7086747b715Smrg (yoff) = __fbPixOffYWin(pixmap); \ 7096747b715Smrg } else { \ 7106747b715Smrg (pixmap) = (PixmapPtr) (pDrawable); \ 7116747b715Smrg (xoff) = __fbPixOffXPix(pixmap); \ 7126747b715Smrg (yoff) = __fbPixOffYPix(pixmap); \ 7136747b715Smrg } \ 7146747b715Smrg fbPrepareAccess(pDrawable); \ 71505b261ecSmrg} 71605b261ecSmrg 7176747b715Smrg#define fbGetPixmapBitsData(pixmap, pointer, stride, bpp) { \ 7186747b715Smrg (pointer) = (FbBits *) (pixmap)->devPrivate.ptr; \ 7196747b715Smrg (stride) = ((int) (pixmap)->devKind) / sizeof (FbBits); (void)(stride); \ 7206747b715Smrg (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \ 7216747b715Smrg} 7226747b715Smrg 7236747b715Smrg#define fbGetPixmapStipData(pixmap, pointer, stride, bpp) { \ 7246747b715Smrg (pointer) = (FbStip *) (pixmap)->devPrivate.ptr; \ 7256747b715Smrg (stride) = ((int) (pixmap)->devKind) / sizeof (FbStip); (void)(stride); \ 7266747b715Smrg (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \ 7276747b715Smrg} 7286747b715Smrg 7296747b715Smrg#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \ 7306747b715Smrg PixmapPtr _pPix; \ 7316747b715Smrg fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \ 7326747b715Smrg fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \ 7336747b715Smrg} 7346747b715Smrg 7356747b715Smrg#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \ 7366747b715Smrg PixmapPtr _pPix; \ 7376747b715Smrg fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \ 7386747b715Smrg fbGetPixmapStipData(_pPix, pointer, stride, bpp); \ 73905b261ecSmrg} 74005b261ecSmrg 74105b261ecSmrg/* 74205b261ecSmrg * XFree86 empties the root BorderClip when the VT is inactive, 74305b261ecSmrg * here's a macro which uses that to disable GetImage and GetSpans 74405b261ecSmrg */ 74505b261ecSmrg 74605b261ecSmrg#define fbWindowEnabled(pWin) \ 7476747b715Smrg RegionNotEmpty(&(pWin)->drawable.pScreen->root->borderClip) 74805b261ecSmrg 74905b261ecSmrg#define fbDrawableEnabled(pDrawable) \ 75005b261ecSmrg ((pDrawable)->type == DRAWABLE_PIXMAP ? \ 75105b261ecSmrg TRUE : fbWindowEnabled((WindowPtr) pDrawable)) 75205b261ecSmrg 75305b261ecSmrg#define FbPowerOfTwo(w) (((w) & ((w) - 1)) == 0) 75405b261ecSmrg/* 75505b261ecSmrg * Accelerated tiles are power of 2 width <= FB_UNIT 75605b261ecSmrg */ 75705b261ecSmrg#define FbEvenTile(w) ((w) <= FB_UNIT && FbPowerOfTwo(w)) 75805b261ecSmrg/* 75905b261ecSmrg * Accelerated stipples are power of 2 width and <= FB_UNIT/dstBpp 76005b261ecSmrg * with dstBpp a power of 2 as well 76105b261ecSmrg */ 76205b261ecSmrg#define FbEvenStip(w,bpp) ((w) * (bpp) <= FB_UNIT && FbPowerOfTwo(w) && FbPowerOfTwo(bpp)) 76305b261ecSmrg 76405b261ecSmrg/* 76505b261ecSmrg * fb24_32.c 76605b261ecSmrg */ 7676747b715Smrgextern _X_EXPORT void 76805b261ecSmrgfb24_32GetSpans(DrawablePtr pDrawable, 76905b261ecSmrg int wMax, 77005b261ecSmrg DDXPointPtr ppt, 77105b261ecSmrg int *pwidth, 77205b261ecSmrg int nspans, 77305b261ecSmrg char *pchardstStart); 77405b261ecSmrg 7756747b715Smrgextern _X_EXPORT void 77605b261ecSmrgfb24_32SetSpans (DrawablePtr pDrawable, 77705b261ecSmrg GCPtr pGC, 77805b261ecSmrg char *src, 77905b261ecSmrg DDXPointPtr ppt, 78005b261ecSmrg int *pwidth, 78105b261ecSmrg int nspans, 78205b261ecSmrg int fSorted); 78305b261ecSmrg 7846747b715Smrgextern _X_EXPORT void 78505b261ecSmrgfb24_32PutZImage (DrawablePtr pDrawable, 78605b261ecSmrg RegionPtr pClip, 78705b261ecSmrg int alu, 78805b261ecSmrg FbBits pm, 78905b261ecSmrg int x, 79005b261ecSmrg int y, 79105b261ecSmrg int width, 79205b261ecSmrg int height, 79305b261ecSmrg CARD8 *src, 79405b261ecSmrg FbStride srcStride); 79505b261ecSmrg 7966747b715Smrgextern _X_EXPORT void 79705b261ecSmrgfb24_32GetImage (DrawablePtr pDrawable, 79805b261ecSmrg int x, 79905b261ecSmrg int y, 80005b261ecSmrg int w, 80105b261ecSmrg int h, 80205b261ecSmrg unsigned int format, 80305b261ecSmrg unsigned long planeMask, 80405b261ecSmrg char *d); 80505b261ecSmrg 8066747b715Smrgextern _X_EXPORT void 80705b261ecSmrgfb24_32CopyMtoN (DrawablePtr pSrcDrawable, 80805b261ecSmrg DrawablePtr pDstDrawable, 80905b261ecSmrg GCPtr pGC, 81005b261ecSmrg BoxPtr pbox, 81105b261ecSmrg int nbox, 81205b261ecSmrg int dx, 81305b261ecSmrg int dy, 81405b261ecSmrg Bool reverse, 81505b261ecSmrg Bool upsidedown, 81605b261ecSmrg Pixel bitplane, 81705b261ecSmrg void *closure); 81805b261ecSmrg 8196747b715Smrgextern _X_EXPORT PixmapPtr 82005b261ecSmrgfb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel); 82105b261ecSmrg 8226747b715Smrgextern _X_EXPORT Bool 82305b261ecSmrgfb24_32CreateScreenResources(ScreenPtr pScreen); 82405b261ecSmrg 8256747b715Smrgextern _X_EXPORT Bool 82605b261ecSmrgfb24_32ModifyPixmapHeader (PixmapPtr pPixmap, 82705b261ecSmrg int width, 82805b261ecSmrg int height, 82905b261ecSmrg int depth, 83005b261ecSmrg int bitsPerPixel, 83105b261ecSmrg int devKind, 83205b261ecSmrg pointer pPixData); 83305b261ecSmrg 83405b261ecSmrg/* 83505b261ecSmrg * fballpriv.c 83605b261ecSmrg */ 8376747b715Smrgextern _X_EXPORT Bool 8384642e01fSmrgfbAllocatePrivates(ScreenPtr pScreen, DevPrivateKey *pGCIndex); 83905b261ecSmrg 84005b261ecSmrg/* 84105b261ecSmrg * fbarc.c 84205b261ecSmrg */ 84305b261ecSmrg 8446747b715Smrgextern _X_EXPORT void 84505b261ecSmrgfbPolyArc (DrawablePtr pDrawable, 84605b261ecSmrg GCPtr pGC, 84705b261ecSmrg int narcs, 84805b261ecSmrg xArc *parcs); 84905b261ecSmrg 85005b261ecSmrg/* 85105b261ecSmrg * fbbits.c 85205b261ecSmrg */ 85305b261ecSmrg 8546747b715Smrgextern _X_EXPORT void 85505b261ecSmrgfbBresSolid8(DrawablePtr pDrawable, 85605b261ecSmrg GCPtr pGC, 85705b261ecSmrg int dashOffset, 85805b261ecSmrg int signdx, 85905b261ecSmrg int signdy, 86005b261ecSmrg int axis, 86105b261ecSmrg int x, 86205b261ecSmrg int y, 86305b261ecSmrg int e, 86405b261ecSmrg int e1, 86505b261ecSmrg int e3, 86605b261ecSmrg int len); 86705b261ecSmrg 8686747b715Smrgextern _X_EXPORT void 86905b261ecSmrgfbBresDash8 (DrawablePtr pDrawable, 87005b261ecSmrg GCPtr pGC, 87105b261ecSmrg int dashOffset, 87205b261ecSmrg int signdx, 87305b261ecSmrg int signdy, 87405b261ecSmrg int axis, 87505b261ecSmrg int x, 87605b261ecSmrg int y, 87705b261ecSmrg int e, 87805b261ecSmrg int e1, 87905b261ecSmrg int e3, 88005b261ecSmrg int len); 88105b261ecSmrg 8826747b715Smrgextern _X_EXPORT void 88305b261ecSmrgfbDots8 (FbBits *dst, 88405b261ecSmrg FbStride dstStride, 88505b261ecSmrg int dstBpp, 88605b261ecSmrg BoxPtr pBox, 88705b261ecSmrg xPoint *pts, 88805b261ecSmrg int npt, 88905b261ecSmrg int xorg, 89005b261ecSmrg int yorg, 89105b261ecSmrg int xoff, 89205b261ecSmrg int yoff, 89305b261ecSmrg FbBits and, 89405b261ecSmrg FbBits xor); 89505b261ecSmrg 8966747b715Smrgextern _X_EXPORT void 89705b261ecSmrgfbArc8 (FbBits *dst, 89805b261ecSmrg FbStride dstStride, 89905b261ecSmrg int dstBpp, 90005b261ecSmrg xArc *arc, 90105b261ecSmrg int dx, 90205b261ecSmrg int dy, 90305b261ecSmrg FbBits and, 90405b261ecSmrg FbBits xor); 90505b261ecSmrg 9066747b715Smrgextern _X_EXPORT void 90705b261ecSmrgfbGlyph8 (FbBits *dstLine, 90805b261ecSmrg FbStride dstStride, 90905b261ecSmrg int dstBpp, 91005b261ecSmrg FbStip *stipple, 91105b261ecSmrg FbBits fg, 91205b261ecSmrg int height, 91305b261ecSmrg int shift); 91405b261ecSmrg 9156747b715Smrgextern _X_EXPORT void 91605b261ecSmrgfbPolyline8 (DrawablePtr pDrawable, 91705b261ecSmrg GCPtr pGC, 91805b261ecSmrg int mode, 91905b261ecSmrg int npt, 92005b261ecSmrg DDXPointPtr ptsOrig); 92105b261ecSmrg 9226747b715Smrgextern _X_EXPORT void 92305b261ecSmrgfbPolySegment8 (DrawablePtr pDrawable, 92405b261ecSmrg GCPtr pGC, 92505b261ecSmrg int nseg, 92605b261ecSmrg xSegment *pseg); 92705b261ecSmrg 9286747b715Smrgextern _X_EXPORT void 92905b261ecSmrgfbBresSolid16(DrawablePtr pDrawable, 93005b261ecSmrg GCPtr pGC, 93105b261ecSmrg int dashOffset, 93205b261ecSmrg int signdx, 93305b261ecSmrg int signdy, 93405b261ecSmrg int axis, 93505b261ecSmrg int x, 93605b261ecSmrg int y, 93705b261ecSmrg int e, 93805b261ecSmrg int e1, 93905b261ecSmrg int e3, 94005b261ecSmrg int len); 94105b261ecSmrg 9426747b715Smrgextern _X_EXPORT void 94305b261ecSmrgfbBresDash16(DrawablePtr pDrawable, 94405b261ecSmrg GCPtr pGC, 94505b261ecSmrg int dashOffset, 94605b261ecSmrg int signdx, 94705b261ecSmrg int signdy, 94805b261ecSmrg int axis, 94905b261ecSmrg int x, 95005b261ecSmrg int y, 95105b261ecSmrg int e, 95205b261ecSmrg int e1, 95305b261ecSmrg int e3, 95405b261ecSmrg int len); 95505b261ecSmrg 9566747b715Smrgextern _X_EXPORT void 95705b261ecSmrgfbDots16(FbBits *dst, 95805b261ecSmrg FbStride dstStride, 95905b261ecSmrg int dstBpp, 96005b261ecSmrg BoxPtr pBox, 96105b261ecSmrg xPoint *pts, 96205b261ecSmrg int npt, 96305b261ecSmrg int xorg, 96405b261ecSmrg int yorg, 96505b261ecSmrg int xoff, 96605b261ecSmrg int yoff, 96705b261ecSmrg FbBits and, 96805b261ecSmrg FbBits xor); 96905b261ecSmrg 9706747b715Smrgextern _X_EXPORT void 97105b261ecSmrgfbArc16(FbBits *dst, 97205b261ecSmrg FbStride dstStride, 97305b261ecSmrg int dstBpp, 97405b261ecSmrg xArc *arc, 97505b261ecSmrg int dx, 97605b261ecSmrg int dy, 97705b261ecSmrg FbBits and, 97805b261ecSmrg FbBits xor); 97905b261ecSmrg 9806747b715Smrgextern _X_EXPORT void 98105b261ecSmrgfbGlyph16(FbBits *dstLine, 98205b261ecSmrg FbStride dstStride, 98305b261ecSmrg int dstBpp, 98405b261ecSmrg FbStip *stipple, 98505b261ecSmrg FbBits fg, 98605b261ecSmrg int height, 98705b261ecSmrg int shift); 98805b261ecSmrg 9896747b715Smrgextern _X_EXPORT void 99005b261ecSmrgfbPolyline16 (DrawablePtr pDrawable, 99105b261ecSmrg GCPtr pGC, 99205b261ecSmrg int mode, 99305b261ecSmrg int npt, 99405b261ecSmrg DDXPointPtr ptsOrig); 99505b261ecSmrg 9966747b715Smrgextern _X_EXPORT void 99705b261ecSmrgfbPolySegment16 (DrawablePtr pDrawable, 99805b261ecSmrg GCPtr pGC, 99905b261ecSmrg int nseg, 100005b261ecSmrg xSegment *pseg); 100105b261ecSmrg 100205b261ecSmrg 10036747b715Smrgextern _X_EXPORT void 100405b261ecSmrgfbBresSolid24(DrawablePtr pDrawable, 100505b261ecSmrg GCPtr pGC, 100605b261ecSmrg int dashOffset, 100705b261ecSmrg int signdx, 100805b261ecSmrg int signdy, 100905b261ecSmrg int axis, 101005b261ecSmrg int x, 101105b261ecSmrg int y, 101205b261ecSmrg int e, 101305b261ecSmrg int e1, 101405b261ecSmrg int e3, 101505b261ecSmrg int len); 101605b261ecSmrg 10176747b715Smrgextern _X_EXPORT void 101805b261ecSmrgfbBresDash24(DrawablePtr pDrawable, 101905b261ecSmrg GCPtr pGC, 102005b261ecSmrg int dashOffset, 102105b261ecSmrg int signdx, 102205b261ecSmrg int signdy, 102305b261ecSmrg int axis, 102405b261ecSmrg int x, 102505b261ecSmrg int y, 102605b261ecSmrg int e, 102705b261ecSmrg int e1, 102805b261ecSmrg int e3, 102905b261ecSmrg int len); 103005b261ecSmrg 10316747b715Smrgextern _X_EXPORT void 103205b261ecSmrgfbDots24(FbBits *dst, 103305b261ecSmrg FbStride dstStride, 103405b261ecSmrg int dstBpp, 103505b261ecSmrg BoxPtr pBox, 103605b261ecSmrg xPoint *pts, 103705b261ecSmrg int npt, 103805b261ecSmrg int xorg, 103905b261ecSmrg int yorg, 104005b261ecSmrg int xoff, 104105b261ecSmrg int yoff, 104205b261ecSmrg FbBits and, 104305b261ecSmrg FbBits xor); 104405b261ecSmrg 10456747b715Smrgextern _X_EXPORT void 104605b261ecSmrgfbArc24(FbBits *dst, 104705b261ecSmrg FbStride dstStride, 104805b261ecSmrg int dstBpp, 104905b261ecSmrg xArc *arc, 105005b261ecSmrg int dx, 105105b261ecSmrg int dy, 105205b261ecSmrg FbBits and, 105305b261ecSmrg FbBits xor); 105405b261ecSmrg 10556747b715Smrgextern _X_EXPORT void 105605b261ecSmrgfbGlyph24(FbBits *dstLine, 105705b261ecSmrg FbStride dstStride, 105805b261ecSmrg int dstBpp, 105905b261ecSmrg FbStip *stipple, 106005b261ecSmrg FbBits fg, 106105b261ecSmrg int height, 106205b261ecSmrg int shift); 106305b261ecSmrg 10646747b715Smrgextern _X_EXPORT void 106505b261ecSmrgfbPolyline24 (DrawablePtr pDrawable, 106605b261ecSmrg GCPtr pGC, 106705b261ecSmrg int mode, 106805b261ecSmrg int npt, 106905b261ecSmrg DDXPointPtr ptsOrig); 107005b261ecSmrg 10716747b715Smrgextern _X_EXPORT void 107205b261ecSmrgfbPolySegment24 (DrawablePtr pDrawable, 107305b261ecSmrg GCPtr pGC, 107405b261ecSmrg int nseg, 107505b261ecSmrg xSegment *pseg); 107605b261ecSmrg 107705b261ecSmrg 10786747b715Smrgextern _X_EXPORT void 107905b261ecSmrgfbBresSolid32(DrawablePtr pDrawable, 108005b261ecSmrg GCPtr pGC, 108105b261ecSmrg int dashOffset, 108205b261ecSmrg int signdx, 108305b261ecSmrg int signdy, 108405b261ecSmrg int axis, 108505b261ecSmrg int x, 108605b261ecSmrg int y, 108705b261ecSmrg int e, 108805b261ecSmrg int e1, 108905b261ecSmrg int e3, 109005b261ecSmrg int len); 109105b261ecSmrg 10926747b715Smrgextern _X_EXPORT void 109305b261ecSmrgfbBresDash32(DrawablePtr pDrawable, 109405b261ecSmrg GCPtr pGC, 109505b261ecSmrg int dashOffset, 109605b261ecSmrg int signdx, 109705b261ecSmrg int signdy, 109805b261ecSmrg int axis, 109905b261ecSmrg int x, 110005b261ecSmrg int y, 110105b261ecSmrg int e, 110205b261ecSmrg int e1, 110305b261ecSmrg int e3, 110405b261ecSmrg int len); 110505b261ecSmrg 11066747b715Smrgextern _X_EXPORT void 110705b261ecSmrgfbDots32(FbBits *dst, 110805b261ecSmrg FbStride dstStride, 110905b261ecSmrg int dstBpp, 111005b261ecSmrg BoxPtr pBox, 111105b261ecSmrg xPoint *pts, 111205b261ecSmrg int npt, 111305b261ecSmrg int xorg, 111405b261ecSmrg int yorg, 111505b261ecSmrg int xoff, 111605b261ecSmrg int yoff, 111705b261ecSmrg FbBits and, 111805b261ecSmrg FbBits xor); 111905b261ecSmrg 11206747b715Smrgextern _X_EXPORT void 112105b261ecSmrgfbArc32(FbBits *dst, 112205b261ecSmrg FbStride dstStride, 112305b261ecSmrg int dstBpp, 112405b261ecSmrg xArc *arc, 112505b261ecSmrg int dx, 112605b261ecSmrg int dy, 112705b261ecSmrg FbBits and, 112805b261ecSmrg FbBits xor); 112905b261ecSmrg 11306747b715Smrgextern _X_EXPORT void 113105b261ecSmrgfbGlyph32(FbBits *dstLine, 113205b261ecSmrg FbStride dstStride, 113305b261ecSmrg int dstBpp, 113405b261ecSmrg FbStip *stipple, 113505b261ecSmrg FbBits fg, 113605b261ecSmrg int height, 113705b261ecSmrg int shift); 11386747b715Smrgextern _X_EXPORT void 113905b261ecSmrgfbPolyline32 (DrawablePtr pDrawable, 114005b261ecSmrg GCPtr pGC, 114105b261ecSmrg int mode, 114205b261ecSmrg int npt, 114305b261ecSmrg DDXPointPtr ptsOrig); 114405b261ecSmrg 11456747b715Smrgextern _X_EXPORT void 114605b261ecSmrgfbPolySegment32 (DrawablePtr pDrawable, 114705b261ecSmrg GCPtr pGC, 114805b261ecSmrg int nseg, 114905b261ecSmrg xSegment *pseg); 115005b261ecSmrg 115105b261ecSmrg/* 115205b261ecSmrg * fbblt.c 115305b261ecSmrg */ 11546747b715Smrgextern _X_EXPORT void 115505b261ecSmrgfbBlt (FbBits *src, 115605b261ecSmrg FbStride srcStride, 115705b261ecSmrg int srcX, 115805b261ecSmrg 115905b261ecSmrg FbBits *dst, 116005b261ecSmrg FbStride dstStride, 116105b261ecSmrg int dstX, 116205b261ecSmrg 116305b261ecSmrg int width, 116405b261ecSmrg int height, 116505b261ecSmrg 116605b261ecSmrg int alu, 116705b261ecSmrg FbBits pm, 116805b261ecSmrg int bpp, 116905b261ecSmrg 117005b261ecSmrg Bool reverse, 117105b261ecSmrg Bool upsidedown); 117205b261ecSmrg 11736747b715Smrgextern _X_EXPORT void 117405b261ecSmrgfbBlt24 (FbBits *srcLine, 117505b261ecSmrg FbStride srcStride, 117605b261ecSmrg int srcX, 117705b261ecSmrg 117805b261ecSmrg FbBits *dstLine, 117905b261ecSmrg FbStride dstStride, 118005b261ecSmrg int dstX, 118105b261ecSmrg 118205b261ecSmrg int width, 118305b261ecSmrg int height, 118405b261ecSmrg 118505b261ecSmrg int alu, 118605b261ecSmrg FbBits pm, 118705b261ecSmrg 118805b261ecSmrg Bool reverse, 118905b261ecSmrg Bool upsidedown); 119005b261ecSmrg 11916747b715Smrgextern _X_EXPORT void 119205b261ecSmrgfbBltStip (FbStip *src, 119305b261ecSmrg FbStride srcStride, /* in FbStip units, not FbBits units */ 119405b261ecSmrg int srcX, 119505b261ecSmrg 119605b261ecSmrg FbStip *dst, 119705b261ecSmrg FbStride dstStride, /* in FbStip units, not FbBits units */ 119805b261ecSmrg int dstX, 119905b261ecSmrg 120005b261ecSmrg int width, 120105b261ecSmrg int height, 120205b261ecSmrg 120305b261ecSmrg int alu, 120405b261ecSmrg FbBits pm, 120505b261ecSmrg int bpp); 120605b261ecSmrg 120705b261ecSmrg/* 120805b261ecSmrg * fbbltone.c 120905b261ecSmrg */ 12106747b715Smrgextern _X_EXPORT void 121105b261ecSmrgfbBltOne (FbStip *src, 121205b261ecSmrg FbStride srcStride, 121305b261ecSmrg int srcX, 121405b261ecSmrg FbBits *dst, 121505b261ecSmrg FbStride dstStride, 121605b261ecSmrg int dstX, 121705b261ecSmrg int dstBpp, 121805b261ecSmrg 121905b261ecSmrg int width, 122005b261ecSmrg int height, 122105b261ecSmrg 122205b261ecSmrg FbBits fgand, 122305b261ecSmrg FbBits fbxor, 122405b261ecSmrg FbBits bgand, 122505b261ecSmrg FbBits bgxor); 122605b261ecSmrg 122705b261ecSmrg#ifdef FB_24BIT 12286747b715Smrgextern _X_EXPORT void 122905b261ecSmrgfbBltOne24 (FbStip *src, 123005b261ecSmrg FbStride srcStride, /* FbStip units per scanline */ 123105b261ecSmrg int srcX, /* bit position of source */ 123205b261ecSmrg FbBits *dst, 123305b261ecSmrg FbStride dstStride, /* FbBits units per scanline */ 123405b261ecSmrg int dstX, /* bit position of dest */ 123505b261ecSmrg int dstBpp, /* bits per destination unit */ 123605b261ecSmrg 123705b261ecSmrg int width, /* width in bits of destination */ 123805b261ecSmrg int height, /* height in scanlines */ 123905b261ecSmrg 124005b261ecSmrg FbBits fgand, /* rrop values */ 124105b261ecSmrg FbBits fgxor, 124205b261ecSmrg FbBits bgand, 124305b261ecSmrg FbBits bgxor); 124405b261ecSmrg#endif 124505b261ecSmrg 12466747b715Smrgextern _X_EXPORT void 124705b261ecSmrgfbBltPlane (FbBits *src, 124805b261ecSmrg FbStride srcStride, 124905b261ecSmrg int srcX, 125005b261ecSmrg int srcBpp, 125105b261ecSmrg 125205b261ecSmrg FbStip *dst, 125305b261ecSmrg FbStride dstStride, 125405b261ecSmrg int dstX, 125505b261ecSmrg 125605b261ecSmrg int width, 125705b261ecSmrg int height, 125805b261ecSmrg 125905b261ecSmrg FbStip fgand, 126005b261ecSmrg FbStip fgxor, 126105b261ecSmrg FbStip bgand, 126205b261ecSmrg FbStip bgxor, 126305b261ecSmrg Pixel planeMask); 126405b261ecSmrg 126505b261ecSmrg/* 126605b261ecSmrg * fbcmap.c 126705b261ecSmrg */ 12686747b715Smrgextern _X_EXPORT int 126905b261ecSmrgfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps); 127005b261ecSmrg 12716747b715Smrgextern _X_EXPORT void 127205b261ecSmrgfbInstallColormap(ColormapPtr pmap); 127305b261ecSmrg 12746747b715Smrgextern _X_EXPORT void 127505b261ecSmrgfbUninstallColormap(ColormapPtr pmap); 127605b261ecSmrg 12776747b715Smrgextern _X_EXPORT void 127805b261ecSmrgfbResolveColor(unsigned short *pred, 127905b261ecSmrg unsigned short *pgreen, 128005b261ecSmrg unsigned short *pblue, 128105b261ecSmrg VisualPtr pVisual); 128205b261ecSmrg 12836747b715Smrgextern _X_EXPORT Bool 128405b261ecSmrgfbInitializeColormap(ColormapPtr pmap); 128505b261ecSmrg 12866747b715Smrgextern _X_EXPORT int 128705b261ecSmrgfbExpandDirectColors (ColormapPtr pmap, 128805b261ecSmrg int ndef, 128905b261ecSmrg xColorItem *indefs, 129005b261ecSmrg xColorItem *outdefs); 129105b261ecSmrg 12926747b715Smrgextern _X_EXPORT Bool 129305b261ecSmrgfbCreateDefColormap(ScreenPtr pScreen); 129405b261ecSmrg 12956747b715Smrgextern _X_EXPORT void 129605b261ecSmrgfbClearVisualTypes(void); 129705b261ecSmrg 12986747b715Smrgextern _X_EXPORT Bool 129905b261ecSmrgfbHasVisualTypes (int depth); 130005b261ecSmrg 13016747b715Smrgextern _X_EXPORT Bool 130205b261ecSmrgfbSetVisualTypes (int depth, int visuals, int bitsPerRGB); 130305b261ecSmrg 13046747b715Smrgextern _X_EXPORT Bool 130505b261ecSmrgfbSetVisualTypesAndMasks (int depth, int visuals, int bitsPerRGB, 130605b261ecSmrg Pixel redMask, Pixel greenMask, Pixel blueMask); 130705b261ecSmrg 13086747b715Smrgextern _X_EXPORT Bool 130905b261ecSmrgfbInitVisuals (VisualPtr *visualp, 131005b261ecSmrg DepthPtr *depthp, 131105b261ecSmrg int *nvisualp, 131205b261ecSmrg int *ndepthp, 131305b261ecSmrg int *rootDepthp, 131405b261ecSmrg VisualID *defaultVisp, 131505b261ecSmrg unsigned long sizes, 131605b261ecSmrg int bitsPerRGB); 131705b261ecSmrg 131805b261ecSmrg/* 131905b261ecSmrg * fbcopy.c 132005b261ecSmrg */ 132105b261ecSmrg 13226747b715Smrg/* Compatibility definition, to be removed at next ABI change. */ 13236747b715Smrgtypedef void (*fbCopyProc) (DrawablePtr pSrcDrawable, 13246747b715Smrg DrawablePtr pDstDrawable, 13256747b715Smrg GCPtr pGC, 13266747b715Smrg BoxPtr pDstBox, 13276747b715Smrg int nbox, 13286747b715Smrg int dx, 13296747b715Smrg int dy, 13306747b715Smrg Bool reverse, 13316747b715Smrg Bool upsidedown, 13326747b715Smrg Pixel bitplane, 13336747b715Smrg void *closure); 13346747b715Smrg 13356747b715Smrgextern _X_EXPORT void 133605b261ecSmrgfbCopyNtoN (DrawablePtr pSrcDrawable, 133705b261ecSmrg DrawablePtr pDstDrawable, 133805b261ecSmrg GCPtr pGC, 133905b261ecSmrg BoxPtr pbox, 134005b261ecSmrg int nbox, 134105b261ecSmrg int dx, 134205b261ecSmrg int dy, 134305b261ecSmrg Bool reverse, 134405b261ecSmrg Bool upsidedown, 134505b261ecSmrg Pixel bitplane, 134605b261ecSmrg void *closure); 134705b261ecSmrg 13486747b715Smrg/* Compatibility wrapper, to be removed at next ABI change. */ 13496747b715Smrgextern _X_EXPORT void 13506747b715SmrgfbCopyRegion (DrawablePtr pSrcDrawable, 13516747b715Smrg DrawablePtr pDstDrawable, 13526747b715Smrg GCPtr pGC, 13536747b715Smrg RegionPtr pDstRegion, 13546747b715Smrg int dx, 13556747b715Smrg int dy, 13566747b715Smrg fbCopyProc copyProc, 13576747b715Smrg Pixel bitPlane, 13586747b715Smrg void *closure); 13596747b715Smrg 13606747b715Smrg/* Compatibility wrapper, to be removed at next ABI change. */ 13616747b715Smrgextern _X_EXPORT RegionPtr 13626747b715SmrgfbDoCopy (DrawablePtr pSrcDrawable, 13636747b715Smrg DrawablePtr pDstDrawable, 13646747b715Smrg GCPtr pGC, 13656747b715Smrg int xIn, 13666747b715Smrg int yIn, 13676747b715Smrg int widthSrc, 13686747b715Smrg int heightSrc, 13696747b715Smrg int xOut, 13706747b715Smrg int yOut, 13716747b715Smrg fbCopyProc copyProc, 13726747b715Smrg Pixel bitplane, 13736747b715Smrg void *closure); 13746747b715Smrg 13756747b715Smrgextern _X_EXPORT void 137605b261ecSmrgfbCopy1toN (DrawablePtr pSrcDrawable, 137705b261ecSmrg DrawablePtr pDstDrawable, 137805b261ecSmrg GCPtr pGC, 137905b261ecSmrg BoxPtr pbox, 138005b261ecSmrg int nbox, 138105b261ecSmrg int dx, 138205b261ecSmrg int dy, 138305b261ecSmrg Bool reverse, 138405b261ecSmrg Bool upsidedown, 138505b261ecSmrg Pixel bitplane, 138605b261ecSmrg void *closure); 138705b261ecSmrg 13886747b715Smrgextern _X_EXPORT void 138905b261ecSmrgfbCopyNto1 (DrawablePtr pSrcDrawable, 139005b261ecSmrg DrawablePtr pDstDrawable, 139105b261ecSmrg GCPtr pGC, 139205b261ecSmrg BoxPtr pbox, 139305b261ecSmrg int nbox, 139405b261ecSmrg int dx, 139505b261ecSmrg int dy, 139605b261ecSmrg Bool reverse, 139705b261ecSmrg Bool upsidedown, 139805b261ecSmrg Pixel bitplane, 139905b261ecSmrg void *closure); 140005b261ecSmrg 14016747b715Smrgextern _X_EXPORT RegionPtr 140205b261ecSmrgfbCopyArea (DrawablePtr pSrcDrawable, 140305b261ecSmrg DrawablePtr pDstDrawable, 140405b261ecSmrg GCPtr pGC, 140505b261ecSmrg int xIn, 140605b261ecSmrg int yIn, 140705b261ecSmrg int widthSrc, 140805b261ecSmrg int heightSrc, 140905b261ecSmrg int xOut, 141005b261ecSmrg int yOut); 141105b261ecSmrg 14126747b715Smrgextern _X_EXPORT RegionPtr 141305b261ecSmrgfbCopyPlane (DrawablePtr pSrcDrawable, 141405b261ecSmrg DrawablePtr pDstDrawable, 141505b261ecSmrg GCPtr pGC, 141605b261ecSmrg int xIn, 141705b261ecSmrg int yIn, 141805b261ecSmrg int widthSrc, 141905b261ecSmrg int heightSrc, 142005b261ecSmrg int xOut, 142105b261ecSmrg int yOut, 142205b261ecSmrg unsigned long bitplane); 142305b261ecSmrg 142405b261ecSmrg/* 142505b261ecSmrg * fbfill.c 142605b261ecSmrg */ 14276747b715Smrgextern _X_EXPORT void 142805b261ecSmrgfbFill (DrawablePtr pDrawable, 142905b261ecSmrg GCPtr pGC, 143005b261ecSmrg int x, 143105b261ecSmrg int y, 143205b261ecSmrg int width, 143305b261ecSmrg int height); 143405b261ecSmrg 14356747b715Smrgextern _X_EXPORT void 143605b261ecSmrgfbSolidBoxClipped (DrawablePtr pDrawable, 143705b261ecSmrg RegionPtr pClip, 143805b261ecSmrg int xa, 143905b261ecSmrg int ya, 144005b261ecSmrg int xb, 144105b261ecSmrg int yb, 144205b261ecSmrg FbBits and, 144305b261ecSmrg FbBits xor); 144405b261ecSmrg 144505b261ecSmrg/* 144605b261ecSmrg * fbfillrect.c 144705b261ecSmrg */ 14486747b715Smrgextern _X_EXPORT void 144905b261ecSmrgfbPolyFillRect(DrawablePtr pDrawable, 145005b261ecSmrg GCPtr pGC, 145105b261ecSmrg int nrectInit, 145205b261ecSmrg xRectangle *prectInit); 145305b261ecSmrg 145405b261ecSmrg#define fbPolyFillArc miPolyFillArc 145505b261ecSmrg 145605b261ecSmrg#define fbFillPolygon miFillPolygon 145705b261ecSmrg 145805b261ecSmrg/* 145905b261ecSmrg * fbfillsp.c 146005b261ecSmrg */ 14616747b715Smrgextern _X_EXPORT void 146205b261ecSmrgfbFillSpans (DrawablePtr pDrawable, 146305b261ecSmrg GCPtr pGC, 146405b261ecSmrg int nInit, 146505b261ecSmrg DDXPointPtr pptInit, 146605b261ecSmrg int *pwidthInit, 146705b261ecSmrg int fSorted); 146805b261ecSmrg 146905b261ecSmrg 147005b261ecSmrg/* 147105b261ecSmrg * fbgc.c 147205b261ecSmrg */ 147305b261ecSmrg 14746747b715Smrgextern _X_EXPORT Bool 147505b261ecSmrgfbCreateGC(GCPtr pGC); 147605b261ecSmrg 14776747b715Smrgextern _X_EXPORT void 147805b261ecSmrgfbPadPixmap (PixmapPtr pPixmap); 147905b261ecSmrg 14806747b715Smrgextern _X_EXPORT void 148105b261ecSmrgfbValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable); 148205b261ecSmrg 148305b261ecSmrg/* 148405b261ecSmrg * fbgetsp.c 148505b261ecSmrg */ 14866747b715Smrgextern _X_EXPORT void 148705b261ecSmrgfbGetSpans(DrawablePtr pDrawable, 148805b261ecSmrg int wMax, 148905b261ecSmrg DDXPointPtr ppt, 149005b261ecSmrg int *pwidth, 149105b261ecSmrg int nspans, 149205b261ecSmrg char *pchardstStart); 149305b261ecSmrg 149405b261ecSmrg/* 149505b261ecSmrg * fbglyph.c 149605b261ecSmrg */ 149705b261ecSmrg 14986747b715Smrgextern _X_EXPORT Bool 149905b261ecSmrgfbGlyphIn (RegionPtr pRegion, 150005b261ecSmrg int x, 150105b261ecSmrg int y, 150205b261ecSmrg int width, 150305b261ecSmrg int height); 150405b261ecSmrg 15056747b715Smrgextern _X_EXPORT void 150605b261ecSmrgfbPolyGlyphBlt (DrawablePtr pDrawable, 150705b261ecSmrg GCPtr pGC, 150805b261ecSmrg int x, 150905b261ecSmrg int y, 151005b261ecSmrg unsigned int nglyph, 151105b261ecSmrg CharInfoPtr *ppci, 151205b261ecSmrg pointer pglyphBase); 151305b261ecSmrg 15146747b715Smrgextern _X_EXPORT void 151505b261ecSmrgfbImageGlyphBlt (DrawablePtr pDrawable, 151605b261ecSmrg GCPtr pGC, 151705b261ecSmrg int x, 151805b261ecSmrg int y, 151905b261ecSmrg unsigned int nglyph, 152005b261ecSmrg CharInfoPtr *ppci, 152105b261ecSmrg pointer pglyphBase); 152205b261ecSmrg 152305b261ecSmrg/* 152405b261ecSmrg * fbimage.c 152505b261ecSmrg */ 152605b261ecSmrg 15276747b715Smrgextern _X_EXPORT void 152805b261ecSmrgfbPutImage (DrawablePtr pDrawable, 152905b261ecSmrg GCPtr pGC, 153005b261ecSmrg int depth, 153105b261ecSmrg int x, 153205b261ecSmrg int y, 153305b261ecSmrg int w, 153405b261ecSmrg int h, 153505b261ecSmrg int leftPad, 153605b261ecSmrg int format, 153705b261ecSmrg char *pImage); 153805b261ecSmrg 15396747b715Smrgextern _X_EXPORT void 154005b261ecSmrgfbPutZImage (DrawablePtr pDrawable, 154105b261ecSmrg RegionPtr pClip, 154205b261ecSmrg int alu, 154305b261ecSmrg FbBits pm, 154405b261ecSmrg int x, 154505b261ecSmrg int y, 154605b261ecSmrg int width, 154705b261ecSmrg int height, 154805b261ecSmrg FbStip *src, 154905b261ecSmrg FbStride srcStride); 155005b261ecSmrg 15516747b715Smrgextern _X_EXPORT void 155205b261ecSmrgfbPutXYImage (DrawablePtr pDrawable, 155305b261ecSmrg RegionPtr pClip, 155405b261ecSmrg FbBits fg, 155505b261ecSmrg FbBits bg, 155605b261ecSmrg FbBits pm, 155705b261ecSmrg int alu, 155805b261ecSmrg Bool opaque, 155905b261ecSmrg 156005b261ecSmrg int x, 156105b261ecSmrg int y, 156205b261ecSmrg int width, 156305b261ecSmrg int height, 156405b261ecSmrg 156505b261ecSmrg FbStip *src, 156605b261ecSmrg FbStride srcStride, 156705b261ecSmrg int srcX); 156805b261ecSmrg 15696747b715Smrgextern _X_EXPORT void 157005b261ecSmrgfbGetImage (DrawablePtr pDrawable, 157105b261ecSmrg int x, 157205b261ecSmrg int y, 157305b261ecSmrg int w, 157405b261ecSmrg int h, 157505b261ecSmrg unsigned int format, 157605b261ecSmrg unsigned long planeMask, 157705b261ecSmrg char *d); 157805b261ecSmrg/* 157905b261ecSmrg * fbline.c 158005b261ecSmrg */ 158105b261ecSmrg 15826747b715Smrgextern _X_EXPORT void 158305b261ecSmrgfbZeroLine (DrawablePtr pDrawable, 158405b261ecSmrg GCPtr pGC, 158505b261ecSmrg int mode, 158605b261ecSmrg int npt, 158705b261ecSmrg DDXPointPtr ppt); 158805b261ecSmrg 15896747b715Smrgextern _X_EXPORT void 159005b261ecSmrgfbZeroSegment (DrawablePtr pDrawable, 159105b261ecSmrg GCPtr pGC, 159205b261ecSmrg int nseg, 159305b261ecSmrg xSegment *pSegs); 159405b261ecSmrg 15956747b715Smrgextern _X_EXPORT void 159605b261ecSmrgfbPolyLine (DrawablePtr pDrawable, 159705b261ecSmrg GCPtr pGC, 159805b261ecSmrg int mode, 159905b261ecSmrg int npt, 160005b261ecSmrg DDXPointPtr ppt); 160105b261ecSmrg 16026747b715Smrgextern _X_EXPORT void 160305b261ecSmrgfbFixCoordModePrevious (int npt, 160405b261ecSmrg DDXPointPtr ppt); 160505b261ecSmrg 16066747b715Smrgextern _X_EXPORT void 160705b261ecSmrgfbPolySegment (DrawablePtr pDrawable, 160805b261ecSmrg GCPtr pGC, 160905b261ecSmrg int nseg, 161005b261ecSmrg xSegment *pseg); 161105b261ecSmrg 161205b261ecSmrg#define fbPolyRectangle miPolyRectangle 161305b261ecSmrg 161405b261ecSmrg/* 161505b261ecSmrg * fbpict.c 161605b261ecSmrg */ 161705b261ecSmrg 16186747b715Smrgextern _X_EXPORT Bool 161905b261ecSmrgfbPictureInit (ScreenPtr pScreen, 162005b261ecSmrg PictFormatPtr formats, 162105b261ecSmrg int nformats); 162205b261ecSmrg 162305b261ecSmrg/* 162405b261ecSmrg * fbpixmap.c 162505b261ecSmrg */ 162605b261ecSmrg 16276747b715Smrgextern _X_EXPORT PixmapPtr 16284642e01fSmrgfbCreatePixmapBpp (ScreenPtr pScreen, int width, int height, int depth, int bpp, 16294642e01fSmrg unsigned usage_hint); 163005b261ecSmrg 16316747b715Smrgextern _X_EXPORT PixmapPtr 16324642e01fSmrgfbCreatePixmap (ScreenPtr pScreen, int width, int height, int depth, 16334642e01fSmrg unsigned usage_hint); 163405b261ecSmrg 16356747b715Smrgextern _X_EXPORT Bool 163605b261ecSmrgfbDestroyPixmap (PixmapPtr pPixmap); 163705b261ecSmrg 16386747b715Smrgextern _X_EXPORT RegionPtr 163905b261ecSmrgfbPixmapToRegion(PixmapPtr pPix); 164005b261ecSmrg 164105b261ecSmrg/* 164205b261ecSmrg * fbpoint.c 164305b261ecSmrg */ 164405b261ecSmrg 16456747b715Smrgextern _X_EXPORT void 164605b261ecSmrgfbDots (FbBits *dstOrig, 164705b261ecSmrg FbStride dstStride, 164805b261ecSmrg int dstBpp, 164905b261ecSmrg BoxPtr pBox, 165005b261ecSmrg xPoint *pts, 165105b261ecSmrg int npt, 165205b261ecSmrg int xorg, 165305b261ecSmrg int yorg, 165405b261ecSmrg int xoff, 165505b261ecSmrg int yoff, 165605b261ecSmrg FbBits andOrig, 165705b261ecSmrg FbBits xorOrig); 165805b261ecSmrg 16596747b715Smrgextern _X_EXPORT void 166005b261ecSmrgfbPolyPoint (DrawablePtr pDrawable, 166105b261ecSmrg GCPtr pGC, 166205b261ecSmrg int mode, 166305b261ecSmrg int npt, 166405b261ecSmrg xPoint *pptInit); 166505b261ecSmrg 166605b261ecSmrg/* 166705b261ecSmrg * fbpush.c 166805b261ecSmrg */ 16696747b715Smrgextern _X_EXPORT void 167005b261ecSmrgfbPushPattern (DrawablePtr pDrawable, 167105b261ecSmrg GCPtr pGC, 167205b261ecSmrg 167305b261ecSmrg FbStip *src, 167405b261ecSmrg FbStride srcStride, 167505b261ecSmrg int srcX, 167605b261ecSmrg 167705b261ecSmrg int x, 167805b261ecSmrg int y, 167905b261ecSmrg 168005b261ecSmrg int width, 168105b261ecSmrg int height); 168205b261ecSmrg 16836747b715Smrgextern _X_EXPORT void 168405b261ecSmrgfbPushFill (DrawablePtr pDrawable, 168505b261ecSmrg GCPtr pGC, 168605b261ecSmrg 168705b261ecSmrg FbStip *src, 168805b261ecSmrg FbStride srcStride, 168905b261ecSmrg int srcX, 169005b261ecSmrg 169105b261ecSmrg int x, 169205b261ecSmrg int y, 169305b261ecSmrg int width, 169405b261ecSmrg int height); 169505b261ecSmrg 16966747b715Smrgextern _X_EXPORT void 169705b261ecSmrgfbPushImage (DrawablePtr pDrawable, 169805b261ecSmrg GCPtr pGC, 169905b261ecSmrg 170005b261ecSmrg FbStip *src, 170105b261ecSmrg FbStride srcStride, 170205b261ecSmrg int srcX, 170305b261ecSmrg 170405b261ecSmrg int x, 170505b261ecSmrg int y, 170605b261ecSmrg int width, 170705b261ecSmrg int height); 170805b261ecSmrg 17096747b715Smrgextern _X_EXPORT void 171005b261ecSmrgfbPushPixels (GCPtr pGC, 171105b261ecSmrg PixmapPtr pBitmap, 171205b261ecSmrg DrawablePtr pDrawable, 171305b261ecSmrg int dx, 171405b261ecSmrg int dy, 171505b261ecSmrg int xOrg, 171605b261ecSmrg int yOrg); 171705b261ecSmrg 171805b261ecSmrg 171905b261ecSmrg/* 172005b261ecSmrg * fbscreen.c 172105b261ecSmrg */ 172205b261ecSmrg 17236747b715Smrgextern _X_EXPORT Bool 172405b261ecSmrgfbCloseScreen (int indx, ScreenPtr pScreen); 172505b261ecSmrg 17266747b715Smrgextern _X_EXPORT Bool 172705b261ecSmrgfbRealizeFont(ScreenPtr pScreen, FontPtr pFont); 172805b261ecSmrg 17296747b715Smrgextern _X_EXPORT Bool 173005b261ecSmrgfbUnrealizeFont(ScreenPtr pScreen, FontPtr pFont); 173105b261ecSmrg 17326747b715Smrgextern _X_EXPORT void 173305b261ecSmrgfbQueryBestSize (int class, 173405b261ecSmrg unsigned short *width, unsigned short *height, 173505b261ecSmrg ScreenPtr pScreen); 173605b261ecSmrg 17376747b715Smrgextern _X_EXPORT PixmapPtr 173805b261ecSmrg_fbGetWindowPixmap (WindowPtr pWindow); 173905b261ecSmrg 17406747b715Smrgextern _X_EXPORT void 174105b261ecSmrg_fbSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap); 174205b261ecSmrg 17436747b715Smrgextern _X_EXPORT Bool 174405b261ecSmrgfbSetupScreen(ScreenPtr pScreen, 174505b261ecSmrg pointer pbits, /* pointer to screen bitmap */ 174605b261ecSmrg int xsize, /* in pixels */ 174705b261ecSmrg int ysize, 174805b261ecSmrg int dpix, /* dots per inch */ 174905b261ecSmrg int dpiy, 175005b261ecSmrg int width, /* pixel width of frame buffer */ 175105b261ecSmrg int bpp); /* bits per pixel of frame buffer */ 175205b261ecSmrg 17536747b715Smrgextern _X_EXPORT Bool 175405b261ecSmrgwfbFinishScreenInit(ScreenPtr pScreen, 175505b261ecSmrg pointer pbits, 175605b261ecSmrg int xsize, 175705b261ecSmrg int ysize, 175805b261ecSmrg int dpix, 175905b261ecSmrg int dpiy, 176005b261ecSmrg int width, 176105b261ecSmrg int bpp, 176205b261ecSmrg SetupWrapProcPtr setupWrap, 176305b261ecSmrg FinishWrapProcPtr finishWrap); 176405b261ecSmrg 17656747b715Smrgextern _X_EXPORT Bool 176605b261ecSmrgwfbScreenInit(ScreenPtr pScreen, 176705b261ecSmrg pointer pbits, 176805b261ecSmrg int xsize, 176905b261ecSmrg int ysize, 177005b261ecSmrg int dpix, 177105b261ecSmrg int dpiy, 177205b261ecSmrg int width, 177305b261ecSmrg int bpp, 177405b261ecSmrg SetupWrapProcPtr setupWrap, 177505b261ecSmrg FinishWrapProcPtr finishWrap); 177605b261ecSmrg 17776747b715Smrgextern _X_EXPORT Bool 177805b261ecSmrgfbFinishScreenInit(ScreenPtr pScreen, 177905b261ecSmrg pointer pbits, 178005b261ecSmrg int xsize, 178105b261ecSmrg int ysize, 178205b261ecSmrg int dpix, 178305b261ecSmrg int dpiy, 178405b261ecSmrg int width, 178505b261ecSmrg int bpp); 178605b261ecSmrg 17876747b715Smrgextern _X_EXPORT Bool 178805b261ecSmrgfbScreenInit(ScreenPtr pScreen, 178905b261ecSmrg pointer pbits, 179005b261ecSmrg int xsize, 179105b261ecSmrg int ysize, 179205b261ecSmrg int dpix, 179305b261ecSmrg int dpiy, 179405b261ecSmrg int width, 179505b261ecSmrg int bpp); 179605b261ecSmrg 179705b261ecSmrg/* 179805b261ecSmrg * fbseg.c 179905b261ecSmrg */ 180005b261ecSmrgtypedef void FbBres (DrawablePtr pDrawable, 180105b261ecSmrg GCPtr pGC, 180205b261ecSmrg int dashOffset, 180305b261ecSmrg int signdx, 180405b261ecSmrg int signdy, 180505b261ecSmrg int axis, 180605b261ecSmrg int x, 180705b261ecSmrg int y, 180805b261ecSmrg int e, 180905b261ecSmrg int e1, 181005b261ecSmrg int e3, 181105b261ecSmrg int len); 181205b261ecSmrg 18136747b715Smrgextern _X_EXPORT FbBres fbBresSolid, fbBresDash, fbBresFill, fbBresFillDash; 181405b261ecSmrg/* 181505b261ecSmrg * fbsetsp.c 181605b261ecSmrg */ 181705b261ecSmrg 18186747b715Smrgextern _X_EXPORT void 181905b261ecSmrgfbSetSpans (DrawablePtr pDrawable, 182005b261ecSmrg GCPtr pGC, 182105b261ecSmrg char *src, 182205b261ecSmrg DDXPointPtr ppt, 182305b261ecSmrg int *pwidth, 182405b261ecSmrg int nspans, 182505b261ecSmrg int fSorted); 182605b261ecSmrg 18276747b715Smrgextern _X_EXPORT FbBres * 182805b261ecSmrgfbSelectBres (DrawablePtr pDrawable, 182905b261ecSmrg GCPtr pGC); 183005b261ecSmrg 18316747b715Smrgextern _X_EXPORT void 183205b261ecSmrgfbBres (DrawablePtr pDrawable, 183305b261ecSmrg GCPtr pGC, 183405b261ecSmrg int dashOffset, 183505b261ecSmrg int signdx, 183605b261ecSmrg int signdy, 183705b261ecSmrg int axis, 183805b261ecSmrg int x, 183905b261ecSmrg int y, 184005b261ecSmrg int e, 184105b261ecSmrg int e1, 184205b261ecSmrg int e3, 184305b261ecSmrg int len); 184405b261ecSmrg 18456747b715Smrgextern _X_EXPORT void 184605b261ecSmrgfbSegment (DrawablePtr pDrawable, 184705b261ecSmrg GCPtr pGC, 184805b261ecSmrg int xa, 184905b261ecSmrg int ya, 185005b261ecSmrg int xb, 185105b261ecSmrg int yb, 185205b261ecSmrg Bool drawLast, 185305b261ecSmrg int *dashOffset); 185405b261ecSmrg 185505b261ecSmrg 185605b261ecSmrg/* 185705b261ecSmrg * fbsolid.c 185805b261ecSmrg */ 185905b261ecSmrg 18606747b715Smrgextern _X_EXPORT void 186105b261ecSmrgfbSolid (FbBits *dst, 186205b261ecSmrg FbStride dstStride, 186305b261ecSmrg int dstX, 186405b261ecSmrg int bpp, 186505b261ecSmrg 186605b261ecSmrg int width, 186705b261ecSmrg int height, 186805b261ecSmrg 186905b261ecSmrg FbBits and, 187005b261ecSmrg FbBits xor); 187105b261ecSmrg 187205b261ecSmrg#ifdef FB_24BIT 18736747b715Smrgextern _X_EXPORT void 187405b261ecSmrgfbSolid24 (FbBits *dst, 187505b261ecSmrg FbStride dstStride, 187605b261ecSmrg int dstX, 187705b261ecSmrg 187805b261ecSmrg int width, 187905b261ecSmrg int height, 188005b261ecSmrg 188105b261ecSmrg FbBits and, 188205b261ecSmrg FbBits xor); 188305b261ecSmrg#endif 188405b261ecSmrg 188505b261ecSmrg/* 188605b261ecSmrg * fbstipple.c 188705b261ecSmrg */ 188805b261ecSmrg 18896747b715Smrgextern _X_EXPORT void 189005b261ecSmrgfbTransparentSpan (FbBits *dst, 189105b261ecSmrg FbBits stip, 189205b261ecSmrg FbBits fgxor, 189305b261ecSmrg int n); 189405b261ecSmrg 18956747b715Smrgextern _X_EXPORT void 189605b261ecSmrgfbEvenStipple (FbBits *dst, 189705b261ecSmrg FbStride dstStride, 189805b261ecSmrg int dstX, 189905b261ecSmrg int dstBpp, 190005b261ecSmrg 190105b261ecSmrg int width, 190205b261ecSmrg int height, 190305b261ecSmrg 190405b261ecSmrg FbStip *stip, 190505b261ecSmrg FbStride stipStride, 190605b261ecSmrg int stipHeight, 190705b261ecSmrg 190805b261ecSmrg FbBits fgand, 190905b261ecSmrg FbBits fgxor, 191005b261ecSmrg FbBits bgand, 191105b261ecSmrg FbBits bgxor, 191205b261ecSmrg 191305b261ecSmrg int xRot, 191405b261ecSmrg int yRot); 191505b261ecSmrg 19166747b715Smrgextern _X_EXPORT void 191705b261ecSmrgfbOddStipple (FbBits *dst, 191805b261ecSmrg FbStride dstStride, 191905b261ecSmrg int dstX, 192005b261ecSmrg int dstBpp, 192105b261ecSmrg 192205b261ecSmrg int width, 192305b261ecSmrg int height, 192405b261ecSmrg 192505b261ecSmrg FbStip *stip, 192605b261ecSmrg FbStride stipStride, 192705b261ecSmrg int stipWidth, 192805b261ecSmrg int stipHeight, 192905b261ecSmrg 193005b261ecSmrg FbBits fgand, 193105b261ecSmrg FbBits fgxor, 193205b261ecSmrg FbBits bgand, 193305b261ecSmrg FbBits bgxor, 193405b261ecSmrg 193505b261ecSmrg int xRot, 193605b261ecSmrg int yRot); 193705b261ecSmrg 19386747b715Smrgextern _X_EXPORT void 193905b261ecSmrgfbStipple (FbBits *dst, 194005b261ecSmrg FbStride dstStride, 194105b261ecSmrg int dstX, 194205b261ecSmrg int dstBpp, 194305b261ecSmrg 194405b261ecSmrg int width, 194505b261ecSmrg int height, 194605b261ecSmrg 194705b261ecSmrg FbStip *stip, 194805b261ecSmrg FbStride stipStride, 194905b261ecSmrg int stipWidth, 195005b261ecSmrg int stipHeight, 195105b261ecSmrg Bool even, 195205b261ecSmrg 195305b261ecSmrg FbBits fgand, 195405b261ecSmrg FbBits fgxor, 195505b261ecSmrg FbBits bgand, 195605b261ecSmrg FbBits bgxor, 195705b261ecSmrg 195805b261ecSmrg int xRot, 195905b261ecSmrg int yRot); 196005b261ecSmrg 196105b261ecSmrg/* 196205b261ecSmrg * fbtile.c 196305b261ecSmrg */ 196405b261ecSmrg 19656747b715Smrgextern _X_EXPORT void 196605b261ecSmrgfbEvenTile (FbBits *dst, 196705b261ecSmrg FbStride dstStride, 196805b261ecSmrg int dstX, 196905b261ecSmrg 197005b261ecSmrg int width, 197105b261ecSmrg int height, 197205b261ecSmrg 197305b261ecSmrg FbBits *tile, 197405b261ecSmrg FbStride tileStride, 197505b261ecSmrg int tileHeight, 197605b261ecSmrg 197705b261ecSmrg int alu, 197805b261ecSmrg FbBits pm, 197905b261ecSmrg int xRot, 198005b261ecSmrg int yRot); 198105b261ecSmrg 19826747b715Smrgextern _X_EXPORT void 198305b261ecSmrgfbOddTile (FbBits *dst, 198405b261ecSmrg FbStride dstStride, 198505b261ecSmrg int dstX, 198605b261ecSmrg 198705b261ecSmrg int width, 198805b261ecSmrg int height, 198905b261ecSmrg 199005b261ecSmrg FbBits *tile, 199105b261ecSmrg FbStride tileStride, 199205b261ecSmrg int tileWidth, 199305b261ecSmrg int tileHeight, 199405b261ecSmrg 199505b261ecSmrg int alu, 199605b261ecSmrg FbBits pm, 199705b261ecSmrg int bpp, 199805b261ecSmrg 199905b261ecSmrg int xRot, 200005b261ecSmrg int yRot); 200105b261ecSmrg 20026747b715Smrgextern _X_EXPORT void 200305b261ecSmrgfbTile (FbBits *dst, 200405b261ecSmrg FbStride dstStride, 200505b261ecSmrg int dstX, 200605b261ecSmrg 200705b261ecSmrg int width, 200805b261ecSmrg int height, 200905b261ecSmrg 201005b261ecSmrg FbBits *tile, 201105b261ecSmrg FbStride tileStride, 201205b261ecSmrg int tileWidth, 201305b261ecSmrg int tileHeight, 201405b261ecSmrg 201505b261ecSmrg int alu, 201605b261ecSmrg FbBits pm, 201705b261ecSmrg int bpp, 201805b261ecSmrg 201905b261ecSmrg int xRot, 202005b261ecSmrg int yRot); 202105b261ecSmrg 202205b261ecSmrg/* 202305b261ecSmrg * fbutil.c 202405b261ecSmrg */ 20256747b715Smrgextern _X_EXPORT FbBits 202605b261ecSmrgfbReplicatePixel (Pixel p, int bpp); 202705b261ecSmrg 20286747b715Smrgextern _X_EXPORT void 202905b261ecSmrgfbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp); 203005b261ecSmrg 203105b261ecSmrg#ifdef FB_ACCESS_WRAPPER 20326747b715Smrgextern _X_EXPORT ReadMemoryProcPtr wfbReadMemory; 20336747b715Smrgextern _X_EXPORT WriteMemoryProcPtr wfbWriteMemory; 203405b261ecSmrg#endif 203505b261ecSmrg 203605b261ecSmrg/* 203705b261ecSmrg * fbwindow.c 203805b261ecSmrg */ 203905b261ecSmrg 20406747b715Smrgextern _X_EXPORT Bool 204105b261ecSmrgfbCreateWindow(WindowPtr pWin); 204205b261ecSmrg 20436747b715Smrgextern _X_EXPORT Bool 204405b261ecSmrgfbDestroyWindow(WindowPtr pWin); 204505b261ecSmrg 20466747b715Smrgextern _X_EXPORT Bool 204705b261ecSmrgfbMapWindow(WindowPtr pWindow); 204805b261ecSmrg 20496747b715Smrgextern _X_EXPORT Bool 205005b261ecSmrgfbPositionWindow(WindowPtr pWin, int x, int y); 205105b261ecSmrg 20526747b715Smrgextern _X_EXPORT Bool 205305b261ecSmrgfbUnmapWindow(WindowPtr pWindow); 205405b261ecSmrg 20556747b715Smrgextern _X_EXPORT void 205605b261ecSmrgfbCopyWindowProc (DrawablePtr pSrcDrawable, 205705b261ecSmrg DrawablePtr pDstDrawable, 205805b261ecSmrg GCPtr pGC, 205905b261ecSmrg BoxPtr pbox, 206005b261ecSmrg int nbox, 206105b261ecSmrg int dx, 206205b261ecSmrg int dy, 206305b261ecSmrg Bool reverse, 206405b261ecSmrg Bool upsidedown, 206505b261ecSmrg Pixel bitplane, 206605b261ecSmrg void *closure); 206705b261ecSmrg 20686747b715Smrgextern _X_EXPORT void 206905b261ecSmrgfbCopyWindow(WindowPtr pWin, 207005b261ecSmrg DDXPointRec ptOldOrg, 207105b261ecSmrg RegionPtr prgnSrc); 207205b261ecSmrg 20736747b715Smrgextern _X_EXPORT Bool 207405b261ecSmrgfbChangeWindowAttributes(WindowPtr pWin, unsigned long mask); 207505b261ecSmrg 20766747b715Smrgextern _X_EXPORT void 207705b261ecSmrgfbFillRegionSolid (DrawablePtr pDrawable, 207805b261ecSmrg RegionPtr pRegion, 207905b261ecSmrg FbBits and, 208005b261ecSmrg FbBits xor); 208105b261ecSmrg 20826747b715Smrgextern _X_EXPORT pixman_image_t * 20836747b715Smrgimage_from_pict (PicturePtr pict, 20846747b715Smrg Bool has_clip, 20856747b715Smrg int *xoff, 20866747b715Smrg int *yoff); 20876747b715Smrg 20886747b715Smrgextern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *); 208905b261ecSmrg 209005b261ecSmrg#endif /* _FB_H_ */ 209105b261ecSmrg 2092