cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/***********************************************************
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1987, 1998 The Open Group
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncthe above copyright notice appear in all copies and that both that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynccopyright notice and this permission notice appear in supporting
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncThe above copyright notice and this permission notice shall be included in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncall copies or substantial portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncin this Software without prior written authorization from The Open Group.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync All Rights Reserved
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, and distribute this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose and without fee is hereby granted,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncprovided that the above copyright notice appear in all copies and that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncboth that copyright notice and this permission notice appear in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsupporting documentation, and that the name of Digital not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or publicity pertaining to distribution of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsoftware without specific, written prior permission.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncSOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync******************************************************************/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef SERVERMD_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define SERVERMD_H 1
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Note: much of this is vestigial from mfb/cfb times. This should
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * really be simplified even further.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Machine dependent values:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * GLYPHPADBYTES should be chosen with consideration for the space-time
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * trade-off. Padding to 0 bytes means that there is no wasted space
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * in the font bitmaps (both on disk and in memory), but that access of
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the bitmaps will cause odd-address memory references. Padding to
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * 2 bytes would ensure even address memory references and would
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * be suitable for a 68010-class machine, but at the expense of wasted
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * space in the font bitmaps. Padding to 4 bytes would be good
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * for real 32 bit machines, etc. Be sure that you tell the font
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * compiler what kind of padding you want because its defines are
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * kept separate from this. See server/include/font.h for how
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * GLYPHPADBYTES is used.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef __avr32__
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* __avr32__ */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef __arm32__
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* __arm32__ */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined __hppa__
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4 /* to make fb work */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync /* byte boundries */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* hpux || __hppa__ */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* PowerPC */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__sh__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__BIG_ENDIAN__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#else
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* SuperH */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__m32r__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__BIG_ENDIAN__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#else
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* __m32r__ */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if (defined(sun) && (defined(__sparc) || defined(sparc))) || \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (defined(__uxp__) && (defined(sparc) || defined(mc68000))) || \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync defined(__sparc__) || defined(__mc68000__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__sparc) || defined(__sparc__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# if !defined(sparc)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define sparc 1
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(sun386) || defined(sun5)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst /* Values for the SUN only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#else
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER MSBFirst /* Values for the SUN only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* sun && !(i386 && SVR4) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(ibm032) || defined (ibm)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef __i386__
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst /* Value for PS/2 only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#else
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER MSBFirst /* Values for the RT only*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 1
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* ibm pcc doesn't understand pragmas. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef __i386__
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_SCANLINE_UNIT 8
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* ibm */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if (defined(mips) || defined(__mips))
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(MIPSEL) || defined(__MIPSEL__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst /* Values for the PMAX only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#else
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER MSBFirst /* Values for the MIPS only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* mips */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__alpha) || defined(__alpha__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst /* Values for the Alpha only */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* alpha */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined (linux) && defined (__s390__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_SCANLINE_UNIT 8
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define FAST_UNALIGNED_READ
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* linux/s390 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined (linux) && defined (__s390x__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_SCANLINE_UNIT 8
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define FAST_UNALIGNED_READ
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* linux/s390x */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__ia64__) || defined(ia64)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* ia64 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(__amd64__) || defined(amd64) || defined(__amd64)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* ???? */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* AMD64 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(SVR4) && (defined(__i386__) || defined(__i386) ) || \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync defined(__alpha__) || defined(__alpha) || \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync defined(__i386__) || \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync defined(__s390x__) || defined(__s390__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef IMAGE_BYTE_ORDER
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef BITMAP_BIT_ORDER
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync# define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef GLYPHPADBYTES
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* SVR4 / BSD / i386 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined (linux) && defined (__mc68000__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* linux/m68k */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* linux on ARM */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(linux) && defined(__arm__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER LSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* linux on IBM S/390 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined (linux) && defined (__s390__)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BYTE_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_BIT_ORDER MSBFirst
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define GLYPHPADBYTES 4
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* linux/s390 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* size of buffer to use with GetImage, measured in bytes. There's obviously
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * a trade-off between the amount of heap used and the number of times the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ddx routine has to be called.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef IMAGE_BUFSIZE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define IMAGE_BUFSIZE (64*1024)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* pad scanline to a longword */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef BITMAP_SCANLINE_UNIT
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_SCANLINE_UNIT 32
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef BITMAP_SCANLINE_PAD
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BITMAP_SCANLINE_PAD 32
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define LOG2_BITMAP_PAD 5
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define LOG2_BYTES_PER_SCANLINE_PAD 2
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <X11/Xfuncproto.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * This returns the number of padding units, for depth d and width w.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * For bitmaps this can be calculated with the macros above.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Other depths require either grovelling over the formats field of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * screenInfo or hardwired constants.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _PaddingInfo {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int padRoundUp; /* pixels per pad unit - 1 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int padPixelsLog2; /* log 2 (pixels per pad unit) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int padBytesLog2; /* log 2 (bytes per pad unit) */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int notPower2; /* bitsPerPixel not a power of 2 */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int bytesPerPixel; /* only set when notPower2 is TRUE */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int bitsPerPixel; /* bits per pixel */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} PaddingInfo;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern _X_EXPORT PaddingInfo PixmapWidthPaddingInfo[];
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* The only portable way to get the bpp from the depth is to look it up */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BitsPerPixel(d) (PixmapWidthPaddingInfo[d].bitsPerPixel)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define PixmapWidthInPadUnits(w, d) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (PixmapWidthPaddingInfo[d].notPower2 ? \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (((int)(w) * PixmapWidthPaddingInfo[d].bytesPerPixel + \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapWidthPaddingInfo[d].bytesPerPixel) >> \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapWidthPaddingInfo[d].padBytesLog2) : \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ((int)((w) + PixmapWidthPaddingInfo[d].padRoundUp) >> \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PixmapWidthPaddingInfo[d].padPixelsLog2))
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Return the number of bytes to which a scanline of the given
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * depth and width will be padded.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define PixmapBytePad(w, d) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (PixmapWidthInPadUnits(w, d) << PixmapWidthPaddingInfo[d].padBytesLog2)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BitmapBytePad(w) \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync (((int)((w) + BITMAP_SCANLINE_PAD - 1) >> LOG2_BITMAP_PAD) << LOG2_BYTES_PER_SCANLINE_PAD)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define PixmapWidthInPadUnitsProto(w, d) PixmapWidthInPadUnits(w, d)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define PixmapBytePadProto(w, d) PixmapBytePad(w, d)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define BitmapBytePadProto(w) BitmapBytePad(w)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* SERVERMD_H */