Annotation of researchv9/X11/src/X.V11R1/server/include/servermd.h, revision 1.1.1.1

1.1       root        1: /***********************************************************
                      2: Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
                      3: and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
                      4: 
                      5:                         All Rights Reserved
                      6: 
                      7: Permission to use, copy, modify, and distribute this software and its 
                      8: documentation for any purpose and without fee is hereby granted, 
                      9: provided that the above copyright notice appear in all copies and that
                     10: both that copyright notice and this permission notice appear in 
                     11: supporting documentation, and that the names of Digital or MIT not be
                     12: used in advertising or publicity pertaining to distribution of the
                     13: software without specific, written prior permission.  
                     14: 
                     15: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     16: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     17: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     18: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     19: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     20: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     21: SOFTWARE.
                     22: 
                     23: ******************************************************************/
                     24: #ifndef SERVERMD_H
                     25: #define SERVERMD_H 1
                     26: /* $Header: servermd.h,v 1.26 87/09/13 00:56:46 toddb Exp $ */
                     27: 
                     28: /*
                     29:  * The vendor string identifies the vendor responsible for the
                     30:  * server executable.
                     31:  */
                     32: #ifndef VENDOR_STRING
                     33: #define VENDOR_STRING "Massachusetts Institute of Technology"
                     34: #endif VENDOR_STRING
                     35: 
                     36: /*
                     37:  * The vendor release number identifies, for the purpose of submitting
                     38:  * traceable bug reports, the release number of software produced
                     39:  * by the vendor.
                     40:  */
                     41: #ifndef VENDOR_RELEASE
                     42: #define VENDOR_RELEASE 1
                     43: #endif VENDOR_RELEASE
                     44: 
                     45: /*
                     46:  * Machine dependent values:
                     47:  * GLYPHPADBYTES should be chosen with consideration for the space-time
                     48:  * trade-off.  Padding to 0 bytes means that there is no wasted space
                     49:  * in the font bitmaps (both on disk and in memory), but that access of
                     50:  * the bitmaps will cause odd-address memory references.  Padding to
                     51:  * 2 bytes would ensure even address memory references and would
                     52:  * be suitable for a 68010-class machine, but at the expense of wasted
                     53:  * space in the font bitmaps.  Padding to 4 bytes would be good
                     54:  * for real 32 bit machines, etc.  Be sure that you tell the font
                     55:  * compiler what kind of padding you want because its defines are
                     56:  * kept separate from this.  See server/include/fonts.h for how
                     57:  * GLYPHPADBYTES is used.
                     58:  *
                     59:  * Along with this, you should choose an appropriate value for
                     60:  * GETLEFTBITS_ALIGNMENT, which is used in ddx/mfb/maskbits.h.  This
                     61:  * constant choses what kind of memory references are guarenteed during
                     62:  * font access; either 1, 2 or 4, for byte, word or longword access,
                     63:  * respectively.  For instance, if you have decided to to have
                     64:  * GLYPHPADBYTES == 4, then it is pointless for you to have a
                     65:  * GETLEFTBITS_ALIGNMENT > 1, because the padding of the fonts has already
                     66:  * guarenteed you that your fonts are longword aligned.  On the other
                     67:  * hand, even if you have chosen GLYPHPADBYTES == 1 to save space, you may
                     68:  * also decide that the computing involved in aligning the pointer is more
                     69:  * costly than an odd-address access; you choose GETLEFTBITS_ALIGNMENT == 1.
                     70:  * 
                     71:  * XXX: this code has changed since beta test and only GLYPHPADBYTES == 4
                     72:  * has been tested, hence all machines have this same value.
                     73:  *
                     74:  */
                     75: 
                     76: #ifdef vax
                     77: 
                     78: #define IMAGE_BYTE_ORDER       LSBFirst        /* Values for the VAX only */
                     79: #define BITMAP_BIT_ORDER       LSBFirst
                     80: #define        GLYPHPADBYTES           1
                     81: #define GETLEFTBITS_ALIGNMENT  4
                     82: 
                     83: #else
                     84: # ifdef sun
                     85: 
                     86: #define IMAGE_BYTE_ORDER       MSBFirst        /* Values for the SUN only */
                     87: #define BITMAP_BIT_ORDER       MSBFirst
                     88: #define        GLYPHPADBYTES           4
                     89: #define GETLEFTBITS_ALIGNMENT  4
                     90: 
                     91: # else
                     92: #  ifdef apollo
                     93: 
                     94: #define IMAGE_BYTE_ORDER       MSBFirst        /* Values for the Apollo only*/
                     95: #define BITMAP_BIT_ORDER       MSBFirst
                     96: #define        GLYPHPADBYTES           2
                     97: #define GETLEFTBITS_ALIGNMENT  4
                     98: 
                     99: #  else
                    100: #   ifdef ibm032
                    101: 
                    102: #define IMAGE_BYTE_ORDER       MSBFirst        /* Values for the RT only*/
                    103: #define BITMAP_BIT_ORDER       MSBFirst
                    104: #define        GLYPHPADBYTES           1
                    105: #define GETLEFTBITS_ALIGNMENT  4
                    106: /* ibm pcc doesn't understand pragmas. */
                    107: 
                    108: #   endif
                    109: #  endif
                    110: # endif
                    111: #endif
                    112: 
                    113: /* size of buffer to use with GetImage, measured in bytes. There's obviously
                    114:  * a trade-off between the amount of stack (or whatever ALLOCATE_LOCAL gives
                    115:  * you) used and the number of times the ddx routine has to be called.
                    116:  * 
                    117:  * for a 1024 x 864 bit monochrome screen  with a 32 bit word we get 
                    118:  * 8192/4 words per buffer 
                    119:  * (1024/32) = 32 words per scanline
                    120:  * 2048 words per buffer / 32 words per scanline = 64 scanlines per buffer
                    121:  * 864 scanlines / 64 scanlines = 14 buffers to draw a full screen
                    122:  */
                    123: #define IMAGE_BUFSIZE          8192
                    124: 
                    125: /* pad scanline to a longword */
                    126: #define BITMAP_SCANLINE_UNIT   32
                    127: #define BITMAP_SCANLINE_PAD  32
                    128: 
                    129: #define LOG2_BITMAP_PAD                5
                    130: #define LOG2_BYTES_PER_SCANLINE_PAD    2
                    131: 
                    132: /* 
                    133:  *   This returns the number of padding units, for depth d and width w.
                    134:  * For bitmaps this can be calculated with the macros above.
                    135:  * Other depths require either grovelling over the formats field of the
                    136:  * screenInfo or hardwired constants.
                    137:  */
                    138: 
                    139: typedef struct _PaddingInfo {
                    140:        int     scanlinePad;
                    141:        int     bitmapPadLog2;
                    142: } PaddingInfo;
                    143: extern PaddingInfo PixmapWidthPaddingInfo[];
                    144: 
                    145: #define PixmapWidthInPadUnits(w, d) \
                    146:     (((w) + PixmapWidthPaddingInfo[d].scanlinePad) >> \
                    147:        PixmapWidthPaddingInfo[d].bitmapPadLog2)
                    148: 
                    149: /*
                    150:  *     Return the number of bytes to which a scanline of the given
                    151:  * depth and width will be padded.
                    152:  */
                    153: #define PixmapBytePad(w, d) \
                    154:     (PixmapWidthInPadUnits(w, d) << LOG2_BYTES_PER_SCANLINE_PAD)
                    155: 
                    156: #endif SERVERMD_H

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.