fb.h revision 9ace9065
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 evenStipple; /* stipple is even */ 67005b261ecSmrg unsigned char bpp; /* current drawable bpp */ 67105b261ecSmrg} FbGCPrivRec, *FbGCPrivPtr; 67205b261ecSmrg 67305b261ecSmrg#define fbGetGCPrivate(pGC) ((FbGCPrivPtr)\ 6746747b715Smrg dixLookupPrivate(&(pGC)->devPrivates, fbGetGCPrivateKey())) 67505b261ecSmrg 67605b261ecSmrg#define fbGetCompositeClip(pGC) ((pGC)->pCompositeClip) 67705b261ecSmrg#define fbGetExpose(pGC) ((pGC)->fExpose) 67805b261ecSmrg#define fbGetFreeCompClip(pGC) ((pGC)->freeCompClip) 67905b261ecSmrg#define fbGetRotatedPixmap(pGC) ((pGC)->pRotatedPixmap) 68005b261ecSmrg 68105b261ecSmrg#define fbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate) 68205b261ecSmrg#define fbGetWindowPixmap(pWin) ((PixmapPtr)\ 6836747b715Smrg dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey())) 68405b261ecSmrg 68505b261ecSmrg#ifdef ROOTLESS 68605b261ecSmrg#define __fbPixDrawableX(pPix) ((pPix)->drawable.x) 68705b261ecSmrg#define __fbPixDrawableY(pPix) ((pPix)->drawable.y) 68805b261ecSmrg#else 68905b261ecSmrg#define __fbPixDrawableX(pPix) 0 69005b261ecSmrg#define __fbPixDrawableY(pPix) 0 69105b261ecSmrg#endif 69205b261ecSmrg 69305b261ecSmrg#ifdef COMPOSITE 69405b261ecSmrg#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x) 69505b261ecSmrg#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix) - (pPix)->screen_y) 69605b261ecSmrg#else 69705b261ecSmrg#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix)) 69805b261ecSmrg#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix)) 69905b261ecSmrg#endif 70005b261ecSmrg#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix)) 70105b261ecSmrg#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix)) 70205b261ecSmrg 7036747b715Smrg#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \ 7046747b715Smrg if ((pDrawable)->type != DRAWABLE_PIXMAP) { \ 7056747b715Smrg (pixmap) = fbGetWindowPixmap(pDrawable); \ 7066747b715Smrg (xoff) = __fbPixOffXWin(pixmap); \ 7076747b715Smrg (yoff) = __fbPixOffYWin(pixmap); \ 7086747b715Smrg } else { \ 7096747b715Smrg (pixmap) = (PixmapPtr) (pDrawable); \ 7106747b715Smrg (xoff) = __fbPixOffXPix(pixmap); \ 7116747b715Smrg (yoff) = __fbPixOffYPix(pixmap); \ 7126747b715Smrg } \ 7136747b715Smrg fbPrepareAccess(pDrawable); \ 71405b261ecSmrg} 71505b261ecSmrg 7166747b715Smrg#define fbGetPixmapBitsData(pixmap, pointer, stride, bpp) { \ 7176747b715Smrg (pointer) = (FbBits *) (pixmap)->devPrivate.ptr; \ 7186747b715Smrg (stride) = ((int) (pixmap)->devKind) / sizeof (FbBits); (void)(stride); \ 7196747b715Smrg (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \ 7206747b715Smrg} 7216747b715Smrg 7226747b715Smrg#define fbGetPixmapStipData(pixmap, pointer, stride, bpp) { \ 7236747b715Smrg (pointer) = (FbStip *) (pixmap)->devPrivate.ptr; \ 7246747b715Smrg (stride) = ((int) (pixmap)->devKind) / sizeof (FbStip); (void)(stride); \ 7256747b715Smrg (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \ 7266747b715Smrg} 7276747b715Smrg 7286747b715Smrg#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \ 7296747b715Smrg PixmapPtr _pPix; \ 7306747b715Smrg fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \ 7316747b715Smrg fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \ 7326747b715Smrg} 7336747b715Smrg 7346747b715Smrg#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \ 7356747b715Smrg PixmapPtr _pPix; \ 7366747b715Smrg fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \ 7376747b715Smrg fbGetPixmapStipData(_pPix, pointer, stride, bpp); \ 73805b261ecSmrg} 73905b261ecSmrg 74005b261ecSmrg/* 74105b261ecSmrg * XFree86 empties the root BorderClip when the VT is inactive, 74205b261ecSmrg * here's a macro which uses that to disable GetImage and GetSpans 74305b261ecSmrg */ 74405b261ecSmrg 74505b261ecSmrg#define fbWindowEnabled(pWin) \ 7466747b715Smrg RegionNotEmpty(&(pWin)->drawable.pScreen->root->borderClip) 74705b261ecSmrg 74805b261ecSmrg#define fbDrawableEnabled(pDrawable) \ 74905b261ecSmrg ((pDrawable)->type == DRAWABLE_PIXMAP ? \ 75005b261ecSmrg TRUE : fbWindowEnabled((WindowPtr) pDrawable)) 75105b261ecSmrg 75205b261ecSmrg#define FbPowerOfTwo(w) (((w) & ((w) - 1)) == 0) 75305b261ecSmrg/* 75405b261ecSmrg * Accelerated tiles are power of 2 width <= FB_UNIT 75505b261ecSmrg */ 75605b261ecSmrg#define FbEvenTile(w) ((w) <= FB_UNIT && FbPowerOfTwo(w)) 75705b261ecSmrg/* 75805b261ecSmrg * Accelerated stipples are power of 2 width and <= FB_UNIT/dstBpp 75905b261ecSmrg * with dstBpp a power of 2 as well 76005b261ecSmrg */ 76105b261ecSmrg#define FbEvenStip(w,bpp) ((w) * (bpp) <= FB_UNIT && FbPowerOfTwo(w) && FbPowerOfTwo(bpp)) 76205b261ecSmrg 76305b261ecSmrg/* 76405b261ecSmrg * fb24_32.c 76505b261ecSmrg */ 7666747b715Smrgextern _X_EXPORT void 76705b261ecSmrgfb24_32GetSpans(DrawablePtr pDrawable, 76805b261ecSmrg int wMax, 76905b261ecSmrg DDXPointPtr ppt, 77005b261ecSmrg int *pwidth, 77105b261ecSmrg int nspans, 77205b261ecSmrg char *pchardstStart); 77305b261ecSmrg 7746747b715Smrgextern _X_EXPORT void 77505b261ecSmrgfb24_32SetSpans (DrawablePtr pDrawable, 77605b261ecSmrg GCPtr pGC, 77705b261ecSmrg char *src, 77805b261ecSmrg DDXPointPtr ppt, 77905b261ecSmrg int *pwidth, 78005b261ecSmrg int nspans, 78105b261ecSmrg int fSorted); 78205b261ecSmrg 7836747b715Smrgextern _X_EXPORT void 78405b261ecSmrgfb24_32PutZImage (DrawablePtr pDrawable, 78505b261ecSmrg RegionPtr pClip, 78605b261ecSmrg int alu, 78705b261ecSmrg FbBits pm, 78805b261ecSmrg int x, 78905b261ecSmrg int y, 79005b261ecSmrg int width, 79105b261ecSmrg int height, 79205b261ecSmrg CARD8 *src, 79305b261ecSmrg FbStride srcStride); 79405b261ecSmrg 7956747b715Smrgextern _X_EXPORT void 79605b261ecSmrgfb24_32GetImage (DrawablePtr pDrawable, 79705b261ecSmrg int x, 79805b261ecSmrg int y, 79905b261ecSmrg int w, 80005b261ecSmrg int h, 80105b261ecSmrg unsigned int format, 80205b261ecSmrg unsigned long planeMask, 80305b261ecSmrg char *d); 80405b261ecSmrg 8056747b715Smrgextern _X_EXPORT void 80605b261ecSmrgfb24_32CopyMtoN (DrawablePtr pSrcDrawable, 80705b261ecSmrg DrawablePtr pDstDrawable, 80805b261ecSmrg GCPtr pGC, 80905b261ecSmrg BoxPtr pbox, 81005b261ecSmrg int nbox, 81105b261ecSmrg int dx, 81205b261ecSmrg int dy, 81305b261ecSmrg Bool reverse, 81405b261ecSmrg Bool upsidedown, 81505b261ecSmrg Pixel bitplane, 81605b261ecSmrg void *closure); 81705b261ecSmrg 8186747b715Smrgextern _X_EXPORT PixmapPtr 81905b261ecSmrgfb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel); 82005b261ecSmrg 8216747b715Smrgextern _X_EXPORT Bool 82205b261ecSmrgfb24_32CreateScreenResources(ScreenPtr pScreen); 82305b261ecSmrg 8246747b715Smrgextern _X_EXPORT Bool 82505b261ecSmrgfb24_32ModifyPixmapHeader (PixmapPtr pPixmap, 82605b261ecSmrg int width, 82705b261ecSmrg int height, 82805b261ecSmrg int depth, 82905b261ecSmrg int bitsPerPixel, 83005b261ecSmrg int devKind, 83105b261ecSmrg pointer pPixData); 83205b261ecSmrg 83305b261ecSmrg/* 83405b261ecSmrg * fballpriv.c 83505b261ecSmrg */ 8366747b715Smrgextern _X_EXPORT Bool 8374642e01fSmrgfbAllocatePrivates(ScreenPtr pScreen, DevPrivateKey *pGCIndex); 83805b261ecSmrg 83905b261ecSmrg/* 84005b261ecSmrg * fbarc.c 84105b261ecSmrg */ 84205b261ecSmrg 8436747b715Smrgextern _X_EXPORT void 84405b261ecSmrgfbPolyArc (DrawablePtr pDrawable, 84505b261ecSmrg GCPtr pGC, 84605b261ecSmrg int narcs, 84705b261ecSmrg xArc *parcs); 84805b261ecSmrg 84905b261ecSmrg/* 85005b261ecSmrg * fbbits.c 85105b261ecSmrg */ 85205b261ecSmrg 8536747b715Smrgextern _X_EXPORT void 85405b261ecSmrgfbBresSolid8(DrawablePtr pDrawable, 85505b261ecSmrg GCPtr pGC, 85605b261ecSmrg int dashOffset, 85705b261ecSmrg int signdx, 85805b261ecSmrg int signdy, 85905b261ecSmrg int axis, 86005b261ecSmrg int x, 86105b261ecSmrg int y, 86205b261ecSmrg int e, 86305b261ecSmrg int e1, 86405b261ecSmrg int e3, 86505b261ecSmrg int len); 86605b261ecSmrg 8676747b715Smrgextern _X_EXPORT void 86805b261ecSmrgfbBresDash8 (DrawablePtr pDrawable, 86905b261ecSmrg GCPtr pGC, 87005b261ecSmrg int dashOffset, 87105b261ecSmrg int signdx, 87205b261ecSmrg int signdy, 87305b261ecSmrg int axis, 87405b261ecSmrg int x, 87505b261ecSmrg int y, 87605b261ecSmrg int e, 87705b261ecSmrg int e1, 87805b261ecSmrg int e3, 87905b261ecSmrg int len); 88005b261ecSmrg 8816747b715Smrgextern _X_EXPORT void 88205b261ecSmrgfbDots8 (FbBits *dst, 88305b261ecSmrg FbStride dstStride, 88405b261ecSmrg int dstBpp, 88505b261ecSmrg BoxPtr pBox, 88605b261ecSmrg xPoint *pts, 88705b261ecSmrg int npt, 88805b261ecSmrg int xorg, 88905b261ecSmrg int yorg, 89005b261ecSmrg int xoff, 89105b261ecSmrg int yoff, 89205b261ecSmrg FbBits and, 89305b261ecSmrg FbBits xor); 89405b261ecSmrg 8956747b715Smrgextern _X_EXPORT void 89605b261ecSmrgfbArc8 (FbBits *dst, 89705b261ecSmrg FbStride dstStride, 89805b261ecSmrg int dstBpp, 89905b261ecSmrg xArc *arc, 90005b261ecSmrg int dx, 90105b261ecSmrg int dy, 90205b261ecSmrg FbBits and, 90305b261ecSmrg FbBits xor); 90405b261ecSmrg 9056747b715Smrgextern _X_EXPORT void 90605b261ecSmrgfbGlyph8 (FbBits *dstLine, 90705b261ecSmrg FbStride dstStride, 90805b261ecSmrg int dstBpp, 90905b261ecSmrg FbStip *stipple, 91005b261ecSmrg FbBits fg, 91105b261ecSmrg int height, 91205b261ecSmrg int shift); 91305b261ecSmrg 9146747b715Smrgextern _X_EXPORT void 91505b261ecSmrgfbPolyline8 (DrawablePtr pDrawable, 91605b261ecSmrg GCPtr pGC, 91705b261ecSmrg int mode, 91805b261ecSmrg int npt, 91905b261ecSmrg DDXPointPtr ptsOrig); 92005b261ecSmrg 9216747b715Smrgextern _X_EXPORT void 92205b261ecSmrgfbPolySegment8 (DrawablePtr pDrawable, 92305b261ecSmrg GCPtr pGC, 92405b261ecSmrg int nseg, 92505b261ecSmrg xSegment *pseg); 92605b261ecSmrg 9276747b715Smrgextern _X_EXPORT void 92805b261ecSmrgfbBresSolid16(DrawablePtr pDrawable, 92905b261ecSmrg GCPtr pGC, 93005b261ecSmrg int dashOffset, 93105b261ecSmrg int signdx, 93205b261ecSmrg int signdy, 93305b261ecSmrg int axis, 93405b261ecSmrg int x, 93505b261ecSmrg int y, 93605b261ecSmrg int e, 93705b261ecSmrg int e1, 93805b261ecSmrg int e3, 93905b261ecSmrg int len); 94005b261ecSmrg 9416747b715Smrgextern _X_EXPORT void 94205b261ecSmrgfbBresDash16(DrawablePtr pDrawable, 94305b261ecSmrg GCPtr pGC, 94405b261ecSmrg int dashOffset, 94505b261ecSmrg int signdx, 94605b261ecSmrg int signdy, 94705b261ecSmrg int axis, 94805b261ecSmrg int x, 94905b261ecSmrg int y, 95005b261ecSmrg int e, 95105b261ecSmrg int e1, 95205b261ecSmrg int e3, 95305b261ecSmrg int len); 95405b261ecSmrg 9556747b715Smrgextern _X_EXPORT void 95605b261ecSmrgfbDots16(FbBits *dst, 95705b261ecSmrg FbStride dstStride, 95805b261ecSmrg int dstBpp, 95905b261ecSmrg BoxPtr pBox, 96005b261ecSmrg xPoint *pts, 96105b261ecSmrg int npt, 96205b261ecSmrg int xorg, 96305b261ecSmrg int yorg, 96405b261ecSmrg int xoff, 96505b261ecSmrg int yoff, 96605b261ecSmrg FbBits and, 96705b261ecSmrg FbBits xor); 96805b261ecSmrg 9696747b715Smrgextern _X_EXPORT void 97005b261ecSmrgfbArc16(FbBits *dst, 97105b261ecSmrg FbStride dstStride, 97205b261ecSmrg int dstBpp, 97305b261ecSmrg xArc *arc, 97405b261ecSmrg int dx, 97505b261ecSmrg int dy, 97605b261ecSmrg FbBits and, 97705b261ecSmrg FbBits xor); 97805b261ecSmrg 9796747b715Smrgextern _X_EXPORT void 98005b261ecSmrgfbGlyph16(FbBits *dstLine, 98105b261ecSmrg FbStride dstStride, 98205b261ecSmrg int dstBpp, 98305b261ecSmrg FbStip *stipple, 98405b261ecSmrg FbBits fg, 98505b261ecSmrg int height, 98605b261ecSmrg int shift); 98705b261ecSmrg 9886747b715Smrgextern _X_EXPORT void 98905b261ecSmrgfbPolyline16 (DrawablePtr pDrawable, 99005b261ecSmrg GCPtr pGC, 99105b261ecSmrg int mode, 99205b261ecSmrg int npt, 99305b261ecSmrg DDXPointPtr ptsOrig); 99405b261ecSmrg 9956747b715Smrgextern _X_EXPORT void 99605b261ecSmrgfbPolySegment16 (DrawablePtr pDrawable, 99705b261ecSmrg GCPtr pGC, 99805b261ecSmrg int nseg, 99905b261ecSmrg xSegment *pseg); 100005b261ecSmrg 100105b261ecSmrg 10026747b715Smrgextern _X_EXPORT void 100305b261ecSmrgfbBresSolid24(DrawablePtr pDrawable, 100405b261ecSmrg GCPtr pGC, 100505b261ecSmrg int dashOffset, 100605b261ecSmrg int signdx, 100705b261ecSmrg int signdy, 100805b261ecSmrg int axis, 100905b261ecSmrg int x, 101005b261ecSmrg int y, 101105b261ecSmrg int e, 101205b261ecSmrg int e1, 101305b261ecSmrg int e3, 101405b261ecSmrg int len); 101505b261ecSmrg 10166747b715Smrgextern _X_EXPORT void 101705b261ecSmrgfbBresDash24(DrawablePtr pDrawable, 101805b261ecSmrg GCPtr pGC, 101905b261ecSmrg int dashOffset, 102005b261ecSmrg int signdx, 102105b261ecSmrg int signdy, 102205b261ecSmrg int axis, 102305b261ecSmrg int x, 102405b261ecSmrg int y, 102505b261ecSmrg int e, 102605b261ecSmrg int e1, 102705b261ecSmrg int e3, 102805b261ecSmrg int len); 102905b261ecSmrg 10306747b715Smrgextern _X_EXPORT void 103105b261ecSmrgfbDots24(FbBits *dst, 103205b261ecSmrg FbStride dstStride, 103305b261ecSmrg int dstBpp, 103405b261ecSmrg BoxPtr pBox, 103505b261ecSmrg xPoint *pts, 103605b261ecSmrg int npt, 103705b261ecSmrg int xorg, 103805b261ecSmrg int yorg, 103905b261ecSmrg int xoff, 104005b261ecSmrg int yoff, 104105b261ecSmrg FbBits and, 104205b261ecSmrg FbBits xor); 104305b261ecSmrg 10446747b715Smrgextern _X_EXPORT void 104505b261ecSmrgfbArc24(FbBits *dst, 104605b261ecSmrg FbStride dstStride, 104705b261ecSmrg int dstBpp, 104805b261ecSmrg xArc *arc, 104905b261ecSmrg int dx, 105005b261ecSmrg int dy, 105105b261ecSmrg FbBits and, 105205b261ecSmrg FbBits xor); 105305b261ecSmrg 10546747b715Smrgextern _X_EXPORT void 105505b261ecSmrgfbGlyph24(FbBits *dstLine, 105605b261ecSmrg FbStride dstStride, 105705b261ecSmrg int dstBpp, 105805b261ecSmrg FbStip *stipple, 105905b261ecSmrg FbBits fg, 106005b261ecSmrg int height, 106105b261ecSmrg int shift); 106205b261ecSmrg 10636747b715Smrgextern _X_EXPORT void 106405b261ecSmrgfbPolyline24 (DrawablePtr pDrawable, 106505b261ecSmrg GCPtr pGC, 106605b261ecSmrg int mode, 106705b261ecSmrg int npt, 106805b261ecSmrg DDXPointPtr ptsOrig); 106905b261ecSmrg 10706747b715Smrgextern _X_EXPORT void 107105b261ecSmrgfbPolySegment24 (DrawablePtr pDrawable, 107205b261ecSmrg GCPtr pGC, 107305b261ecSmrg int nseg, 107405b261ecSmrg xSegment *pseg); 107505b261ecSmrg 107605b261ecSmrg 10776747b715Smrgextern _X_EXPORT void 107805b261ecSmrgfbBresSolid32(DrawablePtr pDrawable, 107905b261ecSmrg GCPtr pGC, 108005b261ecSmrg int dashOffset, 108105b261ecSmrg int signdx, 108205b261ecSmrg int signdy, 108305b261ecSmrg int axis, 108405b261ecSmrg int x, 108505b261ecSmrg int y, 108605b261ecSmrg int e, 108705b261ecSmrg int e1, 108805b261ecSmrg int e3, 108905b261ecSmrg int len); 109005b261ecSmrg 10916747b715Smrgextern _X_EXPORT void 109205b261ecSmrgfbBresDash32(DrawablePtr pDrawable, 109305b261ecSmrg GCPtr pGC, 109405b261ecSmrg int dashOffset, 109505b261ecSmrg int signdx, 109605b261ecSmrg int signdy, 109705b261ecSmrg int axis, 109805b261ecSmrg int x, 109905b261ecSmrg int y, 110005b261ecSmrg int e, 110105b261ecSmrg int e1, 110205b261ecSmrg int e3, 110305b261ecSmrg int len); 110405b261ecSmrg 11056747b715Smrgextern _X_EXPORT void 110605b261ecSmrgfbDots32(FbBits *dst, 110705b261ecSmrg FbStride dstStride, 110805b261ecSmrg int dstBpp, 110905b261ecSmrg BoxPtr pBox, 111005b261ecSmrg xPoint *pts, 111105b261ecSmrg int npt, 111205b261ecSmrg int xorg, 111305b261ecSmrg int yorg, 111405b261ecSmrg int xoff, 111505b261ecSmrg int yoff, 111605b261ecSmrg FbBits and, 111705b261ecSmrg FbBits xor); 111805b261ecSmrg 11196747b715Smrgextern _X_EXPORT void 112005b261ecSmrgfbArc32(FbBits *dst, 112105b261ecSmrg FbStride dstStride, 112205b261ecSmrg int dstBpp, 112305b261ecSmrg xArc *arc, 112405b261ecSmrg int dx, 112505b261ecSmrg int dy, 112605b261ecSmrg FbBits and, 112705b261ecSmrg FbBits xor); 112805b261ecSmrg 11296747b715Smrgextern _X_EXPORT void 113005b261ecSmrgfbGlyph32(FbBits *dstLine, 113105b261ecSmrg FbStride dstStride, 113205b261ecSmrg int dstBpp, 113305b261ecSmrg FbStip *stipple, 113405b261ecSmrg FbBits fg, 113505b261ecSmrg int height, 113605b261ecSmrg int shift); 11376747b715Smrgextern _X_EXPORT void 113805b261ecSmrgfbPolyline32 (DrawablePtr pDrawable, 113905b261ecSmrg GCPtr pGC, 114005b261ecSmrg int mode, 114105b261ecSmrg int npt, 114205b261ecSmrg DDXPointPtr ptsOrig); 114305b261ecSmrg 11446747b715Smrgextern _X_EXPORT void 114505b261ecSmrgfbPolySegment32 (DrawablePtr pDrawable, 114605b261ecSmrg GCPtr pGC, 114705b261ecSmrg int nseg, 114805b261ecSmrg xSegment *pseg); 114905b261ecSmrg 115005b261ecSmrg/* 115105b261ecSmrg * fbblt.c 115205b261ecSmrg */ 11536747b715Smrgextern _X_EXPORT void 115405b261ecSmrgfbBlt (FbBits *src, 115505b261ecSmrg FbStride srcStride, 115605b261ecSmrg int srcX, 115705b261ecSmrg 115805b261ecSmrg FbBits *dst, 115905b261ecSmrg FbStride dstStride, 116005b261ecSmrg int dstX, 116105b261ecSmrg 116205b261ecSmrg int width, 116305b261ecSmrg int height, 116405b261ecSmrg 116505b261ecSmrg int alu, 116605b261ecSmrg FbBits pm, 116705b261ecSmrg int bpp, 116805b261ecSmrg 116905b261ecSmrg Bool reverse, 117005b261ecSmrg Bool upsidedown); 117105b261ecSmrg 11726747b715Smrgextern _X_EXPORT void 117305b261ecSmrgfbBlt24 (FbBits *srcLine, 117405b261ecSmrg FbStride srcStride, 117505b261ecSmrg int srcX, 117605b261ecSmrg 117705b261ecSmrg FbBits *dstLine, 117805b261ecSmrg FbStride dstStride, 117905b261ecSmrg int dstX, 118005b261ecSmrg 118105b261ecSmrg int width, 118205b261ecSmrg int height, 118305b261ecSmrg 118405b261ecSmrg int alu, 118505b261ecSmrg FbBits pm, 118605b261ecSmrg 118705b261ecSmrg Bool reverse, 118805b261ecSmrg Bool upsidedown); 118905b261ecSmrg 11906747b715Smrgextern _X_EXPORT void 119105b261ecSmrgfbBltStip (FbStip *src, 119205b261ecSmrg FbStride srcStride, /* in FbStip units, not FbBits units */ 119305b261ecSmrg int srcX, 119405b261ecSmrg 119505b261ecSmrg FbStip *dst, 119605b261ecSmrg FbStride dstStride, /* in FbStip units, not FbBits units */ 119705b261ecSmrg int dstX, 119805b261ecSmrg 119905b261ecSmrg int width, 120005b261ecSmrg int height, 120105b261ecSmrg 120205b261ecSmrg int alu, 120305b261ecSmrg FbBits pm, 120405b261ecSmrg int bpp); 120505b261ecSmrg 120605b261ecSmrg/* 120705b261ecSmrg * fbbltone.c 120805b261ecSmrg */ 12096747b715Smrgextern _X_EXPORT void 121005b261ecSmrgfbBltOne (FbStip *src, 121105b261ecSmrg FbStride srcStride, 121205b261ecSmrg int srcX, 121305b261ecSmrg FbBits *dst, 121405b261ecSmrg FbStride dstStride, 121505b261ecSmrg int dstX, 121605b261ecSmrg int dstBpp, 121705b261ecSmrg 121805b261ecSmrg int width, 121905b261ecSmrg int height, 122005b261ecSmrg 122105b261ecSmrg FbBits fgand, 122205b261ecSmrg FbBits fbxor, 122305b261ecSmrg FbBits bgand, 122405b261ecSmrg FbBits bgxor); 122505b261ecSmrg 122605b261ecSmrg#ifdef FB_24BIT 12276747b715Smrgextern _X_EXPORT void 122805b261ecSmrgfbBltOne24 (FbStip *src, 122905b261ecSmrg FbStride srcStride, /* FbStip units per scanline */ 123005b261ecSmrg int srcX, /* bit position of source */ 123105b261ecSmrg FbBits *dst, 123205b261ecSmrg FbStride dstStride, /* FbBits units per scanline */ 123305b261ecSmrg int dstX, /* bit position of dest */ 123405b261ecSmrg int dstBpp, /* bits per destination unit */ 123505b261ecSmrg 123605b261ecSmrg int width, /* width in bits of destination */ 123705b261ecSmrg int height, /* height in scanlines */ 123805b261ecSmrg 123905b261ecSmrg FbBits fgand, /* rrop values */ 124005b261ecSmrg FbBits fgxor, 124105b261ecSmrg FbBits bgand, 124205b261ecSmrg FbBits bgxor); 124305b261ecSmrg#endif 124405b261ecSmrg 12456747b715Smrgextern _X_EXPORT void 124605b261ecSmrgfbBltPlane (FbBits *src, 124705b261ecSmrg FbStride srcStride, 124805b261ecSmrg int srcX, 124905b261ecSmrg int srcBpp, 125005b261ecSmrg 125105b261ecSmrg FbStip *dst, 125205b261ecSmrg FbStride dstStride, 125305b261ecSmrg int dstX, 125405b261ecSmrg 125505b261ecSmrg int width, 125605b261ecSmrg int height, 125705b261ecSmrg 125805b261ecSmrg FbStip fgand, 125905b261ecSmrg FbStip fgxor, 126005b261ecSmrg FbStip bgand, 126105b261ecSmrg FbStip bgxor, 126205b261ecSmrg Pixel planeMask); 126305b261ecSmrg 126405b261ecSmrg/* 12659ace9065Smrg * fbcmap_mi.c 126605b261ecSmrg */ 12676747b715Smrgextern _X_EXPORT int 126805b261ecSmrgfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps); 126905b261ecSmrg 12706747b715Smrgextern _X_EXPORT void 127105b261ecSmrgfbInstallColormap(ColormapPtr pmap); 127205b261ecSmrg 12736747b715Smrgextern _X_EXPORT void 127405b261ecSmrgfbUninstallColormap(ColormapPtr pmap); 127505b261ecSmrg 12766747b715Smrgextern _X_EXPORT void 127705b261ecSmrgfbResolveColor(unsigned short *pred, 127805b261ecSmrg unsigned short *pgreen, 127905b261ecSmrg unsigned short *pblue, 128005b261ecSmrg VisualPtr pVisual); 128105b261ecSmrg 12826747b715Smrgextern _X_EXPORT Bool 128305b261ecSmrgfbInitializeColormap(ColormapPtr pmap); 128405b261ecSmrg 12856747b715Smrgextern _X_EXPORT int 128605b261ecSmrgfbExpandDirectColors (ColormapPtr pmap, 128705b261ecSmrg int ndef, 128805b261ecSmrg xColorItem *indefs, 128905b261ecSmrg xColorItem *outdefs); 129005b261ecSmrg 12916747b715Smrgextern _X_EXPORT Bool 129205b261ecSmrgfbCreateDefColormap(ScreenPtr pScreen); 129305b261ecSmrg 12946747b715Smrgextern _X_EXPORT void 129505b261ecSmrgfbClearVisualTypes(void); 129605b261ecSmrg 12976747b715Smrgextern _X_EXPORT Bool 129805b261ecSmrgfbHasVisualTypes (int depth); 129905b261ecSmrg 13006747b715Smrgextern _X_EXPORT Bool 130105b261ecSmrgfbSetVisualTypes (int depth, int visuals, int bitsPerRGB); 130205b261ecSmrg 13036747b715Smrgextern _X_EXPORT Bool 130405b261ecSmrgfbSetVisualTypesAndMasks (int depth, int visuals, int bitsPerRGB, 130505b261ecSmrg Pixel redMask, Pixel greenMask, Pixel blueMask); 130605b261ecSmrg 13076747b715Smrgextern _X_EXPORT Bool 130805b261ecSmrgfbInitVisuals (VisualPtr *visualp, 130905b261ecSmrg DepthPtr *depthp, 131005b261ecSmrg int *nvisualp, 131105b261ecSmrg int *ndepthp, 131205b261ecSmrg int *rootDepthp, 131305b261ecSmrg VisualID *defaultVisp, 131405b261ecSmrg unsigned long sizes, 131505b261ecSmrg int bitsPerRGB); 131605b261ecSmrg 131705b261ecSmrg/* 131805b261ecSmrg * fbcopy.c 131905b261ecSmrg */ 132005b261ecSmrg 13216747b715Smrg/* Compatibility definition, to be removed at next ABI change. */ 13226747b715Smrgtypedef void (*fbCopyProc) (DrawablePtr pSrcDrawable, 13236747b715Smrg DrawablePtr pDstDrawable, 13246747b715Smrg GCPtr pGC, 13256747b715Smrg BoxPtr pDstBox, 13266747b715Smrg int nbox, 13276747b715Smrg int dx, 13286747b715Smrg int dy, 13296747b715Smrg Bool reverse, 13306747b715Smrg Bool upsidedown, 13316747b715Smrg Pixel bitplane, 13326747b715Smrg void *closure); 13336747b715Smrg 13346747b715Smrgextern _X_EXPORT void 133505b261ecSmrgfbCopyNtoN (DrawablePtr pSrcDrawable, 133605b261ecSmrg DrawablePtr pDstDrawable, 133705b261ecSmrg GCPtr pGC, 133805b261ecSmrg BoxPtr pbox, 133905b261ecSmrg int nbox, 134005b261ecSmrg int dx, 134105b261ecSmrg int dy, 134205b261ecSmrg Bool reverse, 134305b261ecSmrg Bool upsidedown, 134405b261ecSmrg Pixel bitplane, 134505b261ecSmrg void *closure); 134605b261ecSmrg 13476747b715Smrg/* Compatibility wrapper, to be removed at next ABI change. */ 13486747b715Smrgextern _X_EXPORT void 13496747b715SmrgfbCopyRegion (DrawablePtr pSrcDrawable, 13506747b715Smrg DrawablePtr pDstDrawable, 13516747b715Smrg GCPtr pGC, 13526747b715Smrg RegionPtr pDstRegion, 13536747b715Smrg int dx, 13546747b715Smrg int dy, 13556747b715Smrg fbCopyProc copyProc, 13566747b715Smrg Pixel bitPlane, 13576747b715Smrg void *closure); 13586747b715Smrg 13596747b715Smrg/* Compatibility wrapper, to be removed at next ABI change. */ 13606747b715Smrgextern _X_EXPORT RegionPtr 13616747b715SmrgfbDoCopy (DrawablePtr pSrcDrawable, 13626747b715Smrg DrawablePtr pDstDrawable, 13636747b715Smrg GCPtr pGC, 13646747b715Smrg int xIn, 13656747b715Smrg int yIn, 13666747b715Smrg int widthSrc, 13676747b715Smrg int heightSrc, 13686747b715Smrg int xOut, 13696747b715Smrg int yOut, 13706747b715Smrg fbCopyProc copyProc, 13716747b715Smrg Pixel bitplane, 13726747b715Smrg void *closure); 13736747b715Smrg 13746747b715Smrgextern _X_EXPORT void 137505b261ecSmrgfbCopy1toN (DrawablePtr pSrcDrawable, 137605b261ecSmrg DrawablePtr pDstDrawable, 137705b261ecSmrg GCPtr pGC, 137805b261ecSmrg BoxPtr pbox, 137905b261ecSmrg int nbox, 138005b261ecSmrg int dx, 138105b261ecSmrg int dy, 138205b261ecSmrg Bool reverse, 138305b261ecSmrg Bool upsidedown, 138405b261ecSmrg Pixel bitplane, 138505b261ecSmrg void *closure); 138605b261ecSmrg 13876747b715Smrgextern _X_EXPORT void 138805b261ecSmrgfbCopyNto1 (DrawablePtr pSrcDrawable, 138905b261ecSmrg DrawablePtr pDstDrawable, 139005b261ecSmrg GCPtr pGC, 139105b261ecSmrg BoxPtr pbox, 139205b261ecSmrg int nbox, 139305b261ecSmrg int dx, 139405b261ecSmrg int dy, 139505b261ecSmrg Bool reverse, 139605b261ecSmrg Bool upsidedown, 139705b261ecSmrg Pixel bitplane, 139805b261ecSmrg void *closure); 139905b261ecSmrg 14006747b715Smrgextern _X_EXPORT RegionPtr 140105b261ecSmrgfbCopyArea (DrawablePtr pSrcDrawable, 140205b261ecSmrg DrawablePtr pDstDrawable, 140305b261ecSmrg GCPtr pGC, 140405b261ecSmrg int xIn, 140505b261ecSmrg int yIn, 140605b261ecSmrg int widthSrc, 140705b261ecSmrg int heightSrc, 140805b261ecSmrg int xOut, 140905b261ecSmrg int yOut); 141005b261ecSmrg 14116747b715Smrgextern _X_EXPORT RegionPtr 141205b261ecSmrgfbCopyPlane (DrawablePtr pSrcDrawable, 141305b261ecSmrg DrawablePtr pDstDrawable, 141405b261ecSmrg GCPtr pGC, 141505b261ecSmrg int xIn, 141605b261ecSmrg int yIn, 141705b261ecSmrg int widthSrc, 141805b261ecSmrg int heightSrc, 141905b261ecSmrg int xOut, 142005b261ecSmrg int yOut, 142105b261ecSmrg unsigned long bitplane); 142205b261ecSmrg 142305b261ecSmrg/* 142405b261ecSmrg * fbfill.c 142505b261ecSmrg */ 14266747b715Smrgextern _X_EXPORT void 142705b261ecSmrgfbFill (DrawablePtr pDrawable, 142805b261ecSmrg GCPtr pGC, 142905b261ecSmrg int x, 143005b261ecSmrg int y, 143105b261ecSmrg int width, 143205b261ecSmrg int height); 143305b261ecSmrg 14346747b715Smrgextern _X_EXPORT void 143505b261ecSmrgfbSolidBoxClipped (DrawablePtr pDrawable, 143605b261ecSmrg RegionPtr pClip, 143705b261ecSmrg int xa, 143805b261ecSmrg int ya, 143905b261ecSmrg int xb, 144005b261ecSmrg int yb, 144105b261ecSmrg FbBits and, 144205b261ecSmrg FbBits xor); 144305b261ecSmrg 144405b261ecSmrg/* 144505b261ecSmrg * fbfillrect.c 144605b261ecSmrg */ 14476747b715Smrgextern _X_EXPORT void 144805b261ecSmrgfbPolyFillRect(DrawablePtr pDrawable, 144905b261ecSmrg GCPtr pGC, 145005b261ecSmrg int nrectInit, 145105b261ecSmrg xRectangle *prectInit); 145205b261ecSmrg 145305b261ecSmrg#define fbPolyFillArc miPolyFillArc 145405b261ecSmrg 145505b261ecSmrg#define fbFillPolygon miFillPolygon 145605b261ecSmrg 145705b261ecSmrg/* 145805b261ecSmrg * fbfillsp.c 145905b261ecSmrg */ 14606747b715Smrgextern _X_EXPORT void 146105b261ecSmrgfbFillSpans (DrawablePtr pDrawable, 146205b261ecSmrg GCPtr pGC, 146305b261ecSmrg int nInit, 146405b261ecSmrg DDXPointPtr pptInit, 146505b261ecSmrg int *pwidthInit, 146605b261ecSmrg int fSorted); 146705b261ecSmrg 146805b261ecSmrg 146905b261ecSmrg/* 147005b261ecSmrg * fbgc.c 147105b261ecSmrg */ 147205b261ecSmrg 14736747b715Smrgextern _X_EXPORT Bool 147405b261ecSmrgfbCreateGC(GCPtr pGC); 147505b261ecSmrg 14766747b715Smrgextern _X_EXPORT void 147705b261ecSmrgfbPadPixmap (PixmapPtr pPixmap); 147805b261ecSmrg 14796747b715Smrgextern _X_EXPORT void 148005b261ecSmrgfbValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable); 148105b261ecSmrg 148205b261ecSmrg/* 148305b261ecSmrg * fbgetsp.c 148405b261ecSmrg */ 14856747b715Smrgextern _X_EXPORT void 148605b261ecSmrgfbGetSpans(DrawablePtr pDrawable, 148705b261ecSmrg int wMax, 148805b261ecSmrg DDXPointPtr ppt, 148905b261ecSmrg int *pwidth, 149005b261ecSmrg int nspans, 149105b261ecSmrg char *pchardstStart); 149205b261ecSmrg 149305b261ecSmrg/* 149405b261ecSmrg * fbglyph.c 149505b261ecSmrg */ 149605b261ecSmrg 14976747b715Smrgextern _X_EXPORT Bool 149805b261ecSmrgfbGlyphIn (RegionPtr pRegion, 149905b261ecSmrg int x, 150005b261ecSmrg int y, 150105b261ecSmrg int width, 150205b261ecSmrg int height); 150305b261ecSmrg 15046747b715Smrgextern _X_EXPORT void 150505b261ecSmrgfbPolyGlyphBlt (DrawablePtr pDrawable, 150605b261ecSmrg GCPtr pGC, 150705b261ecSmrg int x, 150805b261ecSmrg int y, 150905b261ecSmrg unsigned int nglyph, 151005b261ecSmrg CharInfoPtr *ppci, 151105b261ecSmrg pointer pglyphBase); 151205b261ecSmrg 15136747b715Smrgextern _X_EXPORT void 151405b261ecSmrgfbImageGlyphBlt (DrawablePtr pDrawable, 151505b261ecSmrg GCPtr pGC, 151605b261ecSmrg int x, 151705b261ecSmrg int y, 151805b261ecSmrg unsigned int nglyph, 151905b261ecSmrg CharInfoPtr *ppci, 152005b261ecSmrg pointer pglyphBase); 152105b261ecSmrg 152205b261ecSmrg/* 152305b261ecSmrg * fbimage.c 152405b261ecSmrg */ 152505b261ecSmrg 15266747b715Smrgextern _X_EXPORT void 152705b261ecSmrgfbPutImage (DrawablePtr pDrawable, 152805b261ecSmrg GCPtr pGC, 152905b261ecSmrg int depth, 153005b261ecSmrg int x, 153105b261ecSmrg int y, 153205b261ecSmrg int w, 153305b261ecSmrg int h, 153405b261ecSmrg int leftPad, 153505b261ecSmrg int format, 153605b261ecSmrg char *pImage); 153705b261ecSmrg 15386747b715Smrgextern _X_EXPORT void 153905b261ecSmrgfbPutZImage (DrawablePtr pDrawable, 154005b261ecSmrg RegionPtr pClip, 154105b261ecSmrg int alu, 154205b261ecSmrg FbBits pm, 154305b261ecSmrg int x, 154405b261ecSmrg int y, 154505b261ecSmrg int width, 154605b261ecSmrg int height, 154705b261ecSmrg FbStip *src, 154805b261ecSmrg FbStride srcStride); 154905b261ecSmrg 15506747b715Smrgextern _X_EXPORT void 155105b261ecSmrgfbPutXYImage (DrawablePtr pDrawable, 155205b261ecSmrg RegionPtr pClip, 155305b261ecSmrg FbBits fg, 155405b261ecSmrg FbBits bg, 155505b261ecSmrg FbBits pm, 155605b261ecSmrg int alu, 155705b261ecSmrg Bool opaque, 155805b261ecSmrg 155905b261ecSmrg int x, 156005b261ecSmrg int y, 156105b261ecSmrg int width, 156205b261ecSmrg int height, 156305b261ecSmrg 156405b261ecSmrg FbStip *src, 156505b261ecSmrg FbStride srcStride, 156605b261ecSmrg int srcX); 156705b261ecSmrg 15686747b715Smrgextern _X_EXPORT void 156905b261ecSmrgfbGetImage (DrawablePtr pDrawable, 157005b261ecSmrg int x, 157105b261ecSmrg int y, 157205b261ecSmrg int w, 157305b261ecSmrg int h, 157405b261ecSmrg unsigned int format, 157505b261ecSmrg unsigned long planeMask, 157605b261ecSmrg char *d); 157705b261ecSmrg/* 157805b261ecSmrg * fbline.c 157905b261ecSmrg */ 158005b261ecSmrg 15816747b715Smrgextern _X_EXPORT void 158205b261ecSmrgfbZeroLine (DrawablePtr pDrawable, 158305b261ecSmrg GCPtr pGC, 158405b261ecSmrg int mode, 158505b261ecSmrg int npt, 158605b261ecSmrg DDXPointPtr ppt); 158705b261ecSmrg 15886747b715Smrgextern _X_EXPORT void 158905b261ecSmrgfbZeroSegment (DrawablePtr pDrawable, 159005b261ecSmrg GCPtr pGC, 159105b261ecSmrg int nseg, 159205b261ecSmrg xSegment *pSegs); 159305b261ecSmrg 15946747b715Smrgextern _X_EXPORT void 159505b261ecSmrgfbPolyLine (DrawablePtr pDrawable, 159605b261ecSmrg GCPtr pGC, 159705b261ecSmrg int mode, 159805b261ecSmrg int npt, 159905b261ecSmrg DDXPointPtr ppt); 160005b261ecSmrg 16016747b715Smrgextern _X_EXPORT void 160205b261ecSmrgfbFixCoordModePrevious (int npt, 160305b261ecSmrg DDXPointPtr ppt); 160405b261ecSmrg 16056747b715Smrgextern _X_EXPORT void 160605b261ecSmrgfbPolySegment (DrawablePtr pDrawable, 160705b261ecSmrg GCPtr pGC, 160805b261ecSmrg int nseg, 160905b261ecSmrg xSegment *pseg); 161005b261ecSmrg 161105b261ecSmrg#define fbPolyRectangle miPolyRectangle 161205b261ecSmrg 161305b261ecSmrg/* 161405b261ecSmrg * fbpict.c 161505b261ecSmrg */ 161605b261ecSmrg 16176747b715Smrgextern _X_EXPORT Bool 161805b261ecSmrgfbPictureInit (ScreenPtr pScreen, 161905b261ecSmrg PictFormatPtr formats, 162005b261ecSmrg int nformats); 162105b261ecSmrg 162205b261ecSmrg/* 162305b261ecSmrg * fbpixmap.c 162405b261ecSmrg */ 162505b261ecSmrg 16266747b715Smrgextern _X_EXPORT PixmapPtr 16274642e01fSmrgfbCreatePixmapBpp (ScreenPtr pScreen, int width, int height, int depth, int bpp, 16284642e01fSmrg unsigned usage_hint); 162905b261ecSmrg 16306747b715Smrgextern _X_EXPORT PixmapPtr 16314642e01fSmrgfbCreatePixmap (ScreenPtr pScreen, int width, int height, int depth, 16324642e01fSmrg unsigned usage_hint); 163305b261ecSmrg 16346747b715Smrgextern _X_EXPORT Bool 163505b261ecSmrgfbDestroyPixmap (PixmapPtr pPixmap); 163605b261ecSmrg 16376747b715Smrgextern _X_EXPORT RegionPtr 163805b261ecSmrgfbPixmapToRegion(PixmapPtr pPix); 163905b261ecSmrg 164005b261ecSmrg/* 164105b261ecSmrg * fbpoint.c 164205b261ecSmrg */ 164305b261ecSmrg 16446747b715Smrgextern _X_EXPORT void 164505b261ecSmrgfbDots (FbBits *dstOrig, 164605b261ecSmrg FbStride dstStride, 164705b261ecSmrg int dstBpp, 164805b261ecSmrg BoxPtr pBox, 164905b261ecSmrg xPoint *pts, 165005b261ecSmrg int npt, 165105b261ecSmrg int xorg, 165205b261ecSmrg int yorg, 165305b261ecSmrg int xoff, 165405b261ecSmrg int yoff, 165505b261ecSmrg FbBits andOrig, 165605b261ecSmrg FbBits xorOrig); 165705b261ecSmrg 16586747b715Smrgextern _X_EXPORT void 165905b261ecSmrgfbPolyPoint (DrawablePtr pDrawable, 166005b261ecSmrg GCPtr pGC, 166105b261ecSmrg int mode, 166205b261ecSmrg int npt, 166305b261ecSmrg xPoint *pptInit); 166405b261ecSmrg 166505b261ecSmrg/* 166605b261ecSmrg * fbpush.c 166705b261ecSmrg */ 16686747b715Smrgextern _X_EXPORT void 166905b261ecSmrgfbPushPattern (DrawablePtr pDrawable, 167005b261ecSmrg GCPtr pGC, 167105b261ecSmrg 167205b261ecSmrg FbStip *src, 167305b261ecSmrg FbStride srcStride, 167405b261ecSmrg int srcX, 167505b261ecSmrg 167605b261ecSmrg int x, 167705b261ecSmrg int y, 167805b261ecSmrg 167905b261ecSmrg int width, 168005b261ecSmrg int height); 168105b261ecSmrg 16826747b715Smrgextern _X_EXPORT void 168305b261ecSmrgfbPushFill (DrawablePtr pDrawable, 168405b261ecSmrg GCPtr pGC, 168505b261ecSmrg 168605b261ecSmrg FbStip *src, 168705b261ecSmrg FbStride srcStride, 168805b261ecSmrg int srcX, 168905b261ecSmrg 169005b261ecSmrg int x, 169105b261ecSmrg int y, 169205b261ecSmrg int width, 169305b261ecSmrg int height); 169405b261ecSmrg 16956747b715Smrgextern _X_EXPORT void 169605b261ecSmrgfbPushImage (DrawablePtr pDrawable, 169705b261ecSmrg GCPtr pGC, 169805b261ecSmrg 169905b261ecSmrg FbStip *src, 170005b261ecSmrg FbStride srcStride, 170105b261ecSmrg int srcX, 170205b261ecSmrg 170305b261ecSmrg int x, 170405b261ecSmrg int y, 170505b261ecSmrg int width, 170605b261ecSmrg int height); 170705b261ecSmrg 17086747b715Smrgextern _X_EXPORT void 170905b261ecSmrgfbPushPixels (GCPtr pGC, 171005b261ecSmrg PixmapPtr pBitmap, 171105b261ecSmrg DrawablePtr pDrawable, 171205b261ecSmrg int dx, 171305b261ecSmrg int dy, 171405b261ecSmrg int xOrg, 171505b261ecSmrg int yOrg); 171605b261ecSmrg 171705b261ecSmrg 171805b261ecSmrg/* 171905b261ecSmrg * fbscreen.c 172005b261ecSmrg */ 172105b261ecSmrg 17226747b715Smrgextern _X_EXPORT Bool 172305b261ecSmrgfbCloseScreen (int indx, ScreenPtr pScreen); 172405b261ecSmrg 17256747b715Smrgextern _X_EXPORT Bool 172605b261ecSmrgfbRealizeFont(ScreenPtr pScreen, FontPtr pFont); 172705b261ecSmrg 17286747b715Smrgextern _X_EXPORT Bool 172905b261ecSmrgfbUnrealizeFont(ScreenPtr pScreen, FontPtr pFont); 173005b261ecSmrg 17316747b715Smrgextern _X_EXPORT void 173205b261ecSmrgfbQueryBestSize (int class, 173305b261ecSmrg unsigned short *width, unsigned short *height, 173405b261ecSmrg ScreenPtr pScreen); 173505b261ecSmrg 17366747b715Smrgextern _X_EXPORT PixmapPtr 173705b261ecSmrg_fbGetWindowPixmap (WindowPtr pWindow); 173805b261ecSmrg 17396747b715Smrgextern _X_EXPORT void 174005b261ecSmrg_fbSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap); 174105b261ecSmrg 17426747b715Smrgextern _X_EXPORT Bool 174305b261ecSmrgfbSetupScreen(ScreenPtr pScreen, 174405b261ecSmrg pointer pbits, /* pointer to screen bitmap */ 174505b261ecSmrg int xsize, /* in pixels */ 174605b261ecSmrg int ysize, 174705b261ecSmrg int dpix, /* dots per inch */ 174805b261ecSmrg int dpiy, 174905b261ecSmrg int width, /* pixel width of frame buffer */ 175005b261ecSmrg int bpp); /* bits per pixel of frame buffer */ 175105b261ecSmrg 17526747b715Smrgextern _X_EXPORT Bool 175305b261ecSmrgwfbFinishScreenInit(ScreenPtr pScreen, 175405b261ecSmrg pointer pbits, 175505b261ecSmrg int xsize, 175605b261ecSmrg int ysize, 175705b261ecSmrg int dpix, 175805b261ecSmrg int dpiy, 175905b261ecSmrg int width, 176005b261ecSmrg int bpp, 176105b261ecSmrg SetupWrapProcPtr setupWrap, 176205b261ecSmrg FinishWrapProcPtr finishWrap); 176305b261ecSmrg 17646747b715Smrgextern _X_EXPORT Bool 176505b261ecSmrgwfbScreenInit(ScreenPtr pScreen, 176605b261ecSmrg pointer pbits, 176705b261ecSmrg int xsize, 176805b261ecSmrg int ysize, 176905b261ecSmrg int dpix, 177005b261ecSmrg int dpiy, 177105b261ecSmrg int width, 177205b261ecSmrg int bpp, 177305b261ecSmrg SetupWrapProcPtr setupWrap, 177405b261ecSmrg FinishWrapProcPtr finishWrap); 177505b261ecSmrg 17766747b715Smrgextern _X_EXPORT Bool 177705b261ecSmrgfbFinishScreenInit(ScreenPtr pScreen, 177805b261ecSmrg pointer pbits, 177905b261ecSmrg int xsize, 178005b261ecSmrg int ysize, 178105b261ecSmrg int dpix, 178205b261ecSmrg int dpiy, 178305b261ecSmrg int width, 178405b261ecSmrg int bpp); 178505b261ecSmrg 17866747b715Smrgextern _X_EXPORT Bool 178705b261ecSmrgfbScreenInit(ScreenPtr pScreen, 178805b261ecSmrg pointer pbits, 178905b261ecSmrg int xsize, 179005b261ecSmrg int ysize, 179105b261ecSmrg int dpix, 179205b261ecSmrg int dpiy, 179305b261ecSmrg int width, 179405b261ecSmrg int bpp); 179505b261ecSmrg 179605b261ecSmrg/* 179705b261ecSmrg * fbseg.c 179805b261ecSmrg */ 179905b261ecSmrgtypedef void FbBres (DrawablePtr pDrawable, 180005b261ecSmrg GCPtr pGC, 180105b261ecSmrg int dashOffset, 180205b261ecSmrg int signdx, 180305b261ecSmrg int signdy, 180405b261ecSmrg int axis, 180505b261ecSmrg int x, 180605b261ecSmrg int y, 180705b261ecSmrg int e, 180805b261ecSmrg int e1, 180905b261ecSmrg int e3, 181005b261ecSmrg int len); 181105b261ecSmrg 18126747b715Smrgextern _X_EXPORT FbBres fbBresSolid, fbBresDash, fbBresFill, fbBresFillDash; 181305b261ecSmrg/* 181405b261ecSmrg * fbsetsp.c 181505b261ecSmrg */ 181605b261ecSmrg 18176747b715Smrgextern _X_EXPORT void 181805b261ecSmrgfbSetSpans (DrawablePtr pDrawable, 181905b261ecSmrg GCPtr pGC, 182005b261ecSmrg char *src, 182105b261ecSmrg DDXPointPtr ppt, 182205b261ecSmrg int *pwidth, 182305b261ecSmrg int nspans, 182405b261ecSmrg int fSorted); 182505b261ecSmrg 18266747b715Smrgextern _X_EXPORT FbBres * 182705b261ecSmrgfbSelectBres (DrawablePtr pDrawable, 182805b261ecSmrg GCPtr pGC); 182905b261ecSmrg 18306747b715Smrgextern _X_EXPORT void 183105b261ecSmrgfbBres (DrawablePtr pDrawable, 183205b261ecSmrg GCPtr pGC, 183305b261ecSmrg int dashOffset, 183405b261ecSmrg int signdx, 183505b261ecSmrg int signdy, 183605b261ecSmrg int axis, 183705b261ecSmrg int x, 183805b261ecSmrg int y, 183905b261ecSmrg int e, 184005b261ecSmrg int e1, 184105b261ecSmrg int e3, 184205b261ecSmrg int len); 184305b261ecSmrg 18446747b715Smrgextern _X_EXPORT void 184505b261ecSmrgfbSegment (DrawablePtr pDrawable, 184605b261ecSmrg GCPtr pGC, 184705b261ecSmrg int xa, 184805b261ecSmrg int ya, 184905b261ecSmrg int xb, 185005b261ecSmrg int yb, 185105b261ecSmrg Bool drawLast, 185205b261ecSmrg int *dashOffset); 185305b261ecSmrg 185405b261ecSmrg 185505b261ecSmrg/* 185605b261ecSmrg * fbsolid.c 185705b261ecSmrg */ 185805b261ecSmrg 18596747b715Smrgextern _X_EXPORT void 186005b261ecSmrgfbSolid (FbBits *dst, 186105b261ecSmrg FbStride dstStride, 186205b261ecSmrg int dstX, 186305b261ecSmrg int bpp, 186405b261ecSmrg 186505b261ecSmrg int width, 186605b261ecSmrg int height, 186705b261ecSmrg 186805b261ecSmrg FbBits and, 186905b261ecSmrg FbBits xor); 187005b261ecSmrg 187105b261ecSmrg#ifdef FB_24BIT 18726747b715Smrgextern _X_EXPORT void 187305b261ecSmrgfbSolid24 (FbBits *dst, 187405b261ecSmrg FbStride dstStride, 187505b261ecSmrg int dstX, 187605b261ecSmrg 187705b261ecSmrg int width, 187805b261ecSmrg int height, 187905b261ecSmrg 188005b261ecSmrg FbBits and, 188105b261ecSmrg FbBits xor); 188205b261ecSmrg#endif 188305b261ecSmrg 188405b261ecSmrg/* 188505b261ecSmrg * fbstipple.c 188605b261ecSmrg */ 188705b261ecSmrg 18886747b715Smrgextern _X_EXPORT void 188905b261ecSmrgfbTransparentSpan (FbBits *dst, 189005b261ecSmrg FbBits stip, 189105b261ecSmrg FbBits fgxor, 189205b261ecSmrg int n); 189305b261ecSmrg 18946747b715Smrgextern _X_EXPORT void 189505b261ecSmrgfbEvenStipple (FbBits *dst, 189605b261ecSmrg FbStride dstStride, 189705b261ecSmrg int dstX, 189805b261ecSmrg int dstBpp, 189905b261ecSmrg 190005b261ecSmrg int width, 190105b261ecSmrg int height, 190205b261ecSmrg 190305b261ecSmrg FbStip *stip, 190405b261ecSmrg FbStride stipStride, 190505b261ecSmrg int stipHeight, 190605b261ecSmrg 190705b261ecSmrg FbBits fgand, 190805b261ecSmrg FbBits fgxor, 190905b261ecSmrg FbBits bgand, 191005b261ecSmrg FbBits bgxor, 191105b261ecSmrg 191205b261ecSmrg int xRot, 191305b261ecSmrg int yRot); 191405b261ecSmrg 19156747b715Smrgextern _X_EXPORT void 191605b261ecSmrgfbOddStipple (FbBits *dst, 191705b261ecSmrg FbStride dstStride, 191805b261ecSmrg int dstX, 191905b261ecSmrg int dstBpp, 192005b261ecSmrg 192105b261ecSmrg int width, 192205b261ecSmrg int height, 192305b261ecSmrg 192405b261ecSmrg FbStip *stip, 192505b261ecSmrg FbStride stipStride, 192605b261ecSmrg int stipWidth, 192705b261ecSmrg int stipHeight, 192805b261ecSmrg 192905b261ecSmrg FbBits fgand, 193005b261ecSmrg FbBits fgxor, 193105b261ecSmrg FbBits bgand, 193205b261ecSmrg FbBits bgxor, 193305b261ecSmrg 193405b261ecSmrg int xRot, 193505b261ecSmrg int yRot); 193605b261ecSmrg 19376747b715Smrgextern _X_EXPORT void 193805b261ecSmrgfbStipple (FbBits *dst, 193905b261ecSmrg FbStride dstStride, 194005b261ecSmrg int dstX, 194105b261ecSmrg int dstBpp, 194205b261ecSmrg 194305b261ecSmrg int width, 194405b261ecSmrg int height, 194505b261ecSmrg 194605b261ecSmrg FbStip *stip, 194705b261ecSmrg FbStride stipStride, 194805b261ecSmrg int stipWidth, 194905b261ecSmrg int stipHeight, 195005b261ecSmrg Bool even, 195105b261ecSmrg 195205b261ecSmrg FbBits fgand, 195305b261ecSmrg FbBits fgxor, 195405b261ecSmrg FbBits bgand, 195505b261ecSmrg FbBits bgxor, 195605b261ecSmrg 195705b261ecSmrg int xRot, 195805b261ecSmrg int yRot); 195905b261ecSmrg 196005b261ecSmrg/* 196105b261ecSmrg * fbtile.c 196205b261ecSmrg */ 196305b261ecSmrg 19646747b715Smrgextern _X_EXPORT void 196505b261ecSmrgfbEvenTile (FbBits *dst, 196605b261ecSmrg FbStride dstStride, 196705b261ecSmrg int dstX, 196805b261ecSmrg 196905b261ecSmrg int width, 197005b261ecSmrg int height, 197105b261ecSmrg 197205b261ecSmrg FbBits *tile, 197305b261ecSmrg FbStride tileStride, 197405b261ecSmrg int tileHeight, 197505b261ecSmrg 197605b261ecSmrg int alu, 197705b261ecSmrg FbBits pm, 197805b261ecSmrg int xRot, 197905b261ecSmrg int yRot); 198005b261ecSmrg 19816747b715Smrgextern _X_EXPORT void 198205b261ecSmrgfbOddTile (FbBits *dst, 198305b261ecSmrg FbStride dstStride, 198405b261ecSmrg int dstX, 198505b261ecSmrg 198605b261ecSmrg int width, 198705b261ecSmrg int height, 198805b261ecSmrg 198905b261ecSmrg FbBits *tile, 199005b261ecSmrg FbStride tileStride, 199105b261ecSmrg int tileWidth, 199205b261ecSmrg int tileHeight, 199305b261ecSmrg 199405b261ecSmrg int alu, 199505b261ecSmrg FbBits pm, 199605b261ecSmrg int bpp, 199705b261ecSmrg 199805b261ecSmrg int xRot, 199905b261ecSmrg int yRot); 200005b261ecSmrg 20016747b715Smrgextern _X_EXPORT void 200205b261ecSmrgfbTile (FbBits *dst, 200305b261ecSmrg FbStride dstStride, 200405b261ecSmrg int dstX, 200505b261ecSmrg 200605b261ecSmrg int width, 200705b261ecSmrg int height, 200805b261ecSmrg 200905b261ecSmrg FbBits *tile, 201005b261ecSmrg FbStride tileStride, 201105b261ecSmrg int tileWidth, 201205b261ecSmrg int tileHeight, 201305b261ecSmrg 201405b261ecSmrg int alu, 201505b261ecSmrg FbBits pm, 201605b261ecSmrg int bpp, 201705b261ecSmrg 201805b261ecSmrg int xRot, 201905b261ecSmrg int yRot); 202005b261ecSmrg 202105b261ecSmrg/* 202205b261ecSmrg * fbutil.c 202305b261ecSmrg */ 20246747b715Smrgextern _X_EXPORT FbBits 202505b261ecSmrgfbReplicatePixel (Pixel p, int bpp); 202605b261ecSmrg 20276747b715Smrgextern _X_EXPORT void 202805b261ecSmrgfbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp); 202905b261ecSmrg 203005b261ecSmrg#ifdef FB_ACCESS_WRAPPER 20316747b715Smrgextern _X_EXPORT ReadMemoryProcPtr wfbReadMemory; 20326747b715Smrgextern _X_EXPORT WriteMemoryProcPtr wfbWriteMemory; 203305b261ecSmrg#endif 203405b261ecSmrg 203505b261ecSmrg/* 203605b261ecSmrg * fbwindow.c 203705b261ecSmrg */ 203805b261ecSmrg 20396747b715Smrgextern _X_EXPORT Bool 204005b261ecSmrgfbCreateWindow(WindowPtr pWin); 204105b261ecSmrg 20426747b715Smrgextern _X_EXPORT Bool 204305b261ecSmrgfbDestroyWindow(WindowPtr pWin); 204405b261ecSmrg 20456747b715Smrgextern _X_EXPORT Bool 204605b261ecSmrgfbMapWindow(WindowPtr pWindow); 204705b261ecSmrg 20486747b715Smrgextern _X_EXPORT Bool 204905b261ecSmrgfbPositionWindow(WindowPtr pWin, int x, int y); 205005b261ecSmrg 20516747b715Smrgextern _X_EXPORT Bool 205205b261ecSmrgfbUnmapWindow(WindowPtr pWindow); 205305b261ecSmrg 20546747b715Smrgextern _X_EXPORT void 205505b261ecSmrgfbCopyWindowProc (DrawablePtr pSrcDrawable, 205605b261ecSmrg DrawablePtr pDstDrawable, 205705b261ecSmrg GCPtr pGC, 205805b261ecSmrg BoxPtr pbox, 205905b261ecSmrg int nbox, 206005b261ecSmrg int dx, 206105b261ecSmrg int dy, 206205b261ecSmrg Bool reverse, 206305b261ecSmrg Bool upsidedown, 206405b261ecSmrg Pixel bitplane, 206505b261ecSmrg void *closure); 206605b261ecSmrg 20676747b715Smrgextern _X_EXPORT void 206805b261ecSmrgfbCopyWindow(WindowPtr pWin, 206905b261ecSmrg DDXPointRec ptOldOrg, 207005b261ecSmrg RegionPtr prgnSrc); 207105b261ecSmrg 20726747b715Smrgextern _X_EXPORT Bool 207305b261ecSmrgfbChangeWindowAttributes(WindowPtr pWin, unsigned long mask); 207405b261ecSmrg 20756747b715Smrgextern _X_EXPORT void 207605b261ecSmrgfbFillRegionSolid (DrawablePtr pDrawable, 207705b261ecSmrg RegionPtr pRegion, 207805b261ecSmrg FbBits and, 207905b261ecSmrg FbBits xor); 208005b261ecSmrg 20816747b715Smrgextern _X_EXPORT pixman_image_t * 20826747b715Smrgimage_from_pict (PicturePtr pict, 20836747b715Smrg Bool has_clip, 20846747b715Smrg int *xoff, 20856747b715Smrg int *yoff); 20866747b715Smrg 20876747b715Smrgextern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *); 208805b261ecSmrg 208905b261ecSmrg#endif /* _FB_H_ */ 209005b261ecSmrg 2091