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