First import
[xorg_rtime.git] / xorg-server-1.4 / fb / fbbits.c
blob808374309397bc4638b495a1b4a4021b2e1248f3
1 /*
2 * Copyright © 1998 Keith Packard
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.
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.
23 #ifdef HAVE_DIX_CONFIG_H
24 #include <dix-config.h>
25 #endif
27 #include "fb.h"
28 #include "miline.h"
29 #include "mizerarc.h"
31 #undef BRESSOLID
32 #undef BRESDASH
33 #undef DOTS
34 #undef ARC
35 #undef GLYPH
36 #undef BITS
37 #undef BITS2
38 #undef BITS4
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
51 #include "fbbits.h"
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
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
77 #include "fbbits.h"
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
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
100 #define BITS CARD32
101 #define BITSUNIT BYTE
102 #define BITSMUL 3
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
136 #include "fbbits.h"
138 #undef BITSSTORE
139 #undef BITSRROP
140 #undef BITSMUL
141 #undef BITSUNIT
142 #undef BITS
144 #undef BRESSOLID
145 #undef BRESDASH
146 #undef DOTS
147 #undef ARC
148 #undef POLYLINE
149 #undef POLYSEGMENT
150 #endif /* FB_24BIT */
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
164 #include "fbbits.h"
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