1 /************************************************************
2 Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
6 Permission to use, copy, modify, and distribute this
7 software and its documentation for any purpose and without
8 fee is hereby granted, provided that the above copyright no-
9 tice appear in all copies and that both that copyright no-
10 tice and this permission notice appear in supporting docu-
11 mentation, and that the names of Sun or The Open Group
12 not be used in advertising or publicity pertaining to
13 distribution of the software without specific prior
14 written permission. Sun and The Open Group make no
15 representations about the suitability of this software for
16 any purpose. It is provided "as is" without any express or
19 SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
20 INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
21 NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
22 ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
23 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
24 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
25 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
26 THE USE OR PERFORMANCE OF THIS SOFTWARE.
28 ********************************************************/
30 #if !defined(__CFB_H__) || defined(CFB_PROTOTYPES_ONLY)
38 #include "miscstruct.h"
40 #include "windowstr.h"
47 #define CfbBits CARD32
50 #ifndef CFB_PROTOTYPES_ONLY
53 private filed of pixmap
54 pixmap.devPrivate = (unsigned int *)pointer_to_bits
55 pixmap.devKind = width_of_pixmap_in_bytes
58 extern int cfbGCPrivateIndex
;
59 extern int cfbWindowPrivateIndex
;
61 /* private field of GC */
63 unsigned char rop
; /* special case rop values */
64 /* next two values unused in cfb, included for compatibility with mfb */
65 unsigned char ropOpStip
; /* rop for opaque stipple */
66 /* this value is ropFillArea in mfb, usurped for cfb */
67 unsigned char oneRect
; /* drawable has one clip rect */
68 CfbBits
xor, and; /* reduced rop values */
71 typedef cfbPrivGC
*cfbPrivGCPtr
;
73 #define cfbGetGCPrivate(pGC) ((cfbPrivGCPtr)\
74 (pGC)->devPrivates[cfbGCPrivateIndex].ptr)
76 #define cfbGetCompositeClip(pGC) ((pGC)->pCompositeClip)
78 /* way to carry RROP info around */
82 } cfbRRopRec
, *cfbRRopPtr
;
84 /* private field of window */
86 unsigned char fastBorder
; /* non-zero if border is 32 bits wide */
87 unsigned char fastBackground
;
88 unsigned short unused
; /* pad for alignment with Sun compiler */
89 DDXPointRec oldRotate
;
90 PixmapPtr pRotatedBackground
;
91 PixmapPtr pRotatedBorder
;
94 #define cfbGetWindowPrivate(_pWin) ((cfbPrivWin *)\
95 (_pWin)->devPrivates[cfbWindowPrivateIndex].ptr)
100 extern int cfbSetStipple(
103 CfbBits
/*planemask*/
106 extern int cfbSetOpaqueStipple(
110 CfbBits
/*planemask*/
113 extern int cfbComputeClipMasks32(
122 #endif /* !CFB_PROTOTYPES_ONLY */
125 extern void cfbCopyImagePlane(
126 DrawablePtr
/*pSrcDrawable*/,
127 DrawablePtr
/*pDstDrawable*/,
129 RegionPtr
/*prgnDst*/,
130 DDXPointPtr
/*pptSrc*/,
131 unsigned long /*planemask*/
134 #ifndef CFB_PROTOTYPES_ONLY
135 extern void cfbCopyPlane8to1(
136 DrawablePtr
/*pSrcDrawable*/,
137 DrawablePtr
/*pDstDrawable*/,
139 RegionPtr
/*prgnDst*/,
140 DDXPointPtr
/*pptSrc*/,
141 unsigned long /*planemask*/,
142 unsigned long /*bitPlane*/
145 extern void cfbCopyPlane16to1(
146 DrawablePtr
/*pSrcDrawable*/,
147 DrawablePtr
/*pDstDrawable*/,
149 RegionPtr
/*prgnDst*/,
150 DDXPointPtr
/*pptSrc*/,
151 unsigned long /*planemask*/,
152 unsigned long /*bitPlane*/
155 extern void cfbCopyPlane24to1(
156 DrawablePtr
/*pSrcDrawable*/,
157 DrawablePtr
/*pDstDrawable*/,
159 RegionPtr
/*prgnDst*/,
160 DDXPointPtr
/*pptSrc*/,
161 unsigned long /*planemask*/,
162 unsigned long /*bitPlane*/
165 extern void cfbCopyPlane32to1(
166 DrawablePtr
/*pSrcDrawable*/,
167 DrawablePtr
/*pDstDrawable*/,
169 RegionPtr
/*prgnDst*/,
170 DDXPointPtr
/*pptSrc*/,
171 unsigned long /*planemask*/,
172 unsigned long /*bitPlane*/
178 extern int cfb8LineSS1RectCopy(
179 DrawablePtr
/*pDrawable*/,
183 DDXPointPtr
/*pptInit*/,
184 DDXPointPtr
/*pptInitOrig*/,
191 extern void cfb8LineSS1Rect(
192 DrawablePtr
/*pDrawable*/,
196 DDXPointPtr
/*pptInit*/
199 extern void cfb8ClippedLineCopy(
200 DrawablePtr
/*pDrawable*/,
211 extern int cfb8LineSS1RectPreviousCopy(
212 DrawablePtr
/*pDrawable*/,
216 DDXPointPtr
/*pptInit*/,
217 DDXPointPtr
/*pptInitOrig*/,
225 extern int cfb8LineSS1RectGeneral(
226 DrawablePtr
/*pDrawable*/,
230 DDXPointPtr
/*pptInit*/,
231 DDXPointPtr
/*pptInitOrig*/,
238 extern void cfb8ClippedLineGeneral(
239 DrawablePtr
/*pDrawable*/,
250 extern int cfb8LineSS1RectXor(
251 DrawablePtr
/*pDrawable*/,
255 DDXPointPtr
/*pptInit*/,
256 DDXPointPtr
/*pptInitOrig*/,
263 extern void cfb8ClippedLineXor(
264 DrawablePtr
/*pDrawable*/,
275 extern int cfb8SegmentSS1RectCopy(
276 DrawablePtr
/*pDrawable*/,
279 xSegment
* /*pSegInit*/
283 extern int cfb8SegmentSS1RectShiftCopy(
284 DrawablePtr
/*pDrawable*/,
287 xSegment
* /*pSegInit*/
290 extern void cfb8SegmentSS1Rect(
291 DrawablePtr
/*pDrawable*/,
294 xSegment
* /*pSegInit*/
298 extern int cfb8SegmentSS1RectGeneral(
299 DrawablePtr
/*pDrawable*/,
302 xSegment
* /*pSegInit*/
306 extern int cfb8SegmentSS1RectXor(
307 DrawablePtr
/*pDrawable*/,
310 xSegment
* /*pSegInit*/
314 extern Bool
cfbAllocatePrivates(
315 ScreenPtr
/*pScreen*/,
316 int * /*window_index*/,
321 extern RegionPtr
cfbBitBlt(
322 DrawablePtr
/*pSrcDrawable*/,
323 DrawablePtr
/*pDstDrawable*/,
331 void (* /*doBitBlt*/)(
332 DrawablePtr
/*pSrc*/,
333 DrawablePtr
/*pDst*/,
335 RegionPtr
/*prgnDst*/,
336 DDXPointPtr
/*pptSrc*/,
337 unsigned long /*planemask*/
339 unsigned long /*bitPlane*/
342 #define cfbCopyPlaneExpand cfbBitBlt
344 extern RegionPtr
cfbCopyPlaneReduce(
345 DrawablePtr
/*pSrcDrawable*/,
346 DrawablePtr
/*pDstDrawable*/,
354 void (* /*doCopyPlane*/)(
355 DrawablePtr
/*pSrc*/,
356 DrawablePtr
/*pDst*/,
358 RegionPtr
/*prgnDst*/,
359 DDXPointPtr
/*pptSrc*/,
360 unsigned long /*planemask*/,
361 unsigned long /*bitPlane*/ /* We must know which plane to reduce! */
363 unsigned long /*bitPlane*/
366 extern void cfbDoBitblt(
367 DrawablePtr
/*pSrc*/,
368 DrawablePtr
/*pDst*/,
370 RegionPtr
/*prgnDst*/,
371 DDXPointPtr
/*pptSrc*/,
372 unsigned long /*planemask*/
375 extern RegionPtr
cfbCopyArea(
376 DrawablePtr
/*pSrcDrawable*/,
377 DrawablePtr
/*pDstDrawable*/,
387 #ifndef CFB_PROTOTYPES_ONLY
388 extern void cfbCopyPlane1to8(
389 DrawablePtr
/*pSrcDrawable*/,
390 DrawablePtr
/*pDstDrawable*/,
392 RegionPtr
/*prgnDst*/,
393 DDXPointPtr
/*pptSrc*/,
394 unsigned long /*planemask*/
398 extern RegionPtr
cfbCopyPlane(
399 DrawablePtr
/*pSrcDrawable*/,
400 DrawablePtr
/*pDstDrawable*/,
408 unsigned long /*bitPlane*/
412 extern void cfbDoBitbltCopy(
413 DrawablePtr
/*pSrc*/,
414 DrawablePtr
/*pDst*/,
416 RegionPtr
/*prgnDst*/,
417 DDXPointPtr
/*pptSrc*/,
418 unsigned long /*planemask*/
422 extern void cfbDoBitbltGeneral(
423 DrawablePtr
/*pSrc*/,
424 DrawablePtr
/*pDst*/,
426 RegionPtr
/*prgnDst*/,
427 DDXPointPtr
/*pptSrc*/,
428 unsigned long /*planemask*/
432 extern void cfbDoBitbltOr(
433 DrawablePtr
/*pSrc*/,
434 DrawablePtr
/*pDst*/,
436 RegionPtr
/*prgnDst*/,
437 DDXPointPtr
/*pptSrc*/,
438 unsigned long /*planemask*/
442 extern void cfbDoBitbltXor(
443 DrawablePtr
/*pSrc*/,
444 DrawablePtr
/*pDst*/,
446 RegionPtr
/*prgnDst*/,
447 DDXPointPtr
/*pptSrc*/,
448 unsigned long /*planemask*/
452 extern void cfbBresS(
470 extern void cfbBresD(
471 cfbRRopPtr
/*rrops*/,
472 int * /*pdashIndex*/,
473 unsigned char * /*pDash*/,
474 int /*numInDashList*/,
475 int * /*pdashOffset*/,
476 int /*isDoubleDash*/,
491 extern void cfbSaveAreas(
492 PixmapPtr
/*pPixmap*/,
493 RegionPtr
/*prgnSave*/,
499 extern void cfbRestoreAreas(
500 PixmapPtr
/*pPixmap*/,
501 RegionPtr
/*prgnRestore*/,
508 #ifndef CFB_PROTOTYPES_ONLY
509 extern int cfbListInstalledColormaps(
510 ScreenPtr
/*pScreen*/,
514 extern void cfbInstallColormap(
518 extern void cfbUninstallColormap(
522 extern void cfbResolveColor(
523 unsigned short * /*pred*/,
524 unsigned short * /*pgreen*/,
525 unsigned short * /*pblue*/,
526 VisualPtr
/*pVisual*/
529 extern Bool
cfbInitializeColormap(
533 extern int cfbExpandDirectColors(
534 ColormapPtr
/*pmap*/,
536 xColorItem
* /*indefs*/,
537 xColorItem
* /*outdefs*/
540 extern Bool
cfbCreateDefColormap(
541 ScreenPtr
/*pScreen*/
544 extern Bool
cfbSetVisualTypes(
550 extern void cfbClearVisualTypes(void);
552 extern Bool
cfbInitVisuals(
553 VisualPtr
* /*visualp*/,
554 DepthPtr
* /*depthp*/,
557 int * /*rootDepthp*/,
558 VisualID
* /*defaultVisp*/,
559 unsigned long /*sizes*/,
565 extern void cfbPolyFillArcSolidCopy(
566 DrawablePtr
/*pDraw*/,
573 extern void cfbPolyFillArcSolidGeneral(
574 DrawablePtr
/*pDraw*/,
581 extern void cfbFillBoxTileOdd(
582 DrawablePtr
/*pDrawable*/,
590 extern void cfbFillRectTileOdd(
591 DrawablePtr
/*pDrawable*/,
597 extern void cfbPolyFillRect(
598 DrawablePtr
/*pDrawable*/,
601 xRectangle
* /*prectInit*/
605 extern void cfbUnnaturalTileFS(
606 DrawablePtr
/*pDrawable*/,
609 DDXPointPtr
/*pptInit*/,
610 int * /*pwidthInit*/,
614 extern void cfbUnnaturalStippleFS(
615 DrawablePtr
/*pDrawable*/,
618 DDXPointPtr
/*pptInit*/,
619 int * /*pwidthInit*/,
623 #ifndef CFB_PROTOTYPES_ONLY
624 extern void cfb8Stipple32FS(
625 DrawablePtr
/*pDrawable*/,
628 DDXPointPtr
/*pptInit*/,
629 int * /*pwidthInit*/,
633 extern void cfb8OpaqueStipple32FS(
634 DrawablePtr
/*pDrawable*/,
637 DDXPointPtr
/*pptInit*/,
638 int * /*pwidthInit*/,
644 extern GCOpsPtr
cfbMatchCommon(
646 cfbPrivGCPtr
/*devPriv*/
649 extern Bool
cfbCreateGC(
653 extern void cfbValidateGC(
655 unsigned long /*changes*/,
656 DrawablePtr
/*pDrawable*/
661 extern void cfbGetSpans(
662 DrawablePtr
/*pDrawable*/,
671 extern void cfbPolyGlyphBlt8(
672 DrawablePtr
/*pDrawable*/,
676 unsigned int /*nglyph*/,
677 CharInfoPtr
* /*ppci*/,
678 pointer
/*pglyphBase*/
682 extern void cfbPolyGlyphRop8(
683 DrawablePtr
/*pDrawable*/,
687 unsigned int /*nglyph*/,
688 CharInfoPtr
* /*ppci*/,
689 pointer
/*pglyphBase*/
693 extern void cfbHorzS(
704 extern void cfbVertS(
716 extern void cfbImageGlyphBlt8(
717 DrawablePtr
/*pDrawable*/,
721 unsigned int /*nglyph*/,
722 CharInfoPtr
* /*ppci*/,
723 pointer
/*pglyphBase*/
727 extern void cfbPutImage(
728 DrawablePtr
/*pDraw*/,
740 extern void cfbGetImage(
741 DrawablePtr
/*pDrawable*/,
746 unsigned int /*format*/,
747 unsigned long /*planeMask*/,
752 extern void cfbLineSS(
753 DrawablePtr
/*pDrawable*/,
757 DDXPointPtr
/*pptInit*/
760 extern void cfbLineSD(
761 DrawablePtr
/*pDrawable*/,
765 DDXPointPtr
/*pptInit*/
770 extern PixmapPtr
cfbCreatePixmap(
771 ScreenPtr
/*pScreen*/,
777 extern Bool
cfbDestroyPixmap(
778 PixmapPtr
/*pPixmap*/
781 extern PixmapPtr
cfbCopyPixmap(
785 extern void cfbPadPixmap(
786 PixmapPtr
/*pPixmap*/
789 extern void cfbXRotatePixmap(
794 extern void cfbYRotatePixmap(
799 extern void cfbCopyRotatePixmap(
800 PixmapPtr
/*psrcPix*/,
801 PixmapPtr
* /*ppdstPix*/,
807 extern void cfbFillPoly1RectCopy(
808 DrawablePtr
/*pDrawable*/,
813 DDXPointPtr
/*ptsIn*/
817 extern void cfbFillPoly1RectGeneral(
818 DrawablePtr
/*pDrawable*/,
823 DDXPointPtr
/*ptsIn*/
827 extern void cfbPaintWindow(
829 RegionPtr
/*pRegion*/,
833 extern void cfbFillBoxSolid(
834 DrawablePtr
/*pDrawable*/,
837 unsigned long /*pixel*/
840 extern void cfbFillBoxTile32(
841 DrawablePtr
/*pDrawable*/,
848 extern void cfbPolyPoint(
849 DrawablePtr
/*pDrawable*/,
857 #ifndef CFB_PROTOTYPES_ONLY
858 extern void cfbPushPixels8(
860 PixmapPtr
/*pBitmap*/,
861 DrawablePtr
/*pDrawable*/,
869 extern void cfb8FillRectOpaqueStippled32(
870 DrawablePtr
/*pDrawable*/,
876 extern void cfb8FillRectTransparentStippled32(
877 DrawablePtr
/*pDrawable*/,
883 extern void cfb8FillRectStippledUnnatural(
884 DrawablePtr
/*pDrawable*/,
892 extern int cfbReduceRasterOp(
901 extern Bool
cfbCloseScreen(
903 ScreenPtr
/*pScreen*/
906 extern Bool
cfbSetupScreen(
907 ScreenPtr
/*pScreen*/,
916 extern Bool
cfbFinishScreenInit(
917 ScreenPtr
/*pScreen*/,
926 extern Bool
cfbScreenInit(
927 ScreenPtr
/*pScreen*/,
936 extern PixmapPtr
cfbGetScreenPixmap(
937 ScreenPtr
/*pScreen*/
940 extern void cfbSetScreenPixmap(
946 extern void cfbSegmentSS(
947 DrawablePtr
/*pDrawable*/,
953 extern void cfbSegmentSD(
954 DrawablePtr
/*pDrawable*/,
961 extern void cfbSetScanline(
966 unsigned int * /*psrc*/,
970 unsigned long /*planemask*/
973 extern void cfbSetSpans(
974 DrawablePtr
/*pDrawable*/,
984 extern void cfbFillRectSolidCopy(
985 DrawablePtr
/*pDrawable*/,
991 extern void cfbSolidSpansCopy(
992 DrawablePtr
/*pDrawable*/,
995 DDXPointPtr
/*pptInit*/,
996 int * /*pwidthInit*/,
1001 extern void cfbFillRectSolidGeneral(
1002 DrawablePtr
/*pDrawable*/,
1008 extern void cfbSolidSpansGeneral(
1009 DrawablePtr
/*pDrawable*/,
1012 DDXPointPtr
/*pptInit*/,
1013 int * /*pwidthInit*/,
1018 extern void cfbFillRectSolidXor(
1019 DrawablePtr
/*pDrawable*/,
1025 extern void cfbSolidSpansXor(
1026 DrawablePtr
/*pDrawable*/,
1029 DDXPointPtr
/*pptInit*/,
1030 int * /*pwidthInit*/,
1035 #ifndef CFB_PROTOTYPES_ONLY
1036 extern void cfbTEGlyphBlt8(
1037 DrawablePtr
/*pDrawable*/,
1041 unsigned int /*nglyph*/,
1042 CharInfoPtr
* /*ppci*/,
1043 pointer
/*pglyphBase*/
1048 extern void cfbTEGlyphBlt(
1049 DrawablePtr
/*pDrawable*/,
1053 unsigned int /*nglyph*/,
1054 CharInfoPtr
* /*ppci*/,
1055 pointer
/*pglyphBase*/
1059 extern void cfbFillRectTile32Copy(
1060 DrawablePtr
/*pDrawable*/,
1066 extern void cfbTile32FSCopy(
1067 DrawablePtr
/*pDrawable*/,
1070 DDXPointPtr
/*pptInit*/,
1071 int * /*pwidthInit*/,
1076 extern void cfbFillRectTile32General(
1077 DrawablePtr
/*pDrawable*/,
1083 extern void cfbTile32FSGeneral(
1084 DrawablePtr
/*pDrawable*/,
1087 DDXPointPtr
/*pptInit*/,
1088 int * /*pwidthInit*/,
1093 extern void cfbFillBoxTileOddCopy(
1094 DrawablePtr
/*pDrawable*/,
1101 unsigned long /*planemask*/
1104 extern void cfbFillSpanTileOddCopy(
1105 DrawablePtr
/*pDrawable*/,
1107 DDXPointPtr
/*ppt*/,
1113 unsigned long /*planemask*/
1116 extern void cfbFillBoxTile32sCopy(
1117 DrawablePtr
/*pDrawable*/,
1124 unsigned long /*planemask*/
1127 extern void cfbFillSpanTile32sCopy(
1128 DrawablePtr
/*pDrawable*/,
1130 DDXPointPtr
/*ppt*/,
1136 unsigned long /*planemask*/
1140 extern void cfbFillBoxTileOddGeneral(
1141 DrawablePtr
/*pDrawable*/,
1148 unsigned long /*planemask*/
1151 extern void cfbFillSpanTileOddGeneral(
1152 DrawablePtr
/*pDrawable*/,
1154 DDXPointPtr
/*ppt*/,
1160 unsigned long /*planemask*/
1163 extern void cfbFillBoxTile32sGeneral(
1164 DrawablePtr
/*pDrawable*/,
1171 unsigned long /*planemask*/
1174 extern void cfbFillSpanTile32sGeneral(
1175 DrawablePtr
/*pDrawable*/,
1177 DDXPointPtr
/*ppt*/,
1183 unsigned long /*planemask*/
1187 extern Bool
cfbCreateWindow(
1191 extern Bool
cfbDestroyWindow(
1195 extern Bool
cfbMapWindow(
1196 WindowPtr
/*pWindow*/
1199 extern Bool
cfbPositionWindow(
1205 extern Bool
cfbUnmapWindow(
1206 WindowPtr
/*pWindow*/
1209 extern void cfbCopyWindow(
1211 DDXPointRec
/*ptOldOrg*/,
1212 RegionPtr
/*prgnSrc*/
1215 extern Bool
cfbChangeWindowAttributes(
1217 unsigned long /*mask*/
1221 extern void cfbZeroPolyArcSS8Copy(
1222 DrawablePtr
/*pDraw*/,
1229 extern void cfbZeroPolyArcSS8General(
1230 DrawablePtr
/*pDraw*/,
1237 extern void cfbZeroPolyArcSS8Xor(
1238 DrawablePtr
/*pDraw*/,
1244 #if (!defined(SINGLEDEPTH) && PSZ != 8) || defined(FORCE_SEPARATE_PRIVATE)
1246 #define CFB_NEED_SCREEN_PRIVATE
1248 extern int cfbScreenPrivateIndex
;
1251 #ifndef CFB_PROTOTYPES_ONLY
1253 /* Common macros for extracting drawing information */
1255 #define cfbGetWindowPixmap(d) \
1256 ((* ((DrawablePtr)(d))->pScreen->GetWindowPixmap)((WindowPtr)(d)))
1258 #define cfbGetTypedWidth(pDrawable,wtype) (\
1259 (((pDrawable)->type != DRAWABLE_PIXMAP) ? \
1260 (int) (cfbGetWindowPixmap(pDrawable)->devKind) : \
1261 (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
1263 #define cfbGetByteWidth(pDrawable) cfbGetTypedWidth(pDrawable, unsigned char)
1265 #define cfbGetPixelWidth(pDrawable) cfbGetTypedWidth(pDrawable, PixelType)
1267 #define cfbGetLongWidth(pDrawable) cfbGetTypedWidth(pDrawable, CfbBits)
1269 #define cfbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
1271 if ((pDrawable)->type != DRAWABLE_PIXMAP) \
1272 _pPix = cfbGetWindowPixmap(pDrawable); \
1274 _pPix = (PixmapPtr) (pDrawable); \
1275 (pointer) = (ptype *) _pPix->devPrivate.ptr; \
1276 (width) = ((int) _pPix->devKind) / sizeof (wtype); \
1279 #define cfbGetByteWidthAndPointer(pDrawable, width, pointer) \
1280 cfbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
1282 #define cfbGetLongWidthAndPointer(pDrawable, width, pointer) \
1283 cfbGetTypedWidthAndPointer(pDrawable, width, pointer, CfbBits, CfbBits)
1285 #define cfbGetPixelWidthAndPointer(pDrawable, width, pointer) \
1286 cfbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
1288 #define cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
1289 PixmapPtr _pPix = cfbGetWindowPixmap((DrawablePtr) (pWin)); \
1290 (pointer) = (ptype *) _pPix->devPrivate.ptr; \
1291 (width) = ((int) _pPix->devKind) / sizeof (wtype); \
1294 #define cfbGetWindowLongWidthAndPointer(pWin, width, pointer) \
1295 cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, CfbBits, CfbBits)
1297 #define cfbGetWindowByteWidthAndPointer(pWin, width, pointer) \
1298 cfbGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned char, unsigned char)
1300 #define cfbGetWindowPixelWidthAndPointer(pDrawable, width, pointer) \
1301 cfbGetWindowTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
1304 * XFree86 empties the root BorderClip when the VT is inactive,
1305 * here's a macro which uses that to disable GetImage and GetSpans
1307 #define cfbWindowEnabled(pWin) \
1308 REGION_NOTEMPTY((pWin)->drawable.pScreen, \
1309 &WindowTable[(pWin)->drawable.pScreen->myNum]->borderClip)
1311 #define cfbDrawableEnabled(pDrawable) \
1312 ((pDrawable)->type == DRAWABLE_PIXMAP ? \
1313 TRUE : cfbWindowEnabled((WindowPtr) pDrawable))
1315 #include "micoord.h"
1317 #endif /* !CFB_PROTOTYPES_ONLY */