Home | History | Annotate | Line # | Download | only in fb
      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