Annotation of researchv9/X11/src/X.V11R1/server/include/servermd.h, revision 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.