summaryrefslogtreecommitdiff
path: root/cfb/cfb8bit.h
diff options
context:
space:
mode:
Diffstat (limited to 'cfb/cfb8bit.h')
-rw-r--r--cfb/cfb8bit.h1570
1 files changed, 0 insertions, 1570 deletions
diff --git a/cfb/cfb8bit.h b/cfb/cfb8bit.h
deleted file mode 100644
index 5a17adf4f..000000000
--- a/cfb/cfb8bit.h
+++ /dev/null
@@ -1,1570 +0,0 @@
-/*
- * cfb8bit.h
- *
- * Defines which are only useful to 8 bit color frame buffers
- *
- * That doesn't seem to be true any more. Some of the macros in here
- * are used for depths other than 8. Perhaps the file should be
- * renamed. dpw
- */
-
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-*/
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "servermd.h"
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define GetBitGroup(x) (((PixelGroup) (x)) >> (PGSZ - PGSZB))
-#define NextBitGroup(x) ((x) <<= PGSZB)
-#define NextSomeBits(x,n) ((x) <<= (n))
-#else
-#define GetBitGroup(x) ((x) & PGSZBMSK)
-#define NextBitGroup(x) ((x) >>= PGSZB)
-#define NextSomeBits(x,n) ((x) >>= (n))
-#endif
-
-#define RotBitsLeft(x,k) ((x) = BitLeft (x,k) | \
- BitRight (x, PGSZ-(k)))
-
-#if defined(__GNUC__) && defined(mc68020)
-#undef RotBitsLeft
-#define RotBitsLeft(x,k) asm("rol%.l %2,%0" \
- : "=d" (x) \
- : "0" (x), "dI" (k))
-#endif
-
-#if PSZ == 8
-
-#define GetPixelGroup(x) (cfb8StippleXor[GetBitGroup(x)])
-#define RRopPixels(dst,x) (DoRRop(dst,cfb8StippleAnd[x], cfb8StippleXor[x]))
-#define RRopPixelGroup(dst,x) (RRopPixels(dst,GetBitGroup(x)))
-#define MaskRRopPixels(dst,x,mask) (DoMaskRRop(dst,cfb8StippleAnd[x], cfb8StippleXor[x], mask))
-
-#define NUM_MASKS (1<<PPW) /* XXX goes in cfbmskbits.h? */
-extern int cfb8StippleMode, cfb8StippleAlu;
-extern PixelGroup cfb8StippleFg, cfb8StippleBg, cfb8StipplePm;
-extern PixelGroup cfb8StippleMasks[NUM_MASKS];
-extern PixelGroup cfb8StippleAnd[NUM_MASKS], cfb8StippleXor[NUM_MASKS];
-extern int cfb8StippleRRop;
-
-#define cfb8PixelMasks cfb8StippleMasks
-#define cfb8Pixels cfb8StippleXor
-
-#define cfb8CheckPixels(fg, bg) \
- (FillOpaqueStippled == cfb8StippleMode && \
- GXcopy == cfb8StippleAlu && \
- ((fg) & PMSK) == cfb8StippleFg && \
- ((bg) & PMSK) == cfb8StippleBg && \
- PMSK == cfb8StipplePm)
-
-#define cfb8CheckOpaqueStipple(alu,fg,bg,pm) \
- ((FillOpaqueStippled == cfb8StippleMode && \
- (alu) == cfb8StippleAlu && \
- ((fg) & PMSK) == cfb8StippleFg && \
- ((bg) & PMSK) == cfb8StippleBg && \
- ((pm) & PMSK) == cfb8StipplePm) ? 0 : cfb8SetOpaqueStipple(alu,fg,bg,pm))
-
-#define cfb8CheckStipple(alu,fg,pm) \
- ((FillStippled == cfb8StippleMode && \
- (alu) == cfb8StippleAlu && \
- ((fg) & PMSK) == cfb8StippleFg && \
- ((pm) & PMSK) == cfb8StipplePm) ? 0 : cfb8SetStipple(alu,fg,pm))
-
-#define cfb8SetPixels(fg,bg) cfb8SetOpaqueStipple(GXcopy,fg,bg,PMSK)
-
-/*
- * These macros are shared between the unnatural spans code
- * and the unnatural rectangle code. No reasonable person
- * would attempt to use them anyplace else.
- */
-
-#define NextUnnaturalStippleWord \
- if (bitsLeft >= MFB_PPW) \
- { \
- inputBits = *srcTemp++; \
- bitsLeft -= MFB_PPW; \
- partBitsLeft = MFB_PPW; \
- } \
- else \
- { \
- inputBits = 0; \
- if (bitsLeft) \
- inputBits = *srcTemp & ~cfb8BitLenMasks[bitsLeft]; \
- srcTemp = srcStart; \
- partBitsLeft = bitsLeft; \
- bitsLeft = bitsWhole; \
- }
-
-#define NextUnnaturalStippleBits \
- if (partBitsLeft >= PPW) { \
- bits = GetBitGroup (inputBits); \
- NextBitGroup (inputBits); \
- partBitsLeft -= PPW; \
- } else { \
- bits = GetBitGroup (inputBits); \
- nextPartBits = PPW - partBitsLeft; \
- NextUnnaturalStippleWord \
- if (partBitsLeft < nextPartBits) { \
- if (partBitsLeft) {\
- bits |= BitRight (GetBitGroup (inputBits), \
- PPW - nextPartBits) & PPWMSK;\
- nextPartBits -= partBitsLeft; \
- } \
- NextUnnaturalStippleWord \
- } \
- bits |= BitRight (GetBitGroup (inputBits), \
- PPW - nextPartBits) & PPWMSK; \
- NextSomeBits (inputBits, nextPartBits); \
- partBitsLeft -= nextPartBits; \
- }
-
-#define NextUnnaturalStippleBitsFast \
- if (partBitsLeft >= PPW) { \
- bits = GetBitGroup(inputBits); \
- NextBitGroup(inputBits); \
- partBitsLeft -= PPW; \
- } else { \
- bits = GetBitGroup (inputBits); \
- nextPartBits = PPW - partBitsLeft; \
- inputBits = *srcTemp++; \
- bits |= BitRight (GetBitGroup (inputBits), \
- partBitsLeft) & PPWMSK; \
- NextSomeBits (inputBits, nextPartBits); \
- partBitsLeft = MFB_PPW - nextPartBits; \
- }
-
-/*
- * WriteBitGroup takes the destination address, a pixel
- * value (which must be 8 bits duplicated 4 time with PFILL)
- * and the PPW bits to write, which must be in the low order
- * bits of the register (probably from GetBitGroup) and writes
- * the appropriate locations in memory with the pixel value. This
- * is a copy-mode only operation.
- */
-
-#define RRopBitGroup(dst,bits) \
- { \
- *(dst) = RRopPixels(*(dst),bits); \
- }
-
-#define MaskRRopBitGroup(dst,bits,mask) \
- { \
- *(dst) = MaskRRopPixels(*(dst),bits,mask); \
- }
-#endif /* PSZ == 8 */
-
-#if !defined(AVOID_MEMORY_READ) && PSZ == 8
-
-#define WriteBitGroup(dst,pixel,bits) \
- { \
- register PixelGroup _maskTmp = cfb8PixelMasks[(bits)]; \
- *(dst) = (*(dst) & ~_maskTmp) | ((pixel) & _maskTmp); \
- }
-
-#define SwitchBitGroup(dst,pixel,bits) \
- { \
- register PixelGroup _maskTmp = cfb8PixelMasks[(bits)]; \
- register PixelGroup _pixTmp = ((pixel) & _maskTmp); \
- _maskTmp = ~_maskTmp; \
- SwitchBitsLoop (*(dst) = (*(dst) & _maskTmp) | _pixTmp;) \
- }
-
-#else /* AVOID_MEMORY_READ */
-
-#if PGSZ == 32
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define SinglePixel0 3
-#define SinglePixel1 2
-#define SinglePixel2 1
-#define SinglePixel3 0
-#define SinglePixel4 7
-#define SinglePixel5 6
-#define SinglePixel6 5
-#define SinglePixel7 4
-#define SinglePixel8 0xB
-#define SinglePixel9 0xA
-#define DoublePixel0 1
-#define DoublePixel1 0
-#define DoublePixel2 3
-#define DoublePixel3 2
-#define DoublePixel4 5
-#define DoublePixel5 4
-#else
-#define SinglePixel0 0
-#define SinglePixel1 1
-#define SinglePixel2 2
-#define SinglePixel3 3
-#define SinglePixel4 4
-#define SinglePixel5 5
-#define SinglePixel6 6
-#define SinglePixel7 7
-#define SinglePixel8 8
-#define SinglePixel9 9
-#define DoublePixel0 0
-#define DoublePixel1 1
-#define DoublePixel2 2
-#define DoublePixel3 3
-#define DoublePixel4 4
-#define DoublePixel5 5
-#endif
-#define QuadPixel0 0
-#define QuadPixel1 1
-#define QuadPixel2 2
-#else /* PGSZ == 64 */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define SinglePixel0 7
-#define SinglePixel1 6
-#define SinglePixel2 5
-#define SinglePixel3 4
-#define SinglePixel4 3
-#define SinglePixel5 2
-#define SinglePixel6 1
-#define SinglePixel7 0
-#define DoublePixel0 3
-#define DoublePixel1 2
-#define DoublePixel2 1
-#define DoublePixel3 0
-#define QuadPixel0 1
-#define QuadPixel1 0
-#else
-#define SinglePixel0 0
-#define SinglePixel1 1
-#define SinglePixel2 2
-#define SinglePixel3 3
-#define SinglePixel4 4
-#define SinglePixel5 5
-#define SinglePixel6 6
-#define SinglePixel7 7
-#define DoublePixel0 0
-#define DoublePixel1 1
-#define DoublePixel2 2
-#define DoublePixel3 3
-#define QuadPixel0 0
-#define QuadPixel1 1
-#endif
-#define OctaPixel0 0
-#endif /* PGSZ == 64 */
-
-#if PSZ == 8
-
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[0] = (pixel); \
- break; \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) \
- ((PixelGroup *) (dst))[OctaPixel0] = (pixel); \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- break; \
- case 4: \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ == 64 */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[0] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- if ( bits == 0xff ) \
- SwitchBitsLoop (((PixelGroup *) (dst))[OctaPixel0] = (pixel);) \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel);)\
- break; \
- case 4: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel1] = (pixel);)\
- break; \
- case 13: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);)\
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel1] = (pixel);)\
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel);) \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel2] = (pixel);)\
- break; \
- case 4: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel6] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel7] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel3] = (pixel);)\
- break; \
- case 13: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel);)\
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel);)\
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel1] = (pixel);) \
- break; \
- } \
- } \
-}
-#endif /* PGSZ == 64 */
-#endif /* PSZ == 8 */
-
-#if PSZ == 16
-
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) { \
- ((PixelGroup *) (dst))[QuadPixel0] = (pixel); \
- ((PixelGroup *) (dst))[QuadPixel1] = (pixel); \
- } \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 13: \
- ((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 14: \
- ((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD16 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD16 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel3] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD16 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD32 *) (dst))[DoublePixel1] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- cfb cannot hack 64-bit SwitchBitGroup psz=PSZ
-#endif /* PGSZ */
-
-#endif /* PSZ == 16 */
-
-#if PSZ == 24
-/* 32 000011112222*/
-/* 24 000111222333*/
-/* 16 001122334455*/
-/* 8 0123456789AB*/
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- { \
- register CARD32 reg_pixel = (pixel); \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel2] = ((reg_pixel>>16)&0xFF); \
- break; \
- case 2: \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel&0xFF; \
- ((CARD16 *) (dst))[DoublePixel2] = (reg_pixel>>8)&0xFFFF; \
- break; \
- case 3: \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel & 0xFF; \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel2] = (reg_pixel>>8)&0xFFFF; \
- ((CARD8 *) (dst))[SinglePixel2] = (reg_pixel>>16&0xFF); \
- break; \
- case 4: \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel8] = (reg_pixel>>16)&0xFF; \
- break; \
- case 5: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- reg_pixel >>= 16; \
- ((CARD8 *) (dst))[SinglePixel2] = \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel&0xFF; \
- break; \
- case 6: \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel&0xFF; \
- break; \
- case 7: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel3] = reg_pixel&0xFF; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel&0xFF; \
- break; \
- case 8: \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel&0xFF; \
- ((CARD16 *) (dst))[DoublePixel5] = (reg_pixel>>8); \
- break; \
- case 9: \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel&0xFF; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = reg_pixel&0xFF; \
- break; \
- case 10: \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel&0xFF; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- break; \
- case 11: \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel0] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = reg_pixel; \
- break; \
- case 12: \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel; \
- break; \
- case 13: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel2] = \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel; \
- break; \
- case 14: \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = reg_pixel; \
- break; \
- case 15: \
- ((CARD16 *) (dst))[DoublePixel0] = \
- ((CARD16 *) (dst))[DoublePixel3] = reg_pixel; \
- ((CARD8 *) (dst))[SinglePixel3] = \
- ((CARD8 *) (dst))[SinglePixel9] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD16 *) (dst))[DoublePixel2] = \
- ((CARD16 *) (dst))[DoublePixel5] = reg_pixel; \
- reg_pixel >>= 8; \
- ((CARD8 *) (dst))[SinglePixel8] = \
- ((CARD8 *) (dst))[SinglePixel2] = reg_pixel; \
- break; \
- } \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) { \
- ((PixelGroup *) (dst))[DoublePixel0] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel1] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel2] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel3] = (pixel); \
- } \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel8] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel2] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel);) \
- ((CARD8 *) (dst))[SinglePixel9] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel5] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD16 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD8 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD16 *) (dst))[DoublePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD8 *) (dst))[SinglePixel3] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[QuadPixel0] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel1] = (pixel); \
- ((CARD32 *) (dst))[QuadPixel2] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- cfb cannot hack 64-bit SwitchBitGroup psz=PSZ
-#endif /* PGSZ */
-
-#endif /* PSZ == 24 */
-
-#if PSZ == 32
-
-#if PGSZ == 32
-#define WriteBitGroup(dst,pixel,bits) \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- }
-#else /* PGSZ == 64 */
-#define WriteBitGroup(dst,pixel,bits) \
- if ( bits == 0xff ) { \
- ((PixelGroup *) (dst))[DoublePixel0] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel1] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel2] = (pixel); \
- ((PixelGroup *) (dst))[DoublePixel3] = (pixel); \
- } \
- else { \
- switch (bits & 0x0f) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel); \
- break; \
- } \
- switch ((bits & 0xf0) >> 4) { \
- case 0: \
- break; \
- case 1: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- break; \
- case 2: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 3: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- break; \
- case 4: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 5: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 6: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 7: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- break; \
- case 8: \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 9: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 10: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 11: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 12: \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 13: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 14: \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- case 15: \
- ((CARD32 *) (dst))[SinglePixel4] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel5] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel6] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel7] = (pixel); \
- break; \
- } \
- }
-#endif /* PGSZ */
-
-#if PGSZ == 32
-#define SwitchBitGroup(dst,pixel,bits) { \
- switch (bits) { \
- case 0: \
- break; \
- case 1: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel);) \
- break; \
- case 2: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 3: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel);) \
- break; \
- case 4: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 5: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 6: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 7: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel);) \
- break; \
- case 8: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 9: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 10: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 11: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 12: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 13: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 14: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- case 15: \
- SwitchBitsLoop (((CARD32 *) (dst))[SinglePixel0] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel1] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel2] = (pixel); \
- ((CARD32 *) (dst))[SinglePixel3] = (pixel);) \
- break; \
- } \
-}
-#else /* PGSZ == 64 */
-#define SwitchBitGroup(dst,pixel,bits) { \
- cfb cannot hack 64-bit SwitchBitGroup psz=PSZ
-#endif /* PGSZ */
-
-#endif /* PSZ == 32 */
-#endif /* AVOID_MEMORY_READ */
-
-extern PixelGroup cfb8BitLenMasks[PGSZ];
-
-extern int cfb8SetStipple (
- int /*alu*/,
- CfbBits /*fg*/,
- CfbBits /*planemask*/
-);
-
-extern int cfb8SetOpaqueStipple (
- int /*alu*/,
- CfbBits /*fg*/,
- CfbBits /*bg*/,
- CfbBits /*planemask*/
-);
-
-extern int cfb8ComputeClipMasks32 (
- BoxPtr /*pBox*/,
- int /*numRects*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- CARD32 * /*clips*/
-);