fbbits.c revision 35c4bbdf
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 74#include "fbbits.h" 75 76#undef BRESSOLID 77#undef BRESDASH 78#undef DOTS 79#undef ARC 80#undef GLYPH 81#undef POLYLINE 82#undef POLYSEGMENT 83#undef BITS 84#undef BITS2 85 86#define BRESSOLID fbBresSolid24 87#define BRESDASH fbBresDash24 88#define DOTS fbDots24 89#define ARC fbArc24 90#define POLYLINE fbPolyline24 91#define POLYSEGMENT fbPolySegment24 92 93#define BITS CARD32 94#define BITSUNIT BYTE 95#define BITSMUL 3 96 97#define FbDoTypeStore(b,t,x,s) WRITE(((t *) (b)), (x) >> (s)) 98#define FbDoTypeRRop(b,t,a,x,s) WRITE((t *) (b), FbDoRRop(READ((t *) (b)),\ 99 (a) >> (s), \ 100 (x) >> (s))) 101#define FbDoTypeMaskRRop(b,t,a,x,m,s) WRITE((t *) (b), FbDoMaskRRop(READ((t *) (b)),\ 102 (a) >> (s), \ 103 (x) >> (s), \ 104 (m) >> (s))) 105#if BITMAP_BIT_ORDER == LSBFirst 106#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \ 107 (FbDoTypeStore (b, CARD8, x, 0), \ 108 FbDoTypeStore ((b) + 1, CARD16, x, 8)) : \ 109 (FbDoTypeStore (b, CARD16, x, 0), \ 110 FbDoTypeStore ((b) + 2, CARD8, x, 16))) 111#define BITSRROP(b,a,x) ((unsigned long) (b) & 1 ? \ 112 (FbDoTypeRRop(b,CARD8,a,x,0), \ 113 FbDoTypeRRop((b)+1,CARD16,a,x,8)) : \ 114 (FbDoTypeRRop(b,CARD16,a,x,0), \ 115 FbDoTypeRRop((b)+2,CARD8,a,x,16))) 116#else 117#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \ 118 (FbDoTypeStore (b, CARD8, x, 16), \ 119 FbDoTypeStore ((b) + 1, CARD16, x, 0)) : \ 120 (FbDoTypeStore (b, CARD16, x, 8), \ 121 FbDoTypeStore ((b) + 2, CARD8, x, 0))) 122#define BITSRROP(b,a,x) ((unsigned long) (b) & 1 ? \ 123 (FbDoTypeRRop (b, CARD8, a, x, 16), \ 124 FbDoTypeRRop ((b) + 1, CARD16, a, x, 0)) : \ 125 (FbDoTypeRRop (b, CARD16, a, x, 8), \ 126 FbDoTypeRRop ((b) + 2, CARD8, a, x, 0))) 127#endif 128 129#include "fbbits.h" 130 131#undef BITSSTORE 132#undef BITSRROP 133#undef BITSMUL 134#undef BITSUNIT 135#undef BITS 136 137#undef BRESSOLID 138#undef BRESDASH 139#undef DOTS 140#undef ARC 141#undef POLYLINE 142#undef POLYSEGMENT 143 144#define BRESSOLID fbBresSolid32 145#define BRESDASH fbBresDash32 146#define DOTS fbDots32 147#define ARC fbArc32 148#define GLYPH fbGlyph32 149#define POLYLINE fbPolyline32 150#define POLYSEGMENT fbPolySegment32 151#define BITS CARD32 152 153#include "fbbits.h" 154 155#undef BRESSOLID 156#undef BRESDASH 157#undef DOTS 158#undef ARC 159#undef GLYPH 160#undef POLYLINE 161#undef POLYSEGMENT 162#undef BITS 163