#if !defined(__CFB_H__) || defined(CFB_PROTOTYPES_ONLY)
#include <X11/X.h>
#include "globals.h"
#include "pixmap.h"
#include "region.h"
#include "gc.h"
#include "colormap.h"
#include "miscstruct.h"
#include "servermd.h"
#include "windowstr.h"
#include "mfb.h"
#undef PixelType
#include "cfbmap.h"
#ifndef CfbBits
#define CfbBits CARD32
#endif
#ifndef CFB_PROTOTYPES_ONLY
#define __CFB_H__
extern int cfbGCPrivateIndex;
extern int cfbWindowPrivateIndex;
typedef struct {
unsigned char rop;
unsigned char ropOpStip;
unsigned char oneRect;
CfbBits xor, and;
} cfbPrivGC;
typedef cfbPrivGC *cfbPrivGCPtr;
#define cfbGetGCPrivate(pGC) ((cfbPrivGCPtr)\
(pGC)->devPrivates[cfbGCPrivateIndex].ptr)
#define cfbGetCompositeClip(pGC) ((pGC)->pCompositeClip)
typedef struct {
unsigned char rop;
CfbBits xor, and;
} cfbRRopRec, *cfbRRopPtr;
typedef struct {
unsigned char fastBorder;
unsigned char fastBackground;
unsigned short unused;
DDXPointRec oldRotate;
PixmapPtr pRotatedBackground;
PixmapPtr pRotatedBorder;
} cfbPrivWin;
#define cfbGetWindowPrivate(_pWin) ((cfbPrivWin *)\
(_pWin)->devPrivates[cfbWindowPrivateIndex].ptr)
extern int cfbSetStipple(
int ,
CfbBits ,
CfbBits
);
extern int cfbSetOpaqueStipple(
int ,
CfbBits ,
CfbBits ,
CfbBits
);
extern int cfbComputeClipMasks32(
BoxPtr ,
int ,
int ,
int ,
int ,
int ,
CARD32 *
);
#endif
extern void cfbCopyImagePlane(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
#ifndef CFB_PROTOTYPES_ONLY
extern void cfbCopyPlane8to1(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long ,
unsigned long
);
extern void cfbCopyPlane16to1(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long ,
unsigned long
);
extern void cfbCopyPlane24to1(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long ,
unsigned long
);
extern void cfbCopyPlane32to1(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long ,
unsigned long
);
#endif
extern int cfb8LineSS1RectCopy(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr ,
DDXPointPtr ,
int * ,
int * ,
int * ,
int *
);
extern void cfb8LineSS1Rect(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr
);
extern void cfb8ClippedLineCopy(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
BoxPtr ,
Bool
);
extern int cfb8LineSS1RectPreviousCopy(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr ,
DDXPointPtr ,
int * ,
int * ,
int * ,
int *
);
extern int cfb8LineSS1RectGeneral(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr ,
DDXPointPtr ,
int * ,
int * ,
int * ,
int *
);
extern void cfb8ClippedLineGeneral(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
BoxPtr ,
Bool
);
extern int cfb8LineSS1RectXor(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr ,
DDXPointPtr ,
int * ,
int * ,
int * ,
int *
);
extern void cfb8ClippedLineXor(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
BoxPtr ,
Bool
);
extern int cfb8SegmentSS1RectCopy(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern int cfb8SegmentSS1RectShiftCopy(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern void cfb8SegmentSS1Rect(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern int cfb8SegmentSS1RectGeneral(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern int cfb8SegmentSS1RectXor(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern Bool cfbAllocatePrivates(
ScreenPtr ,
int * ,
int *
);
extern RegionPtr cfbBitBlt(
DrawablePtr ,
DrawablePtr ,
GCPtr,
int ,
int ,
int ,
int ,
int ,
int ,
void (* )(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
),
unsigned long
);
#define cfbCopyPlaneExpand cfbBitBlt
extern RegionPtr cfbCopyPlaneReduce(
DrawablePtr ,
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int ,
void (* )(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long ,
unsigned long
),
unsigned long
);
extern void cfbDoBitblt(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
extern RegionPtr cfbCopyArea(
DrawablePtr ,
DrawablePtr ,
GCPtr,
int ,
int ,
int ,
int ,
int ,
int
);
#ifndef CFB_PROTOTYPES_ONLY
extern void cfbCopyPlane1to8(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
#endif
extern RegionPtr cfbCopyPlane(
DrawablePtr ,
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int ,
unsigned long
);
extern void cfbDoBitbltCopy(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
extern void cfbDoBitbltGeneral(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
extern void cfbDoBitbltOr(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
extern void cfbDoBitbltXor(
DrawablePtr ,
DrawablePtr ,
int ,
RegionPtr ,
DDXPointPtr ,
unsigned long
);
extern void cfbBresS(
int ,
CfbBits ,
CfbBits ,
CfbBits * ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
int
);
extern void cfbBresD(
cfbRRopPtr ,
int * ,
unsigned char * ,
int ,
int * ,
int ,
CfbBits * ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
int
);
extern void cfbSaveAreas(
PixmapPtr ,
RegionPtr ,
int ,
int ,
WindowPtr
);
extern void cfbRestoreAreas(
PixmapPtr ,
RegionPtr ,
int ,
int ,
WindowPtr
);
#ifndef CFB_PROTOTYPES_ONLY
extern int cfbListInstalledColormaps(
ScreenPtr ,
Colormap *
);
extern void cfbInstallColormap(
ColormapPtr
);
extern void cfbUninstallColormap(
ColormapPtr
);
extern void cfbResolveColor(
unsigned short * ,
unsigned short * ,
unsigned short * ,
VisualPtr
);
extern Bool cfbInitializeColormap(
ColormapPtr
);
extern int cfbExpandDirectColors(
ColormapPtr ,
int ,
xColorItem * ,
xColorItem *
);
extern Bool cfbCreateDefColormap(
ScreenPtr
);
extern Bool cfbSetVisualTypes(
int ,
int ,
int
);
extern void cfbClearVisualTypes(void);
extern Bool cfbInitVisuals(
VisualPtr * ,
DepthPtr * ,
int * ,
int * ,
int * ,
VisualID * ,
unsigned long ,
int
);
#endif
extern void cfbPolyFillArcSolidCopy(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
extern void cfbPolyFillArcSolidGeneral(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
extern void cfbFillBoxTileOdd(
DrawablePtr ,
int ,
BoxPtr ,
PixmapPtr ,
int ,
int
);
extern void cfbFillRectTileOdd(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfbPolyFillRect(
DrawablePtr ,
GCPtr ,
int ,
xRectangle *
);
extern void cfbUnnaturalTileFS(
DrawablePtr ,
GCPtr,
int ,
DDXPointPtr ,
int * ,
int
);
extern void cfbUnnaturalStippleFS(
DrawablePtr ,
GCPtr,
int ,
DDXPointPtr ,
int * ,
int
);
#ifndef CFB_PROTOTYPES_ONLY
extern void cfb8Stipple32FS(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
extern void cfb8OpaqueStipple32FS(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
#endif
extern GCOpsPtr cfbMatchCommon(
GCPtr ,
cfbPrivGCPtr
);
extern Bool cfbCreateGC(
GCPtr
);
extern void cfbValidateGC(
GCPtr ,
unsigned long ,
DrawablePtr
);
extern void cfbGetSpans(
DrawablePtr ,
int ,
DDXPointPtr ,
int * ,
int ,
char *
);
extern void cfbPolyGlyphBlt8(
DrawablePtr ,
GCPtr ,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
extern void cfbPolyGlyphRop8(
DrawablePtr ,
GCPtr ,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
extern void cfbHorzS(
int ,
CfbBits ,
CfbBits ,
CfbBits * ,
int ,
int ,
int ,
int
);
extern void cfbVertS(
int ,
CfbBits ,
CfbBits ,
CfbBits * ,
int ,
int ,
int ,
int
);
extern void cfbImageGlyphBlt8(
DrawablePtr ,
GCPtr ,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
extern void cfbPutImage(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
char *
);
extern void cfbGetImage(
DrawablePtr ,
int ,
int ,
int ,
int ,
unsigned int ,
unsigned long ,
char *
);
extern void cfbLineSS(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr
);
extern void cfbLineSD(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr
);
extern PixmapPtr cfbCreatePixmap(
ScreenPtr ,
int ,
int ,
int
);
extern Bool cfbDestroyPixmap(
PixmapPtr
);
extern PixmapPtr cfbCopyPixmap(
PixmapPtr
);
extern void cfbPadPixmap(
PixmapPtr
);
extern void cfbXRotatePixmap(
PixmapPtr ,
int
);
extern void cfbYRotatePixmap(
PixmapPtr ,
int
);
extern void cfbCopyRotatePixmap(
PixmapPtr ,
PixmapPtr * ,
int ,
int
);
extern void cfbFillPoly1RectCopy(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
DDXPointPtr
);
extern void cfbFillPoly1RectGeneral(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
DDXPointPtr
);
extern void cfbPaintWindow(
WindowPtr ,
RegionPtr ,
int
);
extern void cfbFillBoxSolid(
DrawablePtr ,
int ,
BoxPtr ,
unsigned long
);
extern void cfbFillBoxTile32(
DrawablePtr ,
int ,
BoxPtr ,
PixmapPtr
);
extern void cfbPolyPoint(
DrawablePtr ,
GCPtr ,
int ,
int ,
xPoint *
);
#ifndef CFB_PROTOTYPES_ONLY
extern void cfbPushPixels8(
GCPtr ,
PixmapPtr ,
DrawablePtr ,
int ,
int ,
int ,
int
);
extern void cfb8FillRectOpaqueStippled32(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfb8FillRectTransparentStippled32(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfb8FillRectStippledUnnatural(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
#endif
extern int cfbReduceRasterOp(
int ,
CfbBits ,
CfbBits ,
CfbBits * ,
CfbBits *
);
extern Bool cfbCloseScreen(
int ,
ScreenPtr
);
extern Bool cfbSetupScreen(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int
);
extern Bool cfbFinishScreenInit(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int
);
extern Bool cfbScreenInit(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int
);
extern PixmapPtr cfbGetScreenPixmap(
ScreenPtr
);
extern void cfbSetScreenPixmap(
PixmapPtr
);
extern void cfbSegmentSS(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern void cfbSegmentSD(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern void cfbSetScanline(
int ,
int ,
int ,
int ,
unsigned int * ,
int ,
int * ,
int ,
unsigned long
);
extern void cfbSetSpans(
DrawablePtr ,
GCPtr ,
char * ,
DDXPointPtr ,
int * ,
int ,
int
);
extern void cfbFillRectSolidCopy(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfbSolidSpansCopy(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
extern void cfbFillRectSolidGeneral(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfbSolidSpansGeneral(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
extern void cfbFillRectSolidXor(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfbSolidSpansXor(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
#ifndef CFB_PROTOTYPES_ONLY
extern void cfbTEGlyphBlt8(
DrawablePtr ,
GCPtr,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
#endif
extern void cfbTEGlyphBlt(
DrawablePtr ,
GCPtr,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
extern void cfbFillRectTile32Copy(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfbTile32FSCopy(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
extern void cfbFillRectTile32General(
DrawablePtr ,
GCPtr ,
int ,
BoxPtr
);
extern void cfbTile32FSGeneral(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr ,
int * ,
int
);
extern void cfbFillBoxTileOddCopy(
DrawablePtr ,
int ,
BoxPtr ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillSpanTileOddCopy(
DrawablePtr ,
int ,
DDXPointPtr ,
int * ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillBoxTile32sCopy(
DrawablePtr ,
int ,
BoxPtr ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillSpanTile32sCopy(
DrawablePtr ,
int ,
DDXPointPtr ,
int * ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillBoxTileOddGeneral(
DrawablePtr ,
int ,
BoxPtr ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillSpanTileOddGeneral(
DrawablePtr ,
int ,
DDXPointPtr ,
int * ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillBoxTile32sGeneral(
DrawablePtr ,
int ,
BoxPtr ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern void cfbFillSpanTile32sGeneral(
DrawablePtr ,
int ,
DDXPointPtr ,
int * ,
PixmapPtr ,
int ,
int ,
int ,
unsigned long
);
extern Bool cfbCreateWindow(
WindowPtr
);
extern Bool cfbDestroyWindow(
WindowPtr
);
extern Bool cfbMapWindow(
WindowPtr
);
extern Bool cfbPositionWindow(
WindowPtr ,
int ,
int
);
extern Bool cfbUnmapWindow(
WindowPtr
);
extern void cfbCopyWindow(
WindowPtr ,
DDXPointRec ,
RegionPtr
);
extern Bool cfbChangeWindowAttributes(
WindowPtr ,
unsigned long
);
extern void cfbZeroPolyArcSS8Copy(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
extern void cfbZeroPolyArcSS8General(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
extern void cfbZeroPolyArcSS8Xor(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
#if (!defined(SINGLEDEPTH) && PSZ != 8) || defined(FORCE_SEPARATE_PRIVATE)
#define CFB_NEED_SCREEN_PRIVATE
extern int cfbScreenPrivateIndex;
#endif
#ifndef CFB_PROTOTYPES_ONLY
#define cfbGetWindowPixmap(d) \
((* ((DrawablePtr)(d))->pScreen->GetWindowPixmap)((WindowPtr)(d)))
#define cfbGetTypedWidth(pDrawable,wtype) (\
(((pDrawable)->type != DRAWABLE_PIXMAP) ? \
(int) (cfbGetWindowPixmap(pDrawable)->devKind) : \
(int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
#define cfbGetByteWidth(pDrawable) cfbGetTypedWidth(pDrawable, unsigned char)
#define cfbGetPixelWidth(pDrawable) cfbGetTypedWidth(pDrawable, PixelType)
#define cfbGetLongWidth(pDrawable) cfbGetTypedWidth(pDrawable, CfbBits)
#define cfbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
PixmapPtr _pPix; \
if ((pDrawable)->type != DRAWABLE_PIXMAP) \
_pPix = cfbGetWindowPixmap(pDrawable); \
else \
_pPix = (PixmapPtr) (pDrawable); \
(pointer) = (ptype *) _pPix->devPrivate.ptr; \
(width) = ((int) _pPix->devKind) / sizeof (wtype); \
}
#define cfbGetByteWidthAndPointer(pDrawable, width, pointer) \
cfbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
#define cfbGetLongWidthAndPointer(pDrawable, width, pointer) \
cfbGetTypedWidthAndPointer(pDrawable, width, pointer, CfbBits, CfbBits)
#define cfbGetPixelWidthAndPointer(pDrawable, width, pointer) \
cfbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
#define cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
PixmapPtr _pPix = cfbGetWindowPixmap((DrawablePtr) (pWin)); \
(pointer) = (ptype *) _pPix->devPrivate.ptr; \
(width) = ((int) _pPix->devKind) / sizeof (wtype); \
}
#define cfbGetWindowLongWidthAndPointer(pWin, width, pointer) \
cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, CfbBits, CfbBits)
#define cfbGetWindowByteWidthAndPointer(pWin, width, pointer) \
cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned char, unsigned char)
#define cfbGetWindowPixelWidthAndPointer(pDrawable, width, pointer) \
cfbGetWindowTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
#define cfbWindowEnabled(pWin) \
REGION_NOTEMPTY((pWin)->drawable.pScreen, \
&WindowTable[(pWin)->drawable.pScreen->myNum]->borderClip)
#define cfbDrawableEnabled(pDrawable) \
((pDrawable)->type == DRAWABLE_PIXMAP ? \
TRUE : cfbWindowEnabled((WindowPtr) pDrawable))
#include "micoord.h"
#endif
#endif