/* $XConsortium: cfb.h,v 5.37 94/04/17 20:28:38 dpw Exp $ */ /************************************************************ Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright no- tice appear in all copies and that both that copyright no- tice and this permission notice appear in supporting docu- mentation, and that the names of Sun or X Consortium not be used in advertising or publicity pertaining to distribution of the software without specific prior written permission. Sun and X Consortium make no representations about the suitability of this software for any purpose. It is provided "as is" without any express or implied warranty. SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT- NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI- ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ********************************************************/ #include "X.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" /* private filed of pixmap pixmap.devPrivate = (unsigned int *)pointer_to_bits pixmap.devKind = width_of_pixmap_in_bytes */ extern int cfbGCPrivateIndex; extern int cfbWindowPrivateIndex; /* private field of GC */ typedef struct { unsigned char rop; /* special case rop values */ /* next two values unused in cfb, included for compatibility with mfb */ unsigned char ropOpStip; /* rop for opaque stipple */ /* this value is ropFillArea in mfb, usurped for cfb */ unsigned char oneRect; /* drawable has one clip rect */ unsigned fExpose:1; /* callexposure handling ? */ unsigned freeCompClip:1; PixmapPtr pRotatedPixmap; RegionPtr pCompositeClip; /* FREE_CC or REPLACE_CC */ unsigned long xor, and; /* reduced rop values */ } cfbPrivGC; typedef cfbPrivGC *cfbPrivGCPtr; #define cfbGetGCPrivate(pGC) ((cfbPrivGCPtr)\ (pGC)->devPrivates[cfbGCPrivateIndex].ptr) #define cfbGetCompositeClip(pGC) (((cfbPrivGCPtr)\ (pGC)->devPrivates[cfbGCPrivateIndex].ptr)->pCompositeClip) /* way to carry RROP info around */ typedef struct { unsigned char rop; unsigned long xor, and; } cfbRRopRec, *cfbRRopPtr; /* private field of window */ typedef struct { unsigned char fastBorder; /* non-zero if border is 32 bits wide */ unsigned char fastBackground; unsigned short unused; /* pad for alignment with Sun compiler */ DDXPointRec oldRotate; PixmapPtr pRotatedBackground; PixmapPtr pRotatedBorder; } cfbPrivWin; #define cfbGetWindowPrivate(_pWin) ((cfbPrivWin *)\ (_pWin)->devPrivates[cfbWindowPrivateIndex].ptr) /* cfb8bit.c */ extern int cfbSetStipple( #if NeedFunctionPrototypes int /*alu*/, unsigned long /*fg*/, unsigned long /*planemask*/ #endif ); extern int cfbSetOpaqueStipple( #if NeedFunctionPrototypes int /*alu*/, unsigned long /*fg*/, unsigned long /*bg*/, unsigned long /*planemask*/ #endif ); extern int cfbComputeClipMasks32( #if NeedFunctionPrototypes BoxPtr /*pBox*/, int /*numRects*/, int /*x*/, int /*y*/, int /*w*/, int /*h*/, CARD32 * /*clips*/ #endif ); /* cfb8cppl.c */ extern void cfbCopyImagePlane( #if NeedFunctionPrototypes DrawablePtr /*pSrcDrawable*/, DrawablePtr /*pDstDrawable*/, int /*rop*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/ #endif ); extern void cfbCopyPlane8to1( #if NeedFunctionPrototypes DrawablePtr /*pSrcDrawable*/, DrawablePtr /*pDstDrawable*/, int /*rop*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/, unsigned long /*bitPlane*/ #endif ); /* cfb8lineCO.c */ extern int cfb8LineSS1RectCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/, DDXPointPtr /*pptInitOrig*/, int * /*x1p*/, int * /*y1p*/, int * /*x2p*/, int * /*y2p*/ #endif ); extern void cfb8LineSS1Rect( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/ #endif ); extern void cfb8ClippedLineCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*x1*/, int /*y1*/, int /*x2*/, int /*y2*/, BoxPtr /*boxp*/, Bool /*shorten*/ #endif ); /* cfb8lineCP.c */ extern int cfb8LineSS1RectPreviousCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/, DDXPointPtr /*pptInitOrig*/, int * /*x1p*/, int * /*y1p*/, int * /*x2p*/, int * /*y2p*/ #endif ); /* cfb8lineG.c */ extern int cfb8LineSS1RectGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/, DDXPointPtr /*pptInitOrig*/, int * /*x1p*/, int * /*y1p*/, int * /*x2p*/, int * /*y2p*/ #endif ); extern void cfb8ClippedLineGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*x1*/, int /*y1*/, int /*x2*/, int /*y2*/, BoxPtr /*boxp*/, Bool /*shorten*/ #endif ); /* cfb8lineX.c */ extern int cfb8LineSS1RectXor( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/, DDXPointPtr /*pptInitOrig*/, int * /*x1p*/, int * /*y1p*/, int * /*x2p*/, int * /*y2p*/ #endif ); extern void cfb8ClippedLineXor( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*x1*/, int /*y1*/, int /*x2*/, int /*y2*/, BoxPtr /*boxp*/, Bool /*shorten*/ #endif ); /* cfb8segC.c */ extern int cfb8SegmentSS1RectCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSegInit*/ #endif ); /* cfb8segCS.c */ extern int cfb8SegmentSS1RectShiftCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSegInit*/ #endif ); extern void cfb8SegmentSS1Rect( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSegInit*/ #endif ); /* cfb8segG.c */ extern int cfb8SegmentSS1RectGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSegInit*/ #endif ); /* cfbsegX.c */ extern int cfb8SegmentSS1RectXor( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSegInit*/ #endif ); /* cfballpriv.c */ extern Bool cfbAllocatePrivates( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/, int * /*window_index*/, int * /*gc_index*/ #endif ); /* cfbbitblt.c */ extern RegionPtr cfbBitBlt( #if NeedFunctionPrototypes DrawablePtr /*pSrcDrawable*/, DrawablePtr /*pDstDrawable*/, GCPtr/*pGC*/, int /*srcx*/, int /*srcy*/, int /*width*/, int /*height*/, int /*dstx*/, int /*dsty*/, void (* /*doBitBlt*/)(), unsigned long /*bitPlane*/ #endif ); extern void cfbDoBitblt( #if NeedFunctionPrototypes DrawablePtr /*pSrc*/, DrawablePtr /*pDst*/, int /*alu*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/ #endif ); extern RegionPtr cfbCopyArea( #if NeedFunctionPrototypes DrawablePtr /*pSrcDrawable*/, DrawablePtr /*pDstDrawable*/, GCPtr/*pGC*/, int /*srcx*/, int /*srcy*/, int /*width*/, int /*height*/, int /*dstx*/, int /*dsty*/ #endif ); extern void cfbCopyPlane1to8( #if NeedFunctionPrototypes DrawablePtr /*pSrcDrawable*/, DrawablePtr /*pDstDrawable*/, int /*rop*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/, unsigned long /*bitPlane*/ #endif ); extern RegionPtr cfbCopyPlane( #if NeedFunctionPrototypes DrawablePtr /*pSrcDrawable*/, DrawablePtr /*pDstDrawable*/, GCPtr /*pGC*/, int /*srcx*/, int /*srcy*/, int /*width*/, int /*height*/, int /*dstx*/, int /*dsty*/, unsigned long /*bitPlane*/ #endif ); /* cfbbltC.c */ extern void cfbDoBitbltCopy( #if NeedFunctionPrototypes DrawablePtr /*pSrc*/, DrawablePtr /*pDst*/, int /*alu*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/ #endif ); /* cfbbltG.c */ extern void cfbDoBitbltGeneral( #if NeedFunctionPrototypes DrawablePtr /*pSrc*/, DrawablePtr /*pDst*/, int /*alu*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/ #endif ); /* cfbbltO.c */ extern void cfbDoBitbltOr( #if NeedFunctionPrototypes DrawablePtr /*pSrc*/, DrawablePtr /*pDst*/, int /*alu*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/ #endif ); /* cfbbltX.c */ extern void cfbDoBitbltXor( #if NeedFunctionPrototypes DrawablePtr /*pSrc*/, DrawablePtr /*pDst*/, int /*alu*/, RegionPtr /*prgnDst*/, DDXPointPtr /*pptSrc*/, unsigned long /*planemask*/ #endif ); /* cfbbres.c */ extern void cfbBresS( #if NeedFunctionPrototypes int /*rop*/, unsigned long /*and*/, unsigned long /*xor*/, unsigned long * /*addrl*/, int /*nlwidth*/, int /*signdx*/, int /*signdy*/, int /*axis*/, int /*x1*/, int /*y1*/, int /*e*/, int /*e1*/, int /*e2*/, int /*len*/ #endif ); /* cfbbresd.c */ extern void cfbBresD( #if NeedFunctionPrototypes cfbRRopPtr /*rrops*/, int * /*pdashIndex*/, unsigned char * /*pDash*/, int /*numInDashList*/, int * /*pdashOffset*/, int /*isDoubleDash*/, unsigned long * /*addrl*/, int /*nlwidth*/, int /*signdx*/, int /*signdy*/, int /*axis*/, int /*x1*/, int /*y1*/, int /*e*/, int /*e1*/, int /*e2*/, int /*len*/ #endif ); /* cfbbstore.c */ extern void cfbSaveAreas( #if NeedFunctionPrototypes PixmapPtr /*pPixmap*/, RegionPtr /*prgnSave*/, int /*xorg*/, int /*yorg*/, WindowPtr /*pWin*/ #endif ); extern void cfbRestoreAreas( #if NeedFunctionPrototypes PixmapPtr /*pPixmap*/, RegionPtr /*prgnRestore*/, int /*xorg*/, int /*yorg*/, WindowPtr /*pWin*/ #endif ); /* cfbcmap.c */ extern int cfbListInstalledColormaps( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/, Colormap * /*pmaps*/ #endif ); extern void cfbInstallColormap( #if NeedFunctionPrototypes ColormapPtr /*pmap*/ #endif ); extern void cfbUninstallColormap( #if NeedFunctionPrototypes ColormapPtr /*pmap*/ #endif ); extern void cfbResolveColor( #if NeedFunctionPrototypes unsigned short * /*pred*/, unsigned short * /*pgreen*/, unsigned short * /*pblue*/, VisualPtr /*pVisual*/ #endif ); extern Bool cfbInitializeColormap( #if NeedFunctionPrototypes ColormapPtr /*pmap*/ #endif ); extern int cfbExpandDirectColors( #if NeedFunctionPrototypes ColormapPtr /*pmap*/, int /*ndef*/, xColorItem * /*indefs*/, xColorItem * /*outdefs*/ #endif ); extern Bool cfbCreateDefColormap( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/ #endif ); extern Bool cfbSetVisualTypes( #if NeedFunctionPrototypes int /*depth*/, int /*visuals*/, int /*bitsPerRGB*/ #endif ); extern Bool cfbInitVisuals( #if NeedFunctionPrototypes VisualPtr * /*visualp*/, DepthPtr * /*depthp*/, int * /*nvisualp*/, int * /*ndepthp*/, int * /*rootDepthp*/, VisualID * /*defaultVisp*/, unsigned long /*sizes*/, int /*bitsPerRGB*/ #endif ); /* cfbfillarcC.c */ extern void cfbPolyFillArcSolidCopy( #if NeedFunctionPrototypes DrawablePtr /*pDraw*/, GCPtr /*pGC*/, int /*narcs*/, xArc * /*parcs*/ #endif ); /* cfbfillarcG.c */ extern void cfbPolyFillArcSolidGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDraw*/, GCPtr /*pGC*/, int /*narcs*/, xArc * /*parcs*/ #endif ); /* cfbfillrct.c */ extern void cfbFillBoxTileOdd( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*n*/, BoxPtr /*rects*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/ #endif ); extern void cfbFillRectTileOdd( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfbPolyFillRect( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nrectFill*/, xRectangle * /*prectInit*/ #endif ); /* cfbfillsp.c */ extern void cfbUnnaturalTileFS( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr/*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); extern void cfbUnnaturalStippleFS( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr/*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); extern void cfb8Stipple32FS( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); extern void cfb8OpaqueStipple32FS( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); /* cfbgc.c */ extern GCOpsPtr cfbMatchCommon( #if NeedFunctionPrototypes GCPtr /*pGC*/, cfbPrivGCPtr /*devPriv*/ #endif ); extern Bool cfbCreateGC( #if NeedFunctionPrototypes GCPtr /*pGC*/ #endif ); extern void cfbValidateGC( #if NeedFunctionPrototypes GCPtr /*pGC*/, unsigned long /*changes*/, DrawablePtr /*pDrawable*/ #endif ); /* cfbgetsp.c */ extern void cfbGetSpans( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*wMax*/, DDXPointPtr /*ppt*/, int * /*pwidth*/, int /*nspans*/, char * /*pdstStart*/ #endif ); /* cfbglblt8.c */ extern void cfbPolyGlyphBlt8( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*x*/, int /*y*/, unsigned int /*nglyph*/, CharInfoPtr * /*ppci*/, pointer /*pglyphBase*/ #endif ); /* cfbglrop8.c */ extern void cfbPolyGlyphRop8( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*x*/, int /*y*/, unsigned int /*nglyph*/, CharInfoPtr * /*ppci*/, pointer /*pglyphBase*/ #endif ); /* cfbhrzvert.c */ extern int cfbHorzS( #if NeedFunctionPrototypes int /*rop*/, unsigned long /*and*/, unsigned long /*xor*/, unsigned long * /*addrl*/, int /*nlwidth*/, int /*x1*/, int /*y1*/, int /*len*/ #endif ); extern int cfbVertS( #if NeedFunctionPrototypes int /*rop*/, unsigned long /*and*/, unsigned long /*xor*/, unsigned long * /*addrl*/, int /*nlwidth*/, int /*x1*/, int /*y1*/, int /*len*/ #endif ); /* cfbigblt8.c */ extern void cfbImageGlyphBlt8( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*x*/, int /*y*/, unsigned int /*nglyph*/, CharInfoPtr * /*ppci*/, pointer /*pglyphBase*/ #endif ); /* cfbimage.c */ extern void cfbPutImage( #if NeedFunctionPrototypes DrawablePtr /*pDraw*/, GCPtr /*pGC*/, int /*depth*/, int /*x*/, int /*y*/, int /*w*/, int /*h*/, int /*leftPad*/, int /*format*/, char * /*pImage*/ #endif ); extern void cfbGetImage( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*sx*/, int /*sy*/, int /*w*/, int /*h*/, unsigned int /*format*/, unsigned long /*planeMask*/, char * /*pdstLine*/ #endif ); /* cfbline.c */ extern void cfbLineSS( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/ #endif ); extern void cfbLineSD( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, DDXPointPtr /*pptInit*/ #endif ); /* cfbmskbits.c */ /* cfbpixmap.c */ extern PixmapPtr cfbCreatePixmap( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/, int /*width*/, int /*height*/, int /*depth*/ #endif ); extern Bool cfbDestroyPixmap( #if NeedFunctionPrototypes PixmapPtr /*pPixmap*/ #endif ); extern PixmapPtr cfbCopyPixmap( #if NeedFunctionPrototypes PixmapPtr /*pSrc*/ #endif ); extern void cfbPadPixmap( #if NeedFunctionPrototypes PixmapPtr /*pPixmap*/ #endif ); extern void cfbXRotatePixmap( #if NeedFunctionPrototypes PixmapPtr /*pPix*/, int /*rw*/ #endif ); extern void cfbYRotatePixmap( #if NeedFunctionPrototypes PixmapPtr /*pPix*/, int /*rh*/ #endif ); extern void cfbCopyRotatePixmap( #if NeedFunctionPrototypes PixmapPtr /*psrcPix*/, PixmapPtr * /*ppdstPix*/, int /*xrot*/, int /*yrot*/ #endif ); /* cfbply1rctC.c */ extern void cfbFillPoly1RectCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*shape*/, int /*mode*/, int /*count*/, DDXPointPtr /*ptsIn*/ #endif ); /* cfbply1rctG.c */ extern void cfbFillPoly1RectGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*shape*/, int /*mode*/, int /*count*/, DDXPointPtr /*ptsIn*/ #endif ); /* cfbpntwin.c */ extern void cfbPaintWindow( #if NeedFunctionPrototypes WindowPtr /*pWin*/, RegionPtr /*pRegion*/, int /*what*/ #endif ); extern void cfbFillBoxSolid( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*nBox*/, BoxPtr /*pBox*/, unsigned long /*pixel*/ #endif ); extern void cfbFillBoxTile32( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*nBox*/, BoxPtr /*pBox*/, PixmapPtr /*tile*/ #endif ); /* cfbpolypnt.c */ extern void cfbPolyPoint( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*mode*/, int /*npt*/, xPoint * /*pptInit*/ #endif ); /* cfbpush8.c */ extern void cfbPushPixels8( #if NeedFunctionPrototypes GCPtr /*pGC*/, PixmapPtr /*pBitmap*/, DrawablePtr /*pDrawable*/, int /*dx*/, int /*dy*/, int /*xOrg*/, int /*yOrg*/ #endif ); /* cfbrctstp8.c */ extern void cfb8FillRectOpaqueStippled32( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfb8FillRectTransparentStippled32( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfb8FillRectStippledUnnatural( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); /* cfbrrop.c */ extern int cfbReduceRasterOp( #if NeedFunctionPrototypes int /*rop*/, unsigned long /*fg*/, unsigned long /*pm*/, unsigned long * /*andp*/, unsigned long * /*xorp*/ #endif ); /* cfbscrinit.c */ extern Bool cfbCloseScreen( #if NeedFunctionPrototypes int /*index*/, ScreenPtr /*pScreen*/ #endif ); extern Bool cfbSetupScreen( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/, pointer /*pbits*/, int /*xsize*/, int /*ysize*/, int /*dpix*/, int /*dpiy*/, int /*width*/ #endif ); extern int cfbFinishScreenInit( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/, pointer /*pbits*/, int /*xsize*/, int /*ysize*/, int /*dpix*/, int /*dpiy*/, int /*width*/ #endif ); extern Bool cfbScreenInit( #if NeedFunctionPrototypes ScreenPtr /*pScreen*/, pointer /*pbits*/, int /*xsize*/, int /*ysize*/, int /*dpix*/, int /*dpiy*/, int /*width*/ #endif ); /* cfbseg.c */ extern void cfbSegmentSS( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSeg*/ #endif ); extern void cfbSegmentSD( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nseg*/, xSegment * /*pSeg*/ #endif ); /* cfbsetsp.c */ extern int cfbSetScanline( #if NeedFunctionPrototypes int /*y*/, int /*xOrigin*/, int /*xStart*/, int /*xEnd*/, unsigned int * /*psrc*/, int /*alu*/, int * /*pdstBase*/, int /*widthDst*/, unsigned long /*planemask*/ #endif ); extern void cfbSetSpans( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, char * /*psrc*/, DDXPointPtr /*ppt*/, int * /*pwidth*/, int /*nspans*/, int /*fSorted*/ #endif ); /* cfbsolidC.c */ extern void cfbFillRectSolidCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfbSolidSpansCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); /* cfbsolidG.c */ extern void cfbFillRectSolidGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfbSolidSpansGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); /* cfbsolidX.c */ extern void cfbFillRectSolidXor( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfbSolidSpansXor( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); /* cfbteblt8.c */ extern void cfbTEGlyphBlt8( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr/*pGC*/, int /*xInit*/, int /*yInit*/, unsigned int /*nglyph*/, CharInfoPtr * /*ppci*/, pointer /*pglyphBase*/ #endif ); /* cfbtegblt.c */ extern void cfbTEGlyphBlt( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr/*pGC*/, int /*x*/, int /*y*/, unsigned int /*nglyph*/, CharInfoPtr * /*ppci*/, pointer /*pglyphBase*/ #endif ); /* cfbtile32C.c */ extern void cfbFillRectTile32Copy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfbTile32FSCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); /* cfbtile32G.c */ extern void cfbFillRectTile32General( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nBox*/, BoxPtr /*pBox*/ #endif ); extern void cfbTile32FSGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, GCPtr /*pGC*/, int /*nInit*/, DDXPointPtr /*pptInit*/, int * /*pwidthInit*/, int /*fSorted*/ #endif ); /* cfbtileoddC.c */ extern void cfbFillBoxTileOddCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*nBox*/, BoxPtr /*pBox*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); extern void cfbFillSpanTileOddCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*n*/, DDXPointPtr /*ppt*/, int * /*pwidth*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); extern void cfbFillBoxTile32sCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*nBox*/, BoxPtr /*pBox*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); extern void cfbFillSpanTile32sCopy( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*n*/, DDXPointPtr /*ppt*/, int * /*pwidth*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); /* cfbtileoddG.c */ extern void cfbFillBoxTileOddGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*nBox*/, BoxPtr /*pBox*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); extern void cfbFillSpanTileOddGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*n*/, DDXPointPtr /*ppt*/, int * /*pwidth*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); extern void cfbFillBoxTile32sGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*nBox*/, BoxPtr /*pBox*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); extern void cfbFillSpanTile32sGeneral( #if NeedFunctionPrototypes DrawablePtr /*pDrawable*/, int /*n*/, DDXPointPtr /*ppt*/, int * /*pwidth*/, PixmapPtr /*tile*/, int /*xrot*/, int /*yrot*/, int /*alu*/, unsigned long /*planemask*/ #endif ); /* cfbwindow.c */ extern Bool cfbCreateWindow( #if NeedFunctionPrototypes WindowPtr /*pWin*/ #endif ); extern Bool cfbDestroyWindow( #if NeedFunctionPrototypes WindowPtr /*pWin*/ #endif ); extern Bool cfbMapWindow( #if NeedFunctionPrototypes WindowPtr /*pWindow*/ #endif ); extern Bool cfbPositionWindow( #if NeedFunctionPrototypes WindowPtr /*pWin*/, int /*x*/, int /*y*/ #endif ); extern Bool cfbUnmapWindow( #if NeedFunctionPrototypes WindowPtr /*pWindow*/ #endif ); extern void cfbCopyWindow( #if NeedFunctionPrototypes WindowPtr /*pWin*/, DDXPointRec /*ptOldOrg*/, RegionPtr /*prgnSrc*/ #endif ); extern Bool cfbChangeWindowAttributes( #if NeedFunctionPrototypes WindowPtr /*pWin*/, unsigned long /*mask*/ #endif ); /* cfbzerarcC.c */ extern void cfbZeroPolyArcSS8Copy( #if NeedFunctionPrototypes DrawablePtr /*pDraw*/, GCPtr /*pGC*/, int /*narcs*/, xArc * /*parcs*/ #endif ); /* cfbzerarcG.c */ extern void cfbZeroPolyArcSS8General( #if NeedFunctionPrototypes DrawablePtr /*pDraw*/, GCPtr /*pGC*/, int /*narcs*/, xArc * /*parcs*/ #endif ); /* cfbzerarcX.c */ extern void cfbZeroPolyArcSS8Xor( #if NeedFunctionPrototypes DrawablePtr /*pDraw*/, GCPtr /*pGC*/, int /*narcs*/, xArc * /*parcs*/ #endif ); /* * This is the only completely portable way to * compute this info */ #define BitsPerPixel(d) (\ (1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \ (PixmapWidthPaddingInfo[d].padRoundUp+1)) /* Common macros for extracting drawing information */ #if !defined(SINGLEDEPTH) && PSZ != 8 || defined(FORCE_SEPARATE_PRIVATE) #define CFB_NEED_SCREEN_PRIVATE extern int cfbScreenPrivateIndex; #define cfbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivates[cfbScreenPrivateIndex].ptr) #else #define cfbGetScreenPixmap(s) ((PixmapPtr) (s)->devPrivate) #endif #ifdef PIXMAP_PER_WINDOW #define cfbGetWindowPixmap(d) ((PixmapPtr) ((WindowPtr) d)->devPrivates[frameWindowPrivateIndex].ptr) #else #define cfbGetWindowPixmap(d) cfbGetScreenPixmap((d)->pScreen) #endif #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, unsigned long) #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, unsigned long, unsigned long) #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, unsigned long, unsigned long) #define cfbGetWindowByteWidthAndPointer(pWin, width, pointer) \ cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned char, unsigned char) #define cfbGetWindowPixelWidthAndPointer(pDrawable, width, pointer) \ cfbGetWindowTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType) /* Macros which handle a coordinate in a single register */ /* Most compilers will convert divide by 65536 into a shift, if signed * shifts exist. If your machine does arithmetic shifts and your compiler * can't get it right, add to this line. */ /* mips compiler - what a joke - it CSEs the 65536 constant into a reg * forcing as to use div instead of shift. Let's be explicit. */ #if defined(mips) || defined(sparc) || defined(__alpha) #define GetHighWord(x) (((int) (x)) >> 16) #else #define GetHighWord(x) (((int) (x)) / 65536) #endif #if IMAGE_BYTE_ORDER == MSBFirst #define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) (i)))) #define coordToInt(x,y) (((x) << 16) | (y)) #define intToX(i) (GetHighWord(i)) #define intToY(i) ((int) ((short) i)) #else #define intToCoord(i,x,y) (((x) = (int) ((short) (i))), ((y) = GetHighWord(i))) #define coordToInt(x,y) (((y) << 16) | (x)) #define intToX(i) ((int) ((short) (i))) #define intToY(i) (GetHighWord(i)) #endif