fbbits.c revision 05b261ec
1/* 2 * Copyright © 1998 Keith Packard 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of Keith Packard not be used in 9 * advertising or publicity pertaining to distribution of the software without 10 * specific, written prior permission. Keith Packard makes no 11 * representations about the suitability of this software for any purpose. It 12 * is provided "as is" without express or implied warranty. 13 * 14 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * PERFORMANCE OF THIS SOFTWARE. 21 */ 22 23#ifdef HAVE_DIX_CONFIG_H 24#include <dix-config.h> 25#endif 26 27#include "fb.h" 28#include "miline.h" 29#include "mizerarc.h" 30 31#undef BRESSOLID 32#undef BRESDASH 33#undef DOTS 34#undef ARC 35#undef GLYPH 36#undef BITS 37#undef BITS2 38#undef BITS4 39 40#define BRESSOLID fbBresSolid8 41#define BRESDASH fbBresDash8 42#define DOTS fbDots8 43#define ARC fbArc8 44#define GLYPH fbGlyph8 45#define POLYLINE fbPolyline8 46#define POLYSEGMENT fbPolySegment8 47#define BITS BYTE 48#define BITS2 CARD16 49#define BITS4 CARD32 50 51#include "fbbits.h" 52 53#undef BRESSOLID 54#undef BRESDASH 55#undef DOTS 56#undef ARC 57#undef GLYPH 58#undef POLYLINE 59#undef POLYSEGMENT 60#undef BITS 61#undef BITS2 62#undef BITS4 63 64#define BRESSOLID fbBresSolid16 65#define BRESDASH fbBresDash16 66#define DOTS fbDots16 67#define ARC fbArc16 68#define GLYPH fbGlyph16 69#define POLYLINE fbPolyline16 70#define POLYSEGMENT fbPolySegment16 71#define BITS CARD16 72#define BITS2 CARD32 73#if FB_SHIFT == 6 74#define BITS4 FbBits 75#endif 76 77#include "fbbits.h" 78 79#undef BRESSOLID 80#undef BRESDASH 81#undef DOTS 82#undef ARC 83#undef GLYPH 84#undef POLYLINE 85#undef POLYSEGMENT 86#undef BITS 87#undef BITS2 88#if FB_SHIFT == 6 89#undef BITS4 90#endif 91 92#ifdef FB_24BIT 93#define BRESSOLID fbBresSolid24 94#define BRESDASH fbBresDash24 95#define DOTS fbDots24 96#define ARC fbArc24 97#define POLYLINE fbPolyline24 98#define POLYSEGMENT fbPolySegment24 99 100#define BITS CARD32 101#define BITSUNIT BYTE 102#define BITSMUL 3 103 104#define FbDoTypeStore(b,t,x,s) WRITE(((t *) (b)), (x) >> (s)) 105#define FbDoTypeRRop(b,t,a,x,s) WRITE((t *) (b), FbDoRRop(READ((t *) (b)),\ 106 (a) >> (s), \ 107 (x) >> (s))) 108#define FbDoTypeMaskRRop(b,t,a,x,m,s) WRITE((t *) (b), FbDoMaskRRop(READ((t *) (b)),\ 109 (a) >> (s), \ 110 (x) >> (s), \ 111 (m) >> (s))) 112#if BITMAP_BIT_ORDER == LSBFirst 113#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \ 114 (FbDoTypeStore (b, CARD8, x, 0), \ 115 FbDoTypeStore ((b) + 1, CARD16, x, 8)) : \ 116 (FbDoTypeStore (b, CARD16, x, 0), \ 117 FbDoTypeStore ((b) + 2, CARD8, x, 16))) 118#define BITSRROP(b,a,x) ((unsigned long) (b) & 1 ? \ 119 (FbDoTypeRRop(b,CARD8,a,x,0), \ 120 FbDoTypeRRop((b)+1,CARD16,a,x,8)) : \ 121 (FbDoTypeRRop(b,CARD16,a,x,0), \ 122 FbDoTypeRRop((b)+2,CARD8,a,x,16))) 123#else 124#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \ 125 (FbDoTypeStore (b, CARD8, x, 16), \ 126 FbDoTypeStore ((b) + 1, CARD16, x, 0)) : \ 127 (FbDoTypeStore (b, CARD16, x, 8), \ 128 FbDoTypeStore ((b) + 2, CARD8, x, 0))) 129#define BITSRROP(b,a,x) ((unsigned long) (b) & 1 ? \ 130 (FbDoTypeRRop (b, CARD8, a, x, 16), \ 131 FbDoTypeRRop ((b) + 1, CARD16, a, x, 0)) : \ 132 (FbDoTypeRRop (b, CARD16, a, x, 8), \ 133 FbDoTypeRRop ((b) + 2, CARD8, a, x, 0))) 134#endif 135 136#include "fbbits.h" 137 138#undef BITSSTORE 139#undef BITSRROP 140#undef BITSMUL 141#undef BITSUNIT 142#undef BITS 143 144#undef BRESSOLID 145#undef BRESDASH 146#undef DOTS 147#undef ARC 148#undef POLYLINE 149#undef POLYSEGMENT 150#endif /* FB_24BIT */ 151 152#define BRESSOLID fbBresSolid32 153#define BRESDASH fbBresDash32 154#define DOTS fbDots32 155#define ARC fbArc32 156#define GLYPH fbGlyph32 157#define POLYLINE fbPolyline32 158#define POLYSEGMENT fbPolySegment32 159#define BITS CARD32 160#if FB_SHIFT == 6 161#define BITS2 FbBits 162#endif 163 164#include "fbbits.h" 165 166#undef BRESSOLID 167#undef BRESDASH 168#undef DOTS 169#undef ARC 170#undef GLYPH 171#undef POLYLINE 172#undef POLYSEGMENT 173#undef BITS 174#if FB_SHIFT == 6 175#undef BITS2 176#endif 177