45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync *
45e9809aff7304721fddb95654901b32195c9c7avboxsync * Copyright © 1998 Keith Packard
45e9809aff7304721fddb95654901b32195c9c7avboxsync *
45e9809aff7304721fddb95654901b32195c9c7avboxsync * Permission to use, copy, modify, distribute, and sell this software and its
45e9809aff7304721fddb95654901b32195c9c7avboxsync * documentation for any purpose is hereby granted without fee, provided that
45e9809aff7304721fddb95654901b32195c9c7avboxsync * the above copyright notice appear in all copies and that both that
45e9809aff7304721fddb95654901b32195c9c7avboxsync * copyright notice and this permission notice appear in supporting
45e9809aff7304721fddb95654901b32195c9c7avboxsync * documentation, and that the name of Keith Packard not be used in
45e9809aff7304721fddb95654901b32195c9c7avboxsync * advertising or publicity pertaining to distribution of the software without
45e9809aff7304721fddb95654901b32195c9c7avboxsync * specific, written prior permission. Keith Packard makes no
45e9809aff7304721fddb95654901b32195c9c7avboxsync * representations about the suitability of this software for any purpose. It
45e9809aff7304721fddb95654901b32195c9c7avboxsync * is provided "as is" without express or implied warranty.
45e9809aff7304721fddb95654901b32195c9c7avboxsync *
45e9809aff7304721fddb95654901b32195c9c7avboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
45e9809aff7304721fddb95654901b32195c9c7avboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
45e9809aff7304721fddb95654901b32195c9c7avboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
45e9809aff7304721fddb95654901b32195c9c7avboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
45e9809aff7304721fddb95654901b32195c9c7avboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
45e9809aff7304721fddb95654901b32195c9c7avboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
45e9809aff7304721fddb95654901b32195c9c7avboxsync * PERFORMANCE OF THIS SOFTWARE.
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifndef _FB_H_
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define _FB_H_
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include <X11/X.h>
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include <pixman.h>
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "scrnintstr.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "pixmap.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "pixmapstr.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "region.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "gcstruct.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "colormap.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "miscstruct.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "servermd.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "windowstr.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "privates.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "mi.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "migc.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "mibstore.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef RENDER
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "picturestr.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "picture.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_ACCESS_WRAPPER
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "wfbrename.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FBPREFIX(x) wfb##x
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define WRITE(ptr, val) ((*wfbWriteMemory)((ptr), (val), sizeof(*(ptr))))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define READ(ptr) ((*wfbReadMemory)((ptr), sizeof(*(ptr))))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define MEMCPY_WRAPPED(dst, src, size) do { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync size_t _i; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync CARD8 *_dst = (CARD8*)(dst), *_src = (CARD8*)(src); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync for(_i = 0; _i < size; _i++) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE(_dst +_i, READ(_src + _i)); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync} while(0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define MEMSET_WRAPPED(dst, val, size) do { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync size_t _i; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync CARD8 *_dst = (CARD8*)(dst); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync for(_i = 0; _i < size; _i++) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE(_dst +_i, (val)); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync} while(0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FBPREFIX(x) fb##x
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define WRITE(ptr, val) (*(ptr) = (val))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define READ(ptr) (*(ptr))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define MEMCPY_WRAPPED(dst, src, size) memcpy((dst), (src), (size))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define MEMSET_WRAPPED(dst, val, size) memset((dst), (val), (size))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * This single define controls the basic size of data manipulated
45e9809aff7304721fddb95654901b32195c9c7avboxsync * by this software; it must be log2(sizeof (FbBits) * 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifndef FB_SHIFT
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_SHIFT LOG2_BITMAP_PAD
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT < LOG2_BITMAP_PAD
45e9809aff7304721fddb95654901b32195c9c7avboxsync error FB_SHIFT must be >= LOG2_BITMAP_PAD
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_UNIT (1 << FB_SHIFT)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_HALFUNIT (1 << (FB_SHIFT-1))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_MASK (FB_UNIT - 1)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_ALLONES ((FbBits) -1)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if GLYPHPADBYTES != 4
45e9809aff7304721fddb95654901b32195c9c7avboxsync#error "GLYPHPADBYTES must be 4"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* whether to bother to include 24bpp support */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifndef FBNO24BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_24BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * Unless otherwise instructed, fb includes code to advertise 24bpp
45e9809aff7304721fddb95654901b32195c9c7avboxsync * windows with 32bpp image format for application compatibility
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_24BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifndef FBNO24_32
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_24_32BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_STIP_SHIFT LOG2_BITMAP_PAD
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_STIP_UNIT (1 << FB_STIP_SHIFT)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_STIP_MASK (FB_STIP_UNIT - 1)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_STIP_ALLONES ((FbStip) -1)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_STIP_ODDSTRIDE(s) (((s) & (FB_MASK >> FB_STIP_SHIFT)) != 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_STIP_ODDPTR(p) ((((long) (p)) & (FB_MASK >> 3)) != 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStipStrideToBitsStride(s) (((s) >> (FB_SHIFT - FB_STIP_SHIFT)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbBitsStrideToStipStride(s) (((s) << (FB_SHIFT - FB_STIP_SHIFT)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbFullMask(n) ((n) == FB_UNIT ? FB_ALLONES : ((((FbBits) 1) << n) - 1))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT == 6
45e9809aff7304721fddb95654901b32195c9c7avboxsync# ifdef WIN32
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef unsigned __int64 FbBits;
45e9809aff7304721fddb95654901b32195c9c7avboxsync# else
45e9809aff7304721fddb95654901b32195c9c7avboxsync# if defined(__alpha__) || defined(__alpha) || \
45e9809aff7304721fddb95654901b32195c9c7avboxsync defined(ia64) || defined(__ia64__) || \
45e9809aff7304721fddb95654901b32195c9c7avboxsync defined(__sparc64__) || defined(_LP64) || \
45e9809aff7304721fddb95654901b32195c9c7avboxsync defined(__s390x__) || \
45e9809aff7304721fddb95654901b32195c9c7avboxsync defined(amd64) || defined (__amd64__) || \
45e9809aff7304721fddb95654901b32195c9c7avboxsync defined (__powerpc64__)
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef unsigned long FbBits;
45e9809aff7304721fddb95654901b32195c9c7avboxsync# else
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef unsigned long long FbBits;
45e9809aff7304721fddb95654901b32195c9c7avboxsync# endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync# endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT == 5
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef CARD32 FbBits;
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT == 4
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef CARD16 FbBits;
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if LOG2_BITMAP_PAD == FB_SHIFT
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef FbBits FbStip;
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync# if LOG2_BITMAP_PAD == 5
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef CARD32 FbStip;
45e9809aff7304721fddb95654901b32195c9c7avboxsync# endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef int FbStride;
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_DEBUG
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void fbValidateDrawable(DrawablePtr d);
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void fbInitializeDrawable(DrawablePtr d);
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void fbSetBits (FbStip *bits, int stride, FbStip data);
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_HEAD_BITS (FbStip) (0xbaadf00d)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_TAIL_BITS (FbStip) (0xbaddf0ad)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbValidateDrawable(d)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fdInitializeDrawable(d)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "fbrop.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if BITMAP_BIT_ORDER == LSBFirst
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbScrLeft(x,n) ((x) >> (n))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbScrRight(x,n) ((x) << (n))
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* #define FbLeftBits(x,n) ((x) & ((((FbBits) 1) << (n)) - 1)) */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLeftStipBits(x,n) ((x) & ((((FbStip) 1) << (n)) - 1))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStipMoveLsb(x,s,n) (FbStipRight (x,(s)-(n)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPatternOffsetBits 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbScrLeft(x,n) ((x) << (n))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbScrRight(x,n) ((x) >> (n))
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* #define FbLeftBits(x,n) ((x) >> (FB_UNIT - (n))) */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLeftStipBits(x,n) ((x) >> (FB_STIP_UNIT - (n)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStipMoveLsb(x,s,n) (x)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPatternOffsetBits (sizeof (FbBits) - 1)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "micoord.h"
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStipLeft(x,n) FbScrLeft(x,n)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStipRight(x,n) FbScrRight(x,n)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRotLeft(x,n) FbScrLeft(x,n) | (n ? FbScrRight(x,FB_UNIT-n) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRotRight(x,n) FbScrRight(x,n) | (n ? FbScrLeft(x,FB_UNIT-n) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRotStipLeft(x,n) FbStipLeft(x,n) | (n ? FbStipRight(x,FB_STIP_UNIT-n) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRotStipRight(x,n) FbStipRight(x,n) | (n ? FbStipLeft(x,FB_STIP_UNIT-n) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLeftMask(x) ( ((x) & FB_MASK) ? \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbScrRight(FB_ALLONES,(x) & FB_MASK) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRightMask(x) ( ((FB_UNIT - (x)) & FB_MASK) ? \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbScrLeft(FB_ALLONES,(FB_UNIT - (x)) & FB_MASK) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLeftStipMask(x) ( ((x) & FB_STIP_MASK) ? \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRightStipMask(x) ( ((FB_STIP_UNIT - (x)) & FB_STIP_MASK) ? \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbScrLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - (x)) & FB_STIP_MASK) : 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbBitsMask(x,w) (FbScrRight(FB_ALLONES,(x) & FB_MASK) & \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbScrLeft(FB_ALLONES,(FB_UNIT - ((x) + (w))) & FB_MASK))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStipMask(x,w) (FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) & \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStipLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - ((x)+(w))) & FB_STIP_MASK))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbMaskBits(x,w,l,n,r) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n = (w); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync r = FbRightMask((x)+n); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync l = FbLeftMask(x); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (l) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n -= FB_UNIT - ((x) & FB_MASK); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (n < 0) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync l &= r; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync r = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n >>= FB_SHIFT; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FBNOPIXADDR
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbMaskBitsBytes(x,w,copy,l,lb,n,r,rb) FbMaskBits(x,w,l,n,r)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoLeftMaskByteRRop(dst,lb,l,and,xor) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync *dst = FbDoMaskRRop(*dst,and,xor,l); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoRightMaskByteRRop(dst,rb,r,and,xor) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync *dst = FbDoMaskRRop(*dst,and,xor,r); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbByteMaskInvalid 0x10
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPatternOffset(o,t) ((o) ^ (FbPatternOffsetBits & ~(sizeof (t) - 1)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbStorePart(dst,off,t,xor) (WRITE(FbPtrOffset(dst,off,t), \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbSelectPart(xor,off,t)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifndef FbSelectPart
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbMaskBitsBytes(x,w,copy,l,lb,n,r,rb) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n = (w); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync lb = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync rb = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync r = FbRightMask((x)+n); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (r) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync /* compute right byte length */ \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((copy) && (((x) + n) & 7) == 0) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync rb = (((x) + n) & FB_MASK) >> 3; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync rb = FbByteMaskInvalid; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync l = FbLeftMask(x); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (l) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync /* compute left byte length */ \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((copy) && ((x) & 7) == 0) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync lb = ((x) & FB_MASK) >> 3; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync lb = FbByteMaskInvalid; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync /* subtract out the portion painted by leftMask */ \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n -= FB_UNIT - ((x) & FB_MASK); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (n < 0) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (lb != FbByteMaskInvalid) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (rb == FbByteMaskInvalid) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync lb = FbByteMaskInvalid; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else if (rb) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync lb |= (rb - lb) << (FB_SHIFT - 3); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync rb = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync l &= r; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync r = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync }\
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n >>= FB_SHIFT; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT == 6
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoLeftMaskByteRRop6Cases(dst,xor) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7) | (1 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7) | (2 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7) | (3 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7) | (4 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7) | (5 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7) | (6 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 7): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 7,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 6) | (1 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 6) | (2 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 6) | (3 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 6) | (4 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 6) | (5 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 6): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 6,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 5) | (1 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 5) | (2 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 5) | (3 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 5) | (4 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 5): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 5,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 4) | (1 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 4) | (2 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 4) | (3 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 4): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 4,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break;
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoRightMaskByteRRop6Cases(dst,xor) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 4: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 5: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,4,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 6: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 7: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD32,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,4,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,6,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break;
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoLeftMaskByteRRop6Cases(dst,xor)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoRightMaskByteRRop6Cases(dst,xor)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoLeftMaskByteRRop(dst,lb,l,and,xor) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync switch (lb) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbDoLeftMaskByteRRop6Cases(dst,xor) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 3) | (1 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 3) | (2 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case (sizeof (FbBits) - 2) | (1 << (FB_SHIFT - 3)): \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case sizeof (FbBits) - 3: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 3,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case sizeof (FbBits) - 2: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 2,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case sizeof (FbBits) - 1: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,sizeof (FbBits) - 1,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync default: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, l)); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDoRightMaskByteRRop(dst,rb,r,and,xor) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync switch (rb) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 1: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 2: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync case 3: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,0,CARD16,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStorePart(dst,2,CARD8,xor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync break; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbDoRightMaskByteRRop6Cases(dst,xor) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync default: \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, r)); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbMaskStip(x,w,l,n,r) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n = (w); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync r = FbRightStipMask((x)+n); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync l = FbLeftStipMask(x); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (l) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n -= FB_STIP_UNIT - ((x) & FB_STIP_MASK); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (n < 0) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync l &= r; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync r = 0; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync n >>= FB_STIP_SHIFT; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * These macros are used to transparently stipple
45e9809aff7304721fddb95654901b32195c9c7avboxsync * in copy mode; the expected usage is with 'n' constant
45e9809aff7304721fddb95654901b32195c9c7avboxsync * so all of the conditional parts collapse into a minimal
45e9809aff7304721fddb95654901b32195c9c7avboxsync * sequence of partial word writes
45e9809aff7304721fddb95654901b32195c9c7avboxsync *
45e9809aff7304721fddb95654901b32195c9c7avboxsync * 'n' is the bytemask of which bytes to store, 'a' is the address
45e9809aff7304721fddb95654901b32195c9c7avboxsync * of the FbBits base unit, 'o' is the offset within that unit
45e9809aff7304721fddb95654901b32195c9c7avboxsync *
45e9809aff7304721fddb95654901b32195c9c7avboxsync * The term "lane" comes from the hardware term "byte-lane" which
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLaneCase1(n,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((n) == 0x01) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), fgxor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync }
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLaneCase2(n,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((n) == 0x03) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), fgxor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbLaneCase1((n)&1,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbLaneCase1((n)>>1,a,(o)+1) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync }
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLaneCase4(n,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((n) == 0x0f) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), fgxor); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbLaneCase2((n)&3,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbLaneCase2((n)>>2,a,(o)+2) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync }
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLaneCase8(n,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((n) == 0x0ff) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync *(FbBits *) ((a)+(o)) = fgxor; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbLaneCase4((n)&15,a,o) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbLaneCase4((n)>>4,a,(o)+4) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync }
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT == 6
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLaneCase(n,a) FbLaneCase8(n,(CARD8 *) (a),0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_SHIFT == 5
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbLaneCase(n,a) FbLaneCase4(n,(CARD8 *) (a),0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Rotate a filled pixel value to the specified alignement */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRot24(p,b) (FbScrRight(p,b) | FbScrLeft(p,24-(b)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbRot24Stip(p,b) (FbStipRight(p,b) | FbStipLeft(p,24-(b)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* step a filled pixel value to the next/previous FB_UNIT alignment */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbNext24Pix(p) (FbRot24(p,(24-FB_UNIT%24)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPrev24Pix(p) (FbRot24(p,FB_UNIT%24))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbNext24Stip(p) (FbRot24(p,(24-FB_STIP_UNIT%24)))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPrev24Stip(p) (FbRot24(p,FB_STIP_UNIT%24))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* step a rotation value to the next/previous rotation value */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_UNIT == 64
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbNext24Rot(r) ((r) == 16 ? 0 : (r) + 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPrev24Rot(r) ((r) == 0 ? 16 : (r) - 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if IMAGE_BYTE_ORDER == MSBFirst
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbFirst24Rot(x) (((x) + 8) % 24)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbFirst24Rot(x) ((x) % 24)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if FB_UNIT == 32
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbNext24Rot(r) ((r) == 0 ? 16 : (r) - 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPrev24Rot(r) ((r) == 16 ? 0 : (r) + 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#if IMAGE_BYTE_ORDER == MSBFirst
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbFirst24Rot(x) (((x) + 16) % 24)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbFirst24Rot(x) ((x) % 24)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbNext24RotStip(r) ((r) == 0 ? 16 : (r) - 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPrev24RotStip(r) ((r) == 16 ? 0 : (r) + 8)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Whether 24-bit specific code is needed for this filled pixel value */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbCheck24Pix(p) ((p) == FbNext24Pix(p))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Macros for dealing with dashing */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDashDeclare \
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned char *__dash, *__firstDash, *__lastDash
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDashInit(pGC,pPriv,dashOffset,dashlen,even) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (even) = TRUE; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync __firstDash = (pGC)->dash; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync __lastDash = __firstDash + (pGC)->numInDashList; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (dashOffset) %= (pPriv)->dashLength; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync \
45e9809aff7304721fddb95654901b32195c9c7avboxsync __dash = __firstDash; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync while ((dashOffset) >= ((dashlen) = *__dash)) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (dashOffset) -= (dashlen); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (even) = 1-(even); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (++__dash == __lastDash) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync __dash = __firstDash; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (dashlen) -= (dashOffset); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDashNext(dashlen) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (++__dash == __lastDash) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync __dash = __firstDash; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (dashlen) = *__dash; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* as numInDashList is always even, this case can skip a test */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDashNextEven(dashlen) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (dashlen) = *++__dash; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDashNextOdd(dashlen) FbDashNext(dashlen)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbDashStep(dashlen,even) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if (!--(dashlen)) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbDashNext(dashlen); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (even) = 1-(even); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT DevPrivateKey fbGetGCPrivateKey(void);
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT DevPrivateKey fbGetWinPrivateKey(void);
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT const GCOps fbGCOps;
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT const GCFuncs fbGCFuncs;
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_24_32BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FB_SCREEN_PRIVATE
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Framebuffer access wrapper */
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef FbBits (*ReadMemoryProcPtr)(const void *src, int size);
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef void (*WriteMemoryProcPtr)(void *dst, FbBits value, int size);
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef void (*SetupWrapProcPtr)(ReadMemoryProcPtr *pRead,
45e9809aff7304721fddb95654901b32195c9c7avboxsync WriteMemoryProcPtr *pWrite,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDraw);
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef void (*FinishWrapProcPtr)(DrawablePtr pDraw);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_ACCESS_WRAPPER
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbPrepareAccess(pDraw) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbGetScreenPrivate((pDraw)->pScreen)->setupWrap( \
45e9809aff7304721fddb95654901b32195c9c7avboxsync &wfbReadMemory, \
45e9809aff7304721fddb95654901b32195c9c7avboxsync &wfbWriteMemory, \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (pDraw))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbFinishAccess(pDraw) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbGetScreenPrivate((pDraw)->pScreen)->finishWrap(pDraw)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbPrepareAccess(pPix)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbFinishAccess(pDraw)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_SCREEN_PRIVATE
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT DevPrivateKey fbGetScreenPrivateKey(void);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* private field of a screen */
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef struct {
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned char win32bpp; /* window bpp for 32-bpp images */
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_ACCESS_WRAPPER
45e9809aff7304721fddb95654901b32195c9c7avboxsync SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */
45e9809aff7304721fddb95654901b32195c9c7avboxsync FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync} FbScreenPrivRec, *FbScreenPrivPtr;
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync dixLookupPrivate(&(pScreen)->devPrivates, fbGetScreenPrivateKey()))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* private field of GC */
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef struct {
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and, xor; /* reduced rop values */
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgand, bgxor; /* for stipples */
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fg, bg, pm; /* expanded and filled */
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned int dashLength; /* total of all dash elements */
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned char oneRect; /* clip list is single rectangle */
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned char evenStipple; /* stipple is even */
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned char bpp; /* current drawable bpp */
45e9809aff7304721fddb95654901b32195c9c7avboxsync} FbGCPrivRec, *FbGCPrivPtr;
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetGCPrivate(pGC) ((FbGCPrivPtr)\
45e9809aff7304721fddb95654901b32195c9c7avboxsync dixLookupPrivate(&(pGC)->devPrivates, fbGetGCPrivateKey()))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetCompositeClip(pGC) ((pGC)->pCompositeClip)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetExpose(pGC) ((pGC)->fExpose)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetFreeCompClip(pGC) ((pGC)->freeCompClip)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetRotatedPixmap(pGC) ((pGC)->pRotatedPixmap)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
45e9809aff7304721fddb95654901b32195c9c7avboxsync dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey()))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef ROOTLESS
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixDrawableY(pPix) ((pPix)->drawable.y)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixDrawableX(pPix) 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixDrawableY(pPix) 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef COMPOSITE
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix) - (pPix)->screen_y)
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixOffYWin(pPix) (__fbPixDrawableY(pPix))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixOffXPix(pPix) (__fbPixDrawableX(pPix))
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define __fbPixOffYPix(pPix) (__fbPixDrawableY(pPix))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetDrawablePixmap(pDrawable, pixmap, xoff, yoff) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync if ((pDrawable)->type != DRAWABLE_PIXMAP) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (pixmap) = fbGetWindowPixmap(pDrawable); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (xoff) = __fbPixOffXWin(pixmap); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (yoff) = __fbPixOffYWin(pixmap); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } else { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (pixmap) = (PixmapPtr) (pDrawable); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (xoff) = __fbPixOffXPix(pixmap); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (yoff) = __fbPixOffYPix(pixmap); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync } \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbPrepareAccess(pDrawable); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetPixmapBitsData(pixmap, pointer, stride, bpp) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (pointer) = (FbBits *) (pixmap)->devPrivate.ptr; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (stride) = ((int) (pixmap)->devKind) / sizeof (FbBits); (void)(stride); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetPixmapStipData(pixmap, pointer, stride, bpp) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (pointer) = (FbStip *) (pixmap)->devPrivate.ptr; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (stride) = ((int) (pixmap)->devKind) / sizeof (FbStip); (void)(stride); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync (bpp) = (pixmap)->drawable.bitsPerPixel; (void)(bpp); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync PixmapPtr _pPix; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbGetPixmapBitsData(_pPix, pointer, stride, bpp); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbGetStipDrawable(pDrawable, pointer, stride, bpp, xoff, yoff) { \
45e9809aff7304721fddb95654901b32195c9c7avboxsync PixmapPtr _pPix; \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbGetDrawablePixmap(pDrawable, _pPix, xoff, yoff); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbGetPixmapStipData(_pPix, pointer, stride, bpp); \
45e9809aff7304721fddb95654901b32195c9c7avboxsync}
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * XFree86 empties the root BorderClip when the VT is inactive,
45e9809aff7304721fddb95654901b32195c9c7avboxsync * here's a macro which uses that to disable GetImage and GetSpans
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbWindowEnabled(pWin) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync REGION_NOTEMPTY((pWin)->drawable.pScreen, \
45e9809aff7304721fddb95654901b32195c9c7avboxsync &WindowTable[(pWin)->drawable.pScreen->myNum]->borderClip)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbDrawableEnabled(pDrawable) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync ((pDrawable)->type == DRAWABLE_PIXMAP ? \
45e9809aff7304721fddb95654901b32195c9c7avboxsync TRUE : fbWindowEnabled((WindowPtr) pDrawable))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbPowerOfTwo(w) (((w) & ((w) - 1)) == 0)
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * Accelerated tiles are power of 2 width <= FB_UNIT
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbEvenTile(w) ((w) <= FB_UNIT && FbPowerOfTwo(w))
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * Accelerated stipples are power of 2 width and <= FB_UNIT/dstBpp
45e9809aff7304721fddb95654901b32195c9c7avboxsync * with dstBpp a power of 2 as well
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define FbEvenStip(w,bpp) ((w) * (bpp) <= FB_UNIT && FbPowerOfTwo(w) && FbPowerOfTwo(bpp))
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fb24_32.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32GetSpans(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int wMax,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *pwidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nspans,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *pchardstStart);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32SetSpans (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *pwidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nspans,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int fSorted);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32PutZImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pClip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync CARD8 *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32GetImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int w,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int h,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned int format,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned long planeMask,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *d);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32CopyMtoN (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT PixmapPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32CreateScreenResources(ScreenPtr pScreen);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfb24_32ModifyPixmapHeader (PixmapPtr pPixmap,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int depth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bitsPerPixel,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int devKind,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pPixData);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fballpriv.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT DevPrivateKey fbGetWinPrivateKey(void);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbAllocatePrivates(ScreenPtr pScreen, DevPrivateKey *pGCIndex);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbarc.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyArc (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int narcs,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xArc *parcs);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbbits.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresSolid8(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresDash8 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDots8 (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pBox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xPoint *pts,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbArc8 (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xArc *arc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGlyph8 (FbBits *dstLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stipple,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int shift);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyline8 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ptsOrig);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolySegment8 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nseg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xSegment *pseg);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresSolid16(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresDash16(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDots16(FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pBox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xPoint *pts,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbArc16(FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xArc *arc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGlyph16(FbBits *dstLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stipple,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int shift);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyline16 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ptsOrig);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolySegment16 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nseg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xSegment *pseg);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresSolid24(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresDash24(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDots24(FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pBox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xPoint *pts,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbArc24(FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xArc *arc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGlyph24(FbBits *dstLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stipple,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int shift);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyline24 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ptsOrig);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolySegment24 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nseg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xSegment *pseg);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresSolid32(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBresDash32(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDots32(FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pBox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xPoint *pts,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbArc32(FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xArc *arc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGlyph32(FbBits *dstLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stipple,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int shift);
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyline32 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ptsOrig);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolySegment32 (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nseg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xSegment *pseg);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbblt.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBlt (FbBits *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBlt24 (FbBits *srcLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *dstLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBltStip (FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride, /* in FbStip units, not FbBits units */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride, /* in FbStip units, not FbBits units */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbbltone.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBltOne (FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fbxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgxor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_24BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBltOne24 (FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride, /* FbStip units per scanline */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX, /* bit position of source */
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride, /* FbBits units per scanline */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX, /* bit position of dest */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp, /* bits per destination unit */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width, /* width in bits of destination */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height, /* height in scanlines */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgand, /* rrop values */
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgxor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBltPlane (FbBits *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip fgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip fgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip bgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip bgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel planeMask);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbcmap.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT int
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbInstallColormap(ColormapPtr pmap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbUninstallColormap(ColormapPtr pmap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbResolveColor(unsigned short *pred,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned short *pgreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned short *pblue,
45e9809aff7304721fddb95654901b32195c9c7avboxsync VisualPtr pVisual);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbInitializeColormap(ColormapPtr pmap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT int
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbExpandDirectColors (ColormapPtr pmap,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ndef,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xColorItem *indefs,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xColorItem *outdefs);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCreateDefColormap(ScreenPtr pScreen);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbClearVisualTypes(void);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbHasVisualTypes (int depth);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSetVisualTypes (int depth, int visuals, int bitsPerRGB);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSetVisualTypesAndMasks (int depth, int visuals, int bitsPerRGB,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel redMask, Pixel greenMask, Pixel blueMask);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbInitVisuals (VisualPtr *visualp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DepthPtr *depthp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *nvisualp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *ndepthp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *rootDepthp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync VisualID *defaultVisp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned long sizes,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bitsPerRGB);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbcopy.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Compatibility definition, to be removed at next ABI change. */
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef void (*fbCopyProc) (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pDstBox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyNtoN (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Compatibility wrapper, to be removed at next ABI change. */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyRegion (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pDstRegion,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbCopyProc copyProc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitPlane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Compatibility wrapper, to be removed at next ABI change. */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT RegionPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDoCopy (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xIn,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yIn,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int widthSrc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int heightSrc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xOut,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yOut,
45e9809aff7304721fddb95654901b32195c9c7avboxsync fbCopyProc copyProc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopy1toN (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyNto1 (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT RegionPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyArea (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xIn,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yIn,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int widthSrc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int heightSrc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xOut,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yOut);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT RegionPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyPlane (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xIn,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yIn,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int widthSrc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int heightSrc,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xOut,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yOut,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned long bitplane);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbfill.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbFill (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSolidBoxClipped (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pClip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xa,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ya,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xb,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yb,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbfillrect.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyFillRect(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nrectInit,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xRectangle *prectInit);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbPolyFillArc miPolyFillArc
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbFillPolygon miFillPolygon
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbfillsp.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbFillSpans (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nInit,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr pptInit,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *pwidthInit,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int fSorted);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbgc.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCreateGC(GCPtr pGC);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPadPixmap (PixmapPtr pPixmap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbgetsp.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGetSpans(DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int wMax,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *pwidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nspans,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *pchardstStart);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbglyph.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGlyphIn (RegionPtr pRegion,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyGlyphBlt (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned int nglyph,
45e9809aff7304721fddb95654901b32195c9c7avboxsync CharInfoPtr *ppci,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pglyphBase);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbImageGlyphBlt (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned int nglyph,
45e9809aff7304721fddb95654901b32195c9c7avboxsync CharInfoPtr *ppci,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pglyphBase);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbimage.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPutImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int depth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int w,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int h,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int leftPad,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int format,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *pImage);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPutZImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pClip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPutXYImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pClip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool opaque,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbGetImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int w,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int h,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned int format,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned long planeMask,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *d);
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbline.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbZeroLine (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbZeroSegment (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nseg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xSegment *pSegs);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyLine (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbFixCoordModePrevious (int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolySegment (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nseg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xSegment *pseg);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define fbPolyRectangle miPolyRectangle
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbpict.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPictureInit (ScreenPtr pScreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync PictFormatPtr formats,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nformats);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbpixmap.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT PixmapPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCreatePixmapBpp (ScreenPtr pScreen, int width, int height, int depth, int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned usage_hint);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT PixmapPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCreatePixmap (ScreenPtr pScreen, int width, int height, int depth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned usage_hint);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDestroyPixmap (PixmapPtr pPixmap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT RegionPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPixmapToRegion(PixmapPtr pPix);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbpoint.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDots (FbBits *dstOrig,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pBox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xPoint *pts,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yorg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits andOrig,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xorOrig);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPolyPoint (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int mode,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int npt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync xPoint *pptInit);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbpush.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPushPattern (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPushFill (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPushImage (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride srcStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int srcX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPushPixels (GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync PixmapPtr pBitmap,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xOrg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yOrg);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbscreen.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCloseScreen (int indx, ScreenPtr pScreen);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbRealizeFont(ScreenPtr pScreen, FontPtr pFont);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbUnrealizeFont(ScreenPtr pScreen, FontPtr pFont);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbQueryBestSize (int class,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned short *width, unsigned short *height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync ScreenPtr pScreen);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT PixmapPtr
45e9809aff7304721fddb95654901b32195c9c7avboxsync_fbGetWindowPixmap (WindowPtr pWindow);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsync_fbSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSetupScreen(ScreenPtr pScreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pbits, /* pointer to screen bitmap */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xsize, /* in pixels */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ysize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpix, /* dots per inch */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpiy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width, /* pixel width of frame buffer */
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp); /* bits per pixel of frame buffer */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncwfbFinishScreenInit(ScreenPtr pScreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pbits,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xsize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ysize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpix,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpiy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync SetupWrapProcPtr setupWrap,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FinishWrapProcPtr finishWrap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncwfbScreenInit(ScreenPtr pScreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pbits,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xsize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ysize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpix,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpiy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync SetupWrapProcPtr setupWrap,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FinishWrapProcPtr finishWrap);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbFinishScreenInit(ScreenPtr pScreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pbits,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xsize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ysize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpix,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpiy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbScreenInit(ScreenPtr pScreen,
45e9809aff7304721fddb95654901b32195c9c7avboxsync pointer pbits,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xsize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ysize,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpix,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dpiy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbseg.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsynctypedef void FbBres (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT FbBres fbBresSolid, fbBresDash, fbBresFill, fbBresFillDash;
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbsetsp.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSetSpans (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char *src,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointPtr ppt,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *pwidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nspans,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int fSorted);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT FbBres *
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSelectBres (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbBres (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dashOffset,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int signdy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int axis,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int y,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e1,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int e3,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int len);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSegment (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xa,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int ya,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xb,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yb,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool drawLast,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *dashOffset);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbsolid.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSolid (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_24BIT
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbSolid24 (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbstipple.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbTransparentSpan (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits stip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int n);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbEvenStipple (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride stipStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int stipHeight,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xRot,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yRot);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbOddStipple (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride stipStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int stipWidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int stipHeight,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xRot,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yRot);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbStipple (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstBpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStip *stip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride stipStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int stipWidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int stipHeight,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool even,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits fgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgand,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits bgxor,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xRot,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yRot);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbtile.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbEvenTile (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *tile,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride tileStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int tileHeight,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xRot,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yRot);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbOddTile (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *tile,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride tileStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int tileWidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int tileHeight,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xRot,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yRot);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbTile (FbBits *dst,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride dstStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dstX,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int width,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int height,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits *tile,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbStride tileStride,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int tileWidth,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int tileHeight,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int alu,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits pm,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int bpp,
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync int xRot,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int yRot);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbutil.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT FbBits
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbReplicatePixel (Pixel p, int bpp);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef FB_ACCESS_WRAPPER
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT ReadMemoryProcPtr wfbReadMemory;
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT WriteMemoryProcPtr wfbWriteMemory;
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/*
45e9809aff7304721fddb95654901b32195c9c7avboxsync * fbwindow.c
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCreateWindow(WindowPtr pWin);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbDestroyWindow(WindowPtr pWin);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbMapWindow(WindowPtr pWindow);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbPositionWindow(WindowPtr pWin, int x, int y);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbUnmapWindow(WindowPtr pWindow);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyWindowProc (DrawablePtr pSrcDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDstDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync GCPtr pGC,
45e9809aff7304721fddb95654901b32195c9c7avboxsync BoxPtr pbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int nbox,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dx,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int dy,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool reverse,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool upsidedown,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Pixel bitplane,
45e9809aff7304721fddb95654901b32195c9c7avboxsync void *closure);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbCopyWindow(WindowPtr pWin,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DDXPointRec ptOldOrg,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr prgnSrc);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT Bool
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void
45e9809aff7304721fddb95654901b32195c9c7avboxsyncfbFillRegionSolid (DrawablePtr pDrawable,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pRegion,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits and,
45e9809aff7304721fddb95654901b32195c9c7avboxsync FbBits xor);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT pixman_image_t *
45e9809aff7304721fddb95654901b32195c9c7avboxsyncimage_from_pict (PicturePtr pict,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool has_clip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool is_src);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT pixman_image_t *
45e9809aff7304721fddb95654901b32195c9c7avboxsyncimage_from_pict_18 (PicturePtr pict,
45e9809aff7304721fddb95654901b32195c9c7avboxsync Bool has_clip,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *xoff,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int *yoff);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif /* _FB_H_ */
45e9809aff7304721fddb95654901b32195c9c7avboxsync