aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/mfb
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/mfb')
-rw-r--r--xorg-server/mfb/Makefile.am133
-rw-r--r--xorg-server/mfb/Makefile.in855
-rw-r--r--xorg-server/mfb/fastblt.h96
-rw-r--r--xorg-server/mfb/maskbits.c1059
-rw-r--r--xorg-server/mfb/maskbits.h689
-rw-r--r--xorg-server/mfb/mergerop.h398
-rw-r--r--xorg-server/mfb/mfb.h1112
-rw-r--r--xorg-server/mfb/mfbbitblt.c500
-rw-r--r--xorg-server/mfb/mfbblt.c589
-rw-r--r--xorg-server/mfb/mfbbltC.c2
-rw-r--r--xorg-server/mfb/mfbbltCI.c2
-rw-r--r--xorg-server/mfb/mfbbltG.c2
-rw-r--r--xorg-server/mfb/mfbbltO.c2
-rw-r--r--xorg-server/mfb/mfbbltX.c2
-rw-r--r--xorg-server/mfb/mfbbres.c368
-rw-r--r--xorg-server/mfb/mfbbresd.c207
-rw-r--r--xorg-server/mfb/mfbclip.c280
-rw-r--r--xorg-server/mfb/mfbcmap.c162
-rw-r--r--xorg-server/mfb/mfbfillarc.c334
-rw-r--r--xorg-server/mfb/mfbfillrct.c227
-rw-r--r--xorg-server/mfb/mfbfillsp.c1029
-rw-r--r--xorg-server/mfb/mfbfont.c87
-rw-r--r--xorg-server/mfb/mfbgc.c1120
-rw-r--r--xorg-server/mfb/mfbgetsp.c157
-rw-r--r--xorg-server/mfb/mfbhrzvert.c177
-rw-r--r--xorg-server/mfb/mfbigbblak.c3
-rw-r--r--xorg-server/mfb/mfbigbwht.c3
-rw-r--r--xorg-server/mfb/mfbimage.c177
-rw-r--r--xorg-server/mfb/mfbimggblt.c444
-rw-r--r--xorg-server/mfb/mfbline.c759
-rw-r--r--xorg-server/mfb/mfbmisc.c99
-rw-r--r--xorg-server/mfb/mfbpablack.c5
-rw-r--r--xorg-server/mfb/mfbpainv.c5
-rw-r--r--xorg-server/mfb/mfbpawhite.c5
-rw-r--r--xorg-server/mfb/mfbpgbblak.c3
-rw-r--r--xorg-server/mfb/mfbpgbinv.c3
-rw-r--r--xorg-server/mfb/mfbpgbwht.c3
-rw-r--r--xorg-server/mfb/mfbpixmap.c298
-rw-r--r--xorg-server/mfb/mfbply1rct.c261
-rw-r--r--xorg-server/mfb/mfbplyblack.c4
-rw-r--r--xorg-server/mfb/mfbplygblt.c397
-rw-r--r--xorg-server/mfb/mfbplyinv.c4
-rw-r--r--xorg-server/mfb/mfbplywhite.c4
-rw-r--r--xorg-server/mfb/mfbpntarea.c299
-rw-r--r--xorg-server/mfb/mfbpolypnt.c144
-rw-r--r--xorg-server/mfb/mfbpushpxl.c287
-rw-r--r--xorg-server/mfb/mfbscrclse.c64
-rw-r--r--xorg-server/mfb/mfbscrinit.c182
-rw-r--r--xorg-server/mfb/mfbseg.c2
-rw-r--r--xorg-server/mfb/mfbsetsp.c281
-rw-r--r--xorg-server/mfb/mfbteblack.c4
-rw-r--r--xorg-server/mfb/mfbtegblt.c366
-rw-r--r--xorg-server/mfb/mfbtewhite.c4
-rw-r--r--xorg-server/mfb/mfbtile.c238
-rw-r--r--xorg-server/mfb/mfbtileC.c2
-rw-r--r--xorg-server/mfb/mfbtileG.c2
-rw-r--r--xorg-server/mfb/mfbwindow.c168
-rw-r--r--xorg-server/mfb/mfbzerarc.c259
58 files changed, 0 insertions, 14368 deletions
diff --git a/xorg-server/mfb/Makefile.am b/xorg-server/mfb/Makefile.am
deleted file mode 100644
index 274a32d7d..000000000
--- a/xorg-server/mfb/Makefile.am
+++ /dev/null
@@ -1,133 +0,0 @@
-noinst_LTLIBRARIES = libmfb.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
-
-libmfb_gen_sources = mfbseg.c mfbpgbwht.c mfbpgbblak.c mfbpgbinv.c mfbigbwht.c \
- mfbigbblak.c mfbpawhite.c mfbpablack.c mfbpainv.c mfbtewhite.c \
- mfbteblack.c mfbbltC.c mfbbltX.c mfbbltCI.c mfbbltO.c mfbbltG.c \
- mfbtileC.c mfbtileG.c mfbplywhite.c mfbplyblack.c mfbplyinv.c
-
-DISTCLEANFILES = $(libmfb_gen_sources)
-
-libmfb_la_SOURCES = mfbgc.c mfbwindow.c mfbfont.c \
- mfbfillrct.c maskbits.c mfbpixmap.c \
- mfbimage.c mfbline.c mfbbres.c mfbhrzvert.c mfbbresd.c \
- mfbpushpxl.c mfbzerarc.c mfbfillarc.c \
- mfbfillsp.c mfbsetsp.c mfbscrinit.c mfbscrclse.c mfbclip.c \
- mfbbitblt.c mfbgetsp.c mfbpolypnt.c \
- mfbcmap.c mfbmisc.c $(libmfb_gen_sources)
-
-EXTRA_DIST = maskbits.h mergerop.h fastblt.h mfbline.c mfbblt.c mfbtile.c \
- mfbplygblt.c mfbimggblt.c mfbpntarea.c mfbtegblt.c mfbply1rct.c
-
-sdk_HEADERS = mfb.h
-
-mfbseg.c:
- echo "#define POLYSEGMENT" > $@
- echo "#include \"$(srcdir)/mfbline.c\"" >> $@
-
-mfbbltC.c:
- echo "#define MROP Mcopy" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltX.c:
- echo "#define MROP Mxor" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltCI.c:
- echo "#define MROP McopyInverted" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltO.c:
- echo "#define MROP Mor" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltG.c:
- echo "#define MROP 0" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbtileC.c:
- echo "#define MROP Mcopy" > $@
- echo "#include \"$(srcdir)/mfbtile.c\"" >> $@
-
-mfbtileG.c:
- echo "#define MROP 0" > $@
- echo "#include \"$(srcdir)/mfbtile.c\"" >> $@
-
-mfbpgbwht.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBPOLYGLYPHBLT mfbPolyGlyphBltWhite" >> $@
- echo "#include \"$(srcdir)/mfbplygblt.c\"" >> $@
-
-mfbpgbblak.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBPOLYGLYPHBLT mfbPolyGlyphBltBlack" >> $@
- echo "#include \"$(srcdir)/mfbplygblt.c\"" >> $@
-
-mfbpgbinv.c:
- echo "#define OPEQ MFB_OPEQ_INVERT" > $@
- echo "#define MFBPOLYGLYPHBLT mfbPolyGlyphBltInvert" >> $@
- echo "#include \"$(srcdir)/mfbplygblt.c\"" >> $@
-
-mfbigbwht.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBIMAGEGLYPHBLT mfbImageGlyphBltWhite" >> $@
- echo "#include \"$(srcdir)/mfbimggblt.c\"" >> $@
-
-mfbigbblak.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBIMAGEGLYPHBLT mfbImageGlyphBltBlack" >> $@
- echo "#include \"$(srcdir)/mfbimggblt.c\"" >> $@
-
-mfbpawhite.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBSOLIDFILLAREA mfbSolidWhiteArea" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_WHITE" >> $@
- echo "#define MFBSTIPPLEFILLAREA mfbStippleWhiteArea" >> $@
- echo "#include \"$(srcdir)/mfbpntarea.c\"" >> $@
-
-mfbpablack.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBSOLIDFILLAREA mfbSolidBlackArea" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_BLACK" >> $@
- echo "#define MFBSTIPPLEFILLAREA mfbStippleBlackArea" >> $@
- echo "#include \"$(srcdir)/mfbpntarea.c\"" >> $@
-
-mfbpainv.c:
- echo "#define OPEQ MFB_OPEQ_INVERT" > $@
- echo "#define MFBSOLIDFILLAREA mfbSolidInvertArea" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_INVERT" >> $@
- echo "#define MFBSTIPPLEFILLAREA mfbStippleInvertArea" >> $@
- echo "#include \"$(srcdir)/mfbpntarea.c\"" >> $@
-
-mfbtewhite.c:
- echo "#define OP MFB_OP_WHITE" > $@
- echo "#define MFBTEGLYPHBLT mfbTEGlyphBltWhite" >> $@
- echo "#define CLIPTETEXT mfbImageGlyphBltWhite" >> $@
- echo "#include \"$(srcdir)/mfbtegblt.c\"" >> $@
-
-mfbteblack.c:
- echo "#define OP MFB_OP_BLACK" > $@
- echo "#define MFBTEGLYPHBLT mfbTEGlyphBltBlack" >> $@
- echo "#define CLIPTETEXT mfbImageGlyphBltBlack" >> $@
- echo "#include \"$(srcdir)/mfbtegblt.c\"" >> $@
-
-mfbplywhite.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBFILLPOLY1RECT mfbFillPolyWhite" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_WHITE" >> $@
- echo "#include \"$(srcdir)/mfbply1rct.c\"" >> $@
-
-mfbplyblack.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBFILLPOLY1RECT mfbFillPolyBlack" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_BLACK" >> $@
- echo "#include \"$(srcdir)/mfbply1rct.c\"" >> $@
-
-mfbplyinv.c:
- echo "#define OPEQ MFB_OPEQ_INVERT" > $@
- echo "#define MFBFILLPOLY1RECT mfbFillPolyInvert" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_INVERT" >> $@
- echo "#include \"$(srcdir)/mfbply1rct.c\"" >> $@
diff --git a/xorg-server/mfb/Makefile.in b/xorg-server/mfb/Makefile.in
deleted file mode 100644
index 5f5b18a3b..000000000
--- a/xorg-server/mfb/Makefile.in
+++ /dev/null
@@ -1,855 +0,0 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = mfb
-DIST_COMMON = $(sdk_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/include/do-not-use-config.h \
- $(top_builddir)/include/xorg-server.h \
- $(top_builddir)/include/dix-config.h \
- $(top_builddir)/include/xgl-config.h \
- $(top_builddir)/include/xorg-config.h \
- $(top_builddir)/include/xkb-config.h \
- $(top_builddir)/include/xwin-config.h \
- $(top_builddir)/include/kdrive-config.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libmfb_la_LIBADD =
-am__objects_1 = mfbseg.lo mfbpgbwht.lo mfbpgbblak.lo mfbpgbinv.lo \
- mfbigbwht.lo mfbigbblak.lo mfbpawhite.lo mfbpablack.lo \
- mfbpainv.lo mfbtewhite.lo mfbteblack.lo mfbbltC.lo mfbbltX.lo \
- mfbbltCI.lo mfbbltO.lo mfbbltG.lo mfbtileC.lo mfbtileG.lo \
- mfbplywhite.lo mfbplyblack.lo mfbplyinv.lo
-am_libmfb_la_OBJECTS = mfbgc.lo mfbwindow.lo mfbfont.lo mfbfillrct.lo \
- maskbits.lo mfbpixmap.lo mfbimage.lo mfbline.lo mfbbres.lo \
- mfbhrzvert.lo mfbbresd.lo mfbpushpxl.lo mfbzerarc.lo \
- mfbfillarc.lo mfbfillsp.lo mfbsetsp.lo mfbscrinit.lo \
- mfbscrclse.lo mfbclip.lo mfbbitblt.lo mfbgetsp.lo \
- mfbpolypnt.lo mfbcmap.lo mfbmisc.lo $(am__objects_1)
-libmfb_la_OBJECTS = $(am_libmfb_la_OBJECTS)
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libmfb_la_SOURCES)
-DIST_SOURCES = $(libmfb_la_SOURCES)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(sdkdir)"
-sdkHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(sdk_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
-ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-APPDEFAULTDIR = @APPDEFAULTDIR@
-APPLE_APPLICATIONS_DIR = @APPLE_APPLICATIONS_DIR@
-APP_MAN_DIR = @APP_MAN_DIR@
-APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BASE_FONT_PATH = @BASE_FONT_PATH@
-BUILD_DATE = @BUILD_DATE@
-BUILD_TIME = @BUILD_TIME@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-COMPILEDDEFAULTFONTPATH = @COMPILEDDEFAULTFONTPATH@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DARWIN_LIBS = @DARWIN_LIBS@
-DBUS_CFLAGS = @DBUS_CFLAGS@
-DBUS_LIBS = @DBUS_LIBS@
-DEFAULT_LIBRARY_PATH = @DEFAULT_LIBRARY_PATH@
-DEFAULT_LOGPREFIX = @DEFAULT_LOGPREFIX@
-DEFAULT_MODULE_PATH = @DEFAULT_MODULE_PATH@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DGA_CFLAGS = @DGA_CFLAGS@
-DGA_LIBS = @DGA_LIBS@
-DIX_CFLAGS = @DIX_CFLAGS@
-DLLTOOL = @DLLTOOL@
-DMXEXAMPLES_DEP_CFLAGS = @DMXEXAMPLES_DEP_CFLAGS@
-DMXEXAMPLES_DEP_LIBS = @DMXEXAMPLES_DEP_LIBS@
-DMXMODULES_CFLAGS = @DMXMODULES_CFLAGS@
-DMXMODULES_LIBS = @DMXMODULES_LIBS@
-DMXXIEXAMPLES_DEP_CFLAGS = @DMXXIEXAMPLES_DEP_CFLAGS@
-DMXXIEXAMPLES_DEP_LIBS = @DMXXIEXAMPLES_DEP_LIBS@
-DMXXMUEXAMPLES_DEP_CFLAGS = @DMXXMUEXAMPLES_DEP_CFLAGS@
-DMXXMUEXAMPLES_DEP_LIBS = @DMXXMUEXAMPLES_DEP_LIBS@
-DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@
-DRI2PROTO_LIBS = @DRI2PROTO_LIBS@
-DRIPROTO_CFLAGS = @DRIPROTO_CFLAGS@
-DRIPROTO_LIBS = @DRIPROTO_LIBS@
-DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
-DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
-DRI_DRIVER_PATH = @DRI_DRIVER_PATH@
-DSYMUTIL = @DSYMUTIL@
-DTRACE = @DTRACE@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FILE_MAN_DIR = @FILE_MAN_DIR@
-FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-GLX_ARCH_DEFINES = @GLX_ARCH_DEFINES@
-GLX_DEFINES = @GLX_DEFINES@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GREP = @GREP@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-KDRIVE_CFLAGS = @KDRIVE_CFLAGS@
-KDRIVE_INCS = @KDRIVE_INCS@
-KDRIVE_LIBS = @KDRIVE_LIBS@
-KDRIVE_LOCAL_LIBS = @KDRIVE_LOCAL_LIBS@
-KDRIVE_PURE_INCS = @KDRIVE_PURE_INCS@
-KDRIVE_PURE_LIBS = @KDRIVE_PURE_LIBS@
-LAUNCHD = @LAUNCHD@
-LDFLAGS = @LDFLAGS@
-LD_EXPORT_SYMBOLS_FLAG = @LD_EXPORT_SYMBOLS_FLAG@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
-LIBDRM_LIBS = @LIBDRM_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIB_MAN_DIR = @LIB_MAN_DIR@
-LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
-LINUXDOC = @LINUXDOC@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MAKE_HTML = @MAKE_HTML@
-MAKE_PDF = @MAKE_PDF@
-MAKE_PS = @MAKE_PS@
-MAKE_TEXT = @MAKE_TEXT@
-MESA_SOURCE = @MESA_SOURCE@
-MISC_MAN_DIR = @MISC_MAN_DIR@
-MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
-MKDIR_P = @MKDIR_P@
-MKFONTDIR = @MKFONTDIR@
-MKFONTSCALE = @MKFONTSCALE@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCCLD = @OBJCCLD@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJCFLAGS = @OBJCFLAGS@
-OBJCLINK = @OBJCLINK@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PCIACCESS_CFLAGS = @PCIACCESS_CFLAGS@
-PCIACCESS_LIBS = @PCIACCESS_LIBS@
-PCI_TXT_IDS_PATH = @PCI_TXT_IDS_PATH@
-PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PROJECTROOT = @PROJECTROOT@
-PS2PDF = @PS2PDF@
-RANLIB = @RANLIB@
-RAWCPP = @RAWCPP@
-RAWCPPFLAGS = @RAWCPPFLAGS@
-SED = @SED@
-SERVER_MISC_CONFIG_PATH = @SERVER_MISC_CONFIG_PATH@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SOLARIS_ASM_CFLAGS = @SOLARIS_ASM_CFLAGS@
-SOLARIS_INOUT_ARCH = @SOLARIS_INOUT_ARCH@
-STRIP = @STRIP@
-TSLIB_CFLAGS = @TSLIB_CFLAGS@
-TSLIB_LIBS = @TSLIB_LIBS@
-UTILS_SYS_LIBS = @UTILS_SYS_LIBS@
-VENDOR_MAN_VERSION = @VENDOR_MAN_VERSION@
-VENDOR_NAME = @VENDOR_NAME@
-VENDOR_NAME_SHORT = @VENDOR_NAME_SHORT@
-VENDOR_RELEASE = @VENDOR_RELEASE@
-VERSION = @VERSION@
-X11APP_ARCHS = @X11APP_ARCHS@
-X11EXAMPLES_DEP_CFLAGS = @X11EXAMPLES_DEP_CFLAGS@
-X11EXAMPLES_DEP_LIBS = @X11EXAMPLES_DEP_LIBS@
-XDMCP_CFLAGS = @XDMCP_CFLAGS@
-XDMCP_LIBS = @XDMCP_LIBS@
-XDMXCONFIG_DEP_CFLAGS = @XDMXCONFIG_DEP_CFLAGS@
-XDMXCONFIG_DEP_LIBS = @XDMXCONFIG_DEP_LIBS@
-XDMX_CFLAGS = @XDMX_CFLAGS@
-XDMX_LIBS = @XDMX_LIBS@
-XDMX_SYS_LIBS = @XDMX_SYS_LIBS@
-XEGLMODULES_CFLAGS = @XEGLMODULES_CFLAGS@
-XEGL_LIBS = @XEGL_LIBS@
-XEGL_SYS_LIBS = @XEGL_SYS_LIBS@
-XEPHYR_CFLAGS = @XEPHYR_CFLAGS@
-XEPHYR_DRI_LIBS = @XEPHYR_DRI_LIBS@
-XEPHYR_INCS = @XEPHYR_INCS@
-XEPHYR_LIBS = @XEPHYR_LIBS@
-XF86CONFIGFILE = @XF86CONFIGFILE@
-XF86MISC_CFLAGS = @XF86MISC_CFLAGS@
-XF86MISC_LIBS = @XF86MISC_LIBS@
-XF86VIDMODE_CFLAGS = @XF86VIDMODE_CFLAGS@
-XF86VIDMODE_LIBS = @XF86VIDMODE_LIBS@
-XGLMODULES_CFLAGS = @XGLMODULES_CFLAGS@
-XGLMODULES_LIBS = @XGLMODULES_LIBS@
-XGLXMODULES_CFLAGS = @XGLXMODULES_CFLAGS@
-XGLXMODULES_LIBS = @XGLXMODULES_LIBS@
-XGLX_LIBS = @XGLX_LIBS@
-XGLX_SYS_LIBS = @XGLX_SYS_LIBS@
-XGL_LIBS = @XGL_LIBS@
-XGL_MODULE_PATH = @XGL_MODULE_PATH@
-XGL_SYS_LIBS = @XGL_SYS_LIBS@
-XKB_BASE_DIRECTORY = @XKB_BASE_DIRECTORY@
-XKB_BIN_DIRECTORY = @XKB_BIN_DIRECTORY@
-XKB_COMPILED_DIR = @XKB_COMPILED_DIR@
-XKM_OUTPUT_DIR = @XKM_OUTPUT_DIR@
-XLIB_CFLAGS = @XLIB_CFLAGS@
-XLIB_LIBS = @XLIB_LIBS@
-XNESTMODULES_CFLAGS = @XNESTMODULES_CFLAGS@
-XNESTMODULES_LIBS = @XNESTMODULES_LIBS@
-XNEST_LIBS = @XNEST_LIBS@
-XNEST_SYS_LIBS = @XNEST_SYS_LIBS@
-XORGCFG_DEP_CFLAGS = @XORGCFG_DEP_CFLAGS@
-XORGCFG_DEP_LIBS = @XORGCFG_DEP_LIBS@
-XORGCONFIG_DEP_CFLAGS = @XORGCONFIG_DEP_CFLAGS@
-XORGCONFIG_DEP_LIBS = @XORGCONFIG_DEP_LIBS@
-XORG_CFLAGS = @XORG_CFLAGS@
-XORG_INCS = @XORG_INCS@
-XORG_LIBS = @XORG_LIBS@
-XORG_MODULES_CFLAGS = @XORG_MODULES_CFLAGS@
-XORG_MODULES_LIBS = @XORG_MODULES_LIBS@
-XORG_OS = @XORG_OS@
-XORG_OS_SUBDIR = @XORG_OS_SUBDIR@
-XORG_SYS_LIBS = @XORG_SYS_LIBS@
-XPRINTMODULES_CFLAGS = @XPRINTMODULES_CFLAGS@
-XPRINTMODULES_LIBS = @XPRINTMODULES_LIBS@
-XPRINTPROTO_CFLAGS = @XPRINTPROTO_CFLAGS@
-XPRINTPROTO_LIBS = @XPRINTPROTO_LIBS@
-XPRINT_CFLAGS = @XPRINT_CFLAGS@
-XPRINT_LIBS = @XPRINT_LIBS@
-XPRINT_SYS_LIBS = @XPRINT_SYS_LIBS@
-XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@
-XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@
-XSDL_INCS = @XSDL_INCS@
-XSDL_LIBS = @XSDL_LIBS@
-XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@
-XSERVERCFLAGS_LIBS = @XSERVERCFLAGS_LIBS@
-XSERVERLIBS_CFLAGS = @XSERVERLIBS_CFLAGS@
-XSERVERLIBS_LIBS = @XSERVERLIBS_LIBS@
-XSERVER_LIBS = @XSERVER_LIBS@
-XSERVER_SYS_LIBS = @XSERVER_SYS_LIBS@
-XTSTEXAMPLES_DEP_CFLAGS = @XTSTEXAMPLES_DEP_CFLAGS@
-XTSTEXAMPLES_DEP_LIBS = @XTSTEXAMPLES_DEP_LIBS@
-XVFB_LIBS = @XVFB_LIBS@
-XVFB_SYS_LIBS = @XVFB_SYS_LIBS@
-XWINMODULES_CFLAGS = @XWINMODULES_CFLAGS@
-XWINMODULES_LIBS = @XWINMODULES_LIBS@
-XWIN_LIBS = @XWIN_LIBS@
-XWIN_SERVER_NAME = @XWIN_SERVER_NAME@
-XWIN_SYS_LIBS = @XWIN_SYS_LIBS@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-__XCONFIGFILE__ = @__XCONFIGFILE__@
-abi_ansic = @abi_ansic@
-abi_extension = @abi_extension@
-abi_font = @abi_font@
-abi_videodrv = @abi_videodrv@
-abi_xinput = @abi_xinput@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-driverdir = @driverdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-extdir = @extdir@
-ft_config = @ft_config@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-launchagentsdir = @launchagentsdir@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-logdir = @logdir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-moduledir = @moduledir@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sdkdir = @sdkdir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-xglmoduledir = @xglmoduledir@
-xpconfigdir = @xpconfigdir@
-noinst_LTLIBRARIES = libmfb.la
-AM_CFLAGS = $(DIX_CFLAGS)
-INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
-libmfb_gen_sources = mfbseg.c mfbpgbwht.c mfbpgbblak.c mfbpgbinv.c mfbigbwht.c \
- mfbigbblak.c mfbpawhite.c mfbpablack.c mfbpainv.c mfbtewhite.c \
- mfbteblack.c mfbbltC.c mfbbltX.c mfbbltCI.c mfbbltO.c mfbbltG.c \
- mfbtileC.c mfbtileG.c mfbplywhite.c mfbplyblack.c mfbplyinv.c
-
-DISTCLEANFILES = $(libmfb_gen_sources)
-libmfb_la_SOURCES = mfbgc.c mfbwindow.c mfbfont.c \
- mfbfillrct.c maskbits.c mfbpixmap.c \
- mfbimage.c mfbline.c mfbbres.c mfbhrzvert.c mfbbresd.c \
- mfbpushpxl.c mfbzerarc.c mfbfillarc.c \
- mfbfillsp.c mfbsetsp.c mfbscrinit.c mfbscrclse.c mfbclip.c \
- mfbbitblt.c mfbgetsp.c mfbpolypnt.c \
- mfbcmap.c mfbmisc.c $(libmfb_gen_sources)
-
-EXTRA_DIST = maskbits.h mergerop.h fastblt.h mfbline.c mfbblt.c mfbtile.c \
- mfbplygblt.c mfbimggblt.c mfbpntarea.c mfbtegblt.c mfbply1rct.c
-
-sdk_HEADERS = mfb.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mfb/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign mfb/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libmfb.la: $(libmfb_la_OBJECTS) $(libmfb_la_DEPENDENCIES)
- $(LINK) $(libmfb_la_OBJECTS) $(libmfb_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maskbits.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbitblt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbltC.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbltCI.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbltG.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbltO.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbltX.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbres.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbbresd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbclip.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbcmap.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbfillarc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbfillrct.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbfillsp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbfont.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbgc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbgetsp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbhrzvert.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbigbblak.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbigbwht.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbimage.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbline.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbmisc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpablack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpainv.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpawhite.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpgbblak.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpgbinv.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpgbwht.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpixmap.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbplyblack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbplyinv.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbplywhite.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpolypnt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbpushpxl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbscrclse.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbscrinit.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbseg.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbsetsp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbteblack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbtewhite.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbtileC.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbtileG.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbwindow.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfbzerarc.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-sdkHEADERS: $(sdk_HEADERS)
- @$(NORMAL_INSTALL)
- test -z "$(sdkdir)" || $(MKDIR_P) "$(DESTDIR)$(sdkdir)"
- @list='$(sdk_HEADERS)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(sdkHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(sdkdir)/$$f'"; \
- $(sdkHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(sdkdir)/$$f"; \
- done
-
-uninstall-sdkHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(sdk_HEADERS)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(sdkdir)/$$f'"; \
- rm -f "$(DESTDIR)$(sdkdir)/$$f"; \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(sdkdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-sdkHEADERS
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-sdkHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-sdkHEADERS install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-sdkHEADERS
-
-
-mfbseg.c:
- echo "#define POLYSEGMENT" > $@
- echo "#include \"$(srcdir)/mfbline.c\"" >> $@
-
-mfbbltC.c:
- echo "#define MROP Mcopy" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltX.c:
- echo "#define MROP Mxor" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltCI.c:
- echo "#define MROP McopyInverted" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltO.c:
- echo "#define MROP Mor" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbbltG.c:
- echo "#define MROP 0" > $@
- echo "#include \"$(srcdir)/mfbblt.c\"" >> $@
-
-mfbtileC.c:
- echo "#define MROP Mcopy" > $@
- echo "#include \"$(srcdir)/mfbtile.c\"" >> $@
-
-mfbtileG.c:
- echo "#define MROP 0" > $@
- echo "#include \"$(srcdir)/mfbtile.c\"" >> $@
-
-mfbpgbwht.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBPOLYGLYPHBLT mfbPolyGlyphBltWhite" >> $@
- echo "#include \"$(srcdir)/mfbplygblt.c\"" >> $@
-
-mfbpgbblak.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBPOLYGLYPHBLT mfbPolyGlyphBltBlack" >> $@
- echo "#include \"$(srcdir)/mfbplygblt.c\"" >> $@
-
-mfbpgbinv.c:
- echo "#define OPEQ MFB_OPEQ_INVERT" > $@
- echo "#define MFBPOLYGLYPHBLT mfbPolyGlyphBltInvert" >> $@
- echo "#include \"$(srcdir)/mfbplygblt.c\"" >> $@
-
-mfbigbwht.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBIMAGEGLYPHBLT mfbImageGlyphBltWhite" >> $@
- echo "#include \"$(srcdir)/mfbimggblt.c\"" >> $@
-
-mfbigbblak.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBIMAGEGLYPHBLT mfbImageGlyphBltBlack" >> $@
- echo "#include \"$(srcdir)/mfbimggblt.c\"" >> $@
-
-mfbpawhite.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBSOLIDFILLAREA mfbSolidWhiteArea" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_WHITE" >> $@
- echo "#define MFBSTIPPLEFILLAREA mfbStippleWhiteArea" >> $@
- echo "#include \"$(srcdir)/mfbpntarea.c\"" >> $@
-
-mfbpablack.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBSOLIDFILLAREA mfbSolidBlackArea" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_BLACK" >> $@
- echo "#define MFBSTIPPLEFILLAREA mfbStippleBlackArea" >> $@
- echo "#include \"$(srcdir)/mfbpntarea.c\"" >> $@
-
-mfbpainv.c:
- echo "#define OPEQ MFB_OPEQ_INVERT" > $@
- echo "#define MFBSOLIDFILLAREA mfbSolidInvertArea" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_INVERT" >> $@
- echo "#define MFBSTIPPLEFILLAREA mfbStippleInvertArea" >> $@
- echo "#include \"$(srcdir)/mfbpntarea.c\"" >> $@
-
-mfbtewhite.c:
- echo "#define OP MFB_OP_WHITE" > $@
- echo "#define MFBTEGLYPHBLT mfbTEGlyphBltWhite" >> $@
- echo "#define CLIPTETEXT mfbImageGlyphBltWhite" >> $@
- echo "#include \"$(srcdir)/mfbtegblt.c\"" >> $@
-
-mfbteblack.c:
- echo "#define OP MFB_OP_BLACK" > $@
- echo "#define MFBTEGLYPHBLT mfbTEGlyphBltBlack" >> $@
- echo "#define CLIPTETEXT mfbImageGlyphBltBlack" >> $@
- echo "#include \"$(srcdir)/mfbtegblt.c\"" >> $@
-
-mfbplywhite.c:
- echo "#define OPEQ MFB_OPEQ_WHITE" > $@
- echo "#define MFBFILLPOLY1RECT mfbFillPolyWhite" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_WHITE" >> $@
- echo "#include \"$(srcdir)/mfbply1rct.c\"" >> $@
-
-mfbplyblack.c:
- echo "#define OPEQ MFB_OPEQ_BLACK" > $@
- echo "#define MFBFILLPOLY1RECT mfbFillPolyBlack" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_BLACK" >> $@
- echo "#include \"$(srcdir)/mfbply1rct.c\"" >> $@
-
-mfbplyinv.c:
- echo "#define OPEQ MFB_OPEQ_INVERT" > $@
- echo "#define MFBFILLPOLY1RECT mfbFillPolyInvert" >> $@
- echo "#define EQWHOLEWORD MFB_EQWHOLEWORD_INVERT" >> $@
- echo "#include \"$(srcdir)/mfbply1rct.c\"" >> $@
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/xorg-server/mfb/fastblt.h b/xorg-server/mfb/fastblt.h
deleted file mode 100644
index 35ba5a2a1..000000000
--- a/xorg-server/mfb/fastblt.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/*
- * Fast bitblt macros for certain hardware. If your machine has an addressing
- * mode of small constant + register, you'll probably want this magic specific
- * code. It's 25% faster for the R2000. I haven't studied the Sparc
- * instruction set, but I suspect it also has this addressing mode. Also,
- * unrolling the loop by 32 is possibly excessive for mfb. The number of times
- * the loop is actually looped through is pretty small.
- */
-
-/*
- * WARNING: These macros make *a lot* of assumptions about
- * the environment they are invoked in. Plenty of implicit
- * arguments, lots of side effects. Don't use them casually.
- */
-
-#define SwitchOdd(n) case n: BodyOdd(n)
-#define SwitchEven(n) case n: BodyEven(n)
-
-/* to allow mfb and cfb to share code... */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef BitRight
-#define BitRight(a,b) SCRRIGHT(a,b)
-#define BitLeft(a,b) SCRLEFT(a,b)
-#endif
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#define UNROLL 8
-#define PackedLoop \
- switch (nl & (UNROLL-1)) { \
- SwitchOdd( 7) SwitchEven( 6) SwitchOdd( 5) SwitchEven( 4) \
- SwitchOdd( 3) SwitchEven( 2) SwitchOdd( 1) \
- } \
- while ((nl -= UNROLL) >= 0) { \
- LoopReset \
- BodyEven( 8) \
- BodyOdd( 7) BodyEven( 6) BodyOdd( 5) BodyEven( 4) \
- BodyOdd( 3) BodyEven( 2) BodyOdd( 1) \
- }
-#else
-#define UNROLL 4
-#define PackedLoop \
- switch (nl & (UNROLL-1)) { \
- SwitchOdd( 3) SwitchEven( 2) SwitchOdd( 1) \
- } \
- while ((nl -= UNROLL) >= 0) { \
- LoopReset \
- BodyEven( 4) \
- BodyOdd( 3) BodyEven( 2) BodyOdd( 1) \
- }
-#endif
-
-#define DuffL(counter,label,body) \
- switch (counter & 3) { \
- label: \
- body \
- case 3: \
- body \
- case 2: \
- body \
- case 1: \
- body \
- case 0: \
- if ((counter -= 4) >= 0) \
- goto label; \
- }
diff --git a/xorg-server/mfb/maskbits.c b/xorg-server/mfb/maskbits.c
deleted file mode 100644
index 85b5f3048..000000000
--- a/xorg-server/mfb/maskbits.c
+++ /dev/null
@@ -1,1059 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "maskbits.h"
-#include "servermd.h"
-
-/*
-these tables are used by several macros in the mfb code.
-
- the vax numbers everything left to right, so bit indices on the
-screen match bit indices in longwords. the pc-rt and Sun number
-bits on the screen the way they would be written on paper,
-(i.e. msb to the left), and so a bit index n on the screen is
-bit index PPW-n in a longword
-
- see also maskbits.h
-*/
-
-#if PPW != 32
- ERROR MFB must be compiled with PPW 32
-#endif
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-/* NOTE:
-the first element in starttab could be 0xffffffff. making it 0
-lets us deal with a full first word in the middle loop, rather
-than having to do the multiple reads and masks that we'd
-have to do if we thought it was partial.
-*/
-PixelType starttab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endtab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-
-
-#ifdef NEED_OLD_MFB_MASKS
-/* a hack, for now, since the entries for 0 need to be all
- 1 bits, not all zeros.
- this means the code DOES NOT WORK for segments of length
- 0 (which is only a problem in the horizontal line code.)
-*/
-PixelType startpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-#endif /* NEED_OLD_MFB_MASKS */
-
-
-PixelType partmasks[PPW][PPW] = {
- {LONG2CHARS( 0xFFFFFFFF ), LONG2CHARS( 0x80000000 ), LONG2CHARS( 0xC0000000 ), LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xF0000000 ), LONG2CHARS( 0xF8000000 ), LONG2CHARS( 0xFC000000 ), LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFF000000 ), LONG2CHARS( 0xFF800000 ), LONG2CHARS( 0xFFC00000 ), LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFF00000 ), LONG2CHARS( 0xFFF80000 ), LONG2CHARS( 0xFFFC0000 ), LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFF0000 ), LONG2CHARS( 0xFFFF8000 ), LONG2CHARS( 0xFFFFC000 ), LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFF000 ), LONG2CHARS( 0xFFFFF800 ), LONG2CHARS( 0xFFFFFC00 ), LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFF00 ), LONG2CHARS( 0xFFFFFF80 ), LONG2CHARS( 0xFFFFFFC0 ), LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFF0 ), LONG2CHARS( 0xFFFFFFF8 ), LONG2CHARS( 0xFFFFFFFC ), LONG2CHARS( 0xFFFFFFFE )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x40000000 ), LONG2CHARS( 0x60000000 ), LONG2CHARS( 0x70000000 ),
- LONG2CHARS( 0x78000000 ), LONG2CHARS( 0x7C000000 ), LONG2CHARS( 0x7E000000 ), LONG2CHARS( 0x7F000000 ),
- LONG2CHARS( 0x7F800000 ), LONG2CHARS( 0x7FC00000 ), LONG2CHARS( 0x7FE00000 ), LONG2CHARS( 0x7FF00000 ),
- LONG2CHARS( 0x7FF80000 ), LONG2CHARS( 0x7FFC0000 ), LONG2CHARS( 0x7FFE0000 ), LONG2CHARS( 0x7FFF0000 ),
- LONG2CHARS( 0x7FFF8000 ), LONG2CHARS( 0x7FFFC000 ), LONG2CHARS( 0x7FFFE000 ), LONG2CHARS( 0x7FFFF000 ),
- LONG2CHARS( 0x7FFFF800 ), LONG2CHARS( 0x7FFFFC00 ), LONG2CHARS( 0x7FFFFE00 ), LONG2CHARS( 0x7FFFFF00 ),
- LONG2CHARS( 0x7FFFFF80 ), LONG2CHARS( 0x7FFFFFC0 ), LONG2CHARS( 0x7FFFFFE0 ), LONG2CHARS( 0x7FFFFFF0 ),
- LONG2CHARS( 0x7FFFFFF8 ), LONG2CHARS( 0x7FFFFFFC ), LONG2CHARS( 0x7FFFFFFE ), LONG2CHARS( 0x7FFFFFFF )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x20000000 ), LONG2CHARS( 0x30000000 ), LONG2CHARS( 0x38000000 ),
- LONG2CHARS( 0x3C000000 ), LONG2CHARS( 0x3E000000 ), LONG2CHARS( 0x3F000000 ), LONG2CHARS( 0x3F800000 ),
- LONG2CHARS( 0x3FC00000 ), LONG2CHARS( 0x3FE00000 ), LONG2CHARS( 0x3FF00000 ), LONG2CHARS( 0x3FF80000 ),
- LONG2CHARS( 0x3FFC0000 ), LONG2CHARS( 0x3FFE0000 ), LONG2CHARS( 0x3FFF0000 ), LONG2CHARS( 0x3FFF8000 ),
- LONG2CHARS( 0x3FFFC000 ), LONG2CHARS( 0x3FFFE000 ), LONG2CHARS( 0x3FFFF000 ), LONG2CHARS( 0x3FFFF800 ),
- LONG2CHARS( 0x3FFFFC00 ), LONG2CHARS( 0x3FFFFE00 ), LONG2CHARS( 0x3FFFFF00 ), LONG2CHARS( 0x3FFFFF80 ),
- LONG2CHARS( 0x3FFFFFC0 ), LONG2CHARS( 0x3FFFFFE0 ), LONG2CHARS( 0x3FFFFFF0 ), LONG2CHARS( 0x3FFFFFF8 ),
- LONG2CHARS( 0x3FFFFFFC ), LONG2CHARS( 0x3FFFFFFE ), LONG2CHARS( 0x3FFFFFFF ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x10000000 ), LONG2CHARS( 0x18000000 ), LONG2CHARS( 0x1C000000 ),
- LONG2CHARS( 0x1E000000 ), LONG2CHARS( 0x1F000000 ), LONG2CHARS( 0x1F800000 ), LONG2CHARS( 0x1FC00000 ),
- LONG2CHARS( 0x1FE00000 ), LONG2CHARS( 0x1FF00000 ), LONG2CHARS( 0x1FF80000 ), LONG2CHARS( 0x1FFC0000 ),
- LONG2CHARS( 0x1FFE0000 ), LONG2CHARS( 0x1FFF0000 ), LONG2CHARS( 0x1FFF8000 ), LONG2CHARS( 0x1FFFC000 ),
- LONG2CHARS( 0x1FFFE000 ), LONG2CHARS( 0x1FFFF000 ), LONG2CHARS( 0x1FFFF800 ), LONG2CHARS( 0x1FFFFC00 ),
- LONG2CHARS( 0x1FFFFE00 ), LONG2CHARS( 0x1FFFFF00 ), LONG2CHARS( 0x1FFFFF80 ), LONG2CHARS( 0x1FFFFFC0 ),
- LONG2CHARS( 0x1FFFFFE0 ), LONG2CHARS( 0x1FFFFFF0 ), LONG2CHARS( 0x1FFFFFF8 ), LONG2CHARS( 0x1FFFFFFC ),
- LONG2CHARS( 0x1FFFFFFE ), LONG2CHARS( 0x1FFFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x08000000 ), LONG2CHARS( 0x0C000000 ), LONG2CHARS( 0x0E000000 ),
- LONG2CHARS( 0x0F000000 ), LONG2CHARS( 0x0F800000 ), LONG2CHARS( 0x0FC00000 ), LONG2CHARS( 0x0FE00000 ),
- LONG2CHARS( 0x0FF00000 ), LONG2CHARS( 0x0FF80000 ), LONG2CHARS( 0x0FFC0000 ), LONG2CHARS( 0x0FFE0000 ),
- LONG2CHARS( 0x0FFF0000 ), LONG2CHARS( 0x0FFF8000 ), LONG2CHARS( 0x0FFFC000 ), LONG2CHARS( 0x0FFFE000 ),
- LONG2CHARS( 0x0FFFF000 ), LONG2CHARS( 0x0FFFF800 ), LONG2CHARS( 0x0FFFFC00 ), LONG2CHARS( 0x0FFFFE00 ),
- LONG2CHARS( 0x0FFFFF00 ), LONG2CHARS( 0x0FFFFF80 ), LONG2CHARS( 0x0FFFFFC0 ), LONG2CHARS( 0x0FFFFFE0 ),
- LONG2CHARS( 0x0FFFFFF0 ), LONG2CHARS( 0x0FFFFFF8 ), LONG2CHARS( 0x0FFFFFFC ), LONG2CHARS( 0x0FFFFFFE ),
- LONG2CHARS( 0x0FFFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x04000000 ), LONG2CHARS( 0x06000000 ), LONG2CHARS( 0x07000000 ),
- LONG2CHARS( 0x07800000 ), LONG2CHARS( 0x07C00000 ), LONG2CHARS( 0x07E00000 ), LONG2CHARS( 0x07F00000 ),
- LONG2CHARS( 0x07F80000 ), LONG2CHARS( 0x07FC0000 ), LONG2CHARS( 0x07FE0000 ), LONG2CHARS( 0x07FF0000 ),
- LONG2CHARS( 0x07FF8000 ), LONG2CHARS( 0x07FFC000 ), LONG2CHARS( 0x07FFE000 ), LONG2CHARS( 0x07FFF000 ),
- LONG2CHARS( 0x07FFF800 ), LONG2CHARS( 0x07FFFC00 ), LONG2CHARS( 0x07FFFE00 ), LONG2CHARS( 0x07FFFF00 ),
- LONG2CHARS( 0x07FFFF80 ), LONG2CHARS( 0x07FFFFC0 ), LONG2CHARS( 0x07FFFFE0 ), LONG2CHARS( 0x07FFFFF0 ),
- LONG2CHARS( 0x07FFFFF8 ), LONG2CHARS( 0x07FFFFFC ), LONG2CHARS( 0x07FFFFFE ), LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x02000000 ), LONG2CHARS( 0x03000000 ), LONG2CHARS( 0x03800000 ),
- LONG2CHARS( 0x03C00000 ), LONG2CHARS( 0x03E00000 ), LONG2CHARS( 0x03F00000 ), LONG2CHARS( 0x03F80000 ),
- LONG2CHARS( 0x03FC0000 ), LONG2CHARS( 0x03FE0000 ), LONG2CHARS( 0x03FF0000 ), LONG2CHARS( 0x03FF8000 ),
- LONG2CHARS( 0x03FFC000 ), LONG2CHARS( 0x03FFE000 ), LONG2CHARS( 0x03FFF000 ), LONG2CHARS( 0x03FFF800 ),
- LONG2CHARS( 0x03FFFC00 ), LONG2CHARS( 0x03FFFE00 ), LONG2CHARS( 0x03FFFF00 ), LONG2CHARS( 0x03FFFF80 ),
- LONG2CHARS( 0x03FFFFC0 ), LONG2CHARS( 0x03FFFFE0 ), LONG2CHARS( 0x03FFFFF0 ), LONG2CHARS( 0x03FFFFF8 ),
- LONG2CHARS( 0x03FFFFFC ), LONG2CHARS( 0x03FFFFFE ), LONG2CHARS( 0x03FFFFFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x01000000 ), LONG2CHARS( 0x01800000 ), LONG2CHARS( 0x01C00000 ),
- LONG2CHARS( 0x01E00000 ), LONG2CHARS( 0x01F00000 ), LONG2CHARS( 0x01F80000 ), LONG2CHARS( 0x01FC0000 ),
- LONG2CHARS( 0x01FE0000 ), LONG2CHARS( 0x01FF0000 ), LONG2CHARS( 0x01FF8000 ), LONG2CHARS( 0x01FFC000 ),
- LONG2CHARS( 0x01FFE000 ), LONG2CHARS( 0x01FFF000 ), LONG2CHARS( 0x01FFF800 ), LONG2CHARS( 0x01FFFC00 ),
- LONG2CHARS( 0x01FFFE00 ), LONG2CHARS( 0x01FFFF00 ), LONG2CHARS( 0x01FFFF80 ), LONG2CHARS( 0x01FFFFC0 ),
- LONG2CHARS( 0x01FFFFE0 ), LONG2CHARS( 0x01FFFFF0 ), LONG2CHARS( 0x01FFFFF8 ), LONG2CHARS( 0x01FFFFFC ),
- LONG2CHARS( 0x01FFFFFE ), LONG2CHARS( 0x01FFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00800000 ), LONG2CHARS( 0x00C00000 ), LONG2CHARS( 0x00E00000 ),
- LONG2CHARS( 0x00F00000 ), LONG2CHARS( 0x00F80000 ), LONG2CHARS( 0x00FC0000 ), LONG2CHARS( 0x00FE0000 ),
- LONG2CHARS( 0x00FF0000 ), LONG2CHARS( 0x00FF8000 ), LONG2CHARS( 0x00FFC000 ), LONG2CHARS( 0x00FFE000 ),
- LONG2CHARS( 0x00FFF000 ), LONG2CHARS( 0x00FFF800 ), LONG2CHARS( 0x00FFFC00 ), LONG2CHARS( 0x00FFFE00 ),
- LONG2CHARS( 0x00FFFF00 ), LONG2CHARS( 0x00FFFF80 ), LONG2CHARS( 0x00FFFFC0 ), LONG2CHARS( 0x00FFFFE0 ),
- LONG2CHARS( 0x00FFFFF0 ), LONG2CHARS( 0x00FFFFF8 ), LONG2CHARS( 0x00FFFFFC ), LONG2CHARS( 0x00FFFFFE ),
- LONG2CHARS( 0x00FFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00400000 ), LONG2CHARS( 0x00600000 ), LONG2CHARS( 0x00700000 ),
- LONG2CHARS( 0x00780000 ), LONG2CHARS( 0x007C0000 ), LONG2CHARS( 0x007E0000 ), LONG2CHARS( 0x007F0000 ),
- LONG2CHARS( 0x007F8000 ), LONG2CHARS( 0x007FC000 ), LONG2CHARS( 0x007FE000 ), LONG2CHARS( 0x007FF000 ),
- LONG2CHARS( 0x007FF800 ), LONG2CHARS( 0x007FFC00 ), LONG2CHARS( 0x007FFE00 ), LONG2CHARS( 0x007FFF00 ),
- LONG2CHARS( 0x007FFF80 ), LONG2CHARS( 0x007FFFC0 ), LONG2CHARS( 0x007FFFE0 ), LONG2CHARS( 0x007FFFF0 ),
- LONG2CHARS( 0x007FFFF8 ), LONG2CHARS( 0x007FFFFC ), LONG2CHARS( 0x007FFFFE ), LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00200000 ), LONG2CHARS( 0x00300000 ), LONG2CHARS( 0x00380000 ),
- LONG2CHARS( 0x003C0000 ), LONG2CHARS( 0x003E0000 ), LONG2CHARS( 0x003F0000 ), LONG2CHARS( 0x003F8000 ),
- LONG2CHARS( 0x003FC000 ), LONG2CHARS( 0x003FE000 ), LONG2CHARS( 0x003FF000 ), LONG2CHARS( 0x003FF800 ),
- LONG2CHARS( 0x003FFC00 ), LONG2CHARS( 0x003FFE00 ), LONG2CHARS( 0x003FFF00 ), LONG2CHARS( 0x003FFF80 ),
- LONG2CHARS( 0x003FFFC0 ), LONG2CHARS( 0x003FFFE0 ), LONG2CHARS( 0x003FFFF0 ), LONG2CHARS( 0x003FFFF8 ),
- LONG2CHARS( 0x003FFFFC ), LONG2CHARS( 0x003FFFFE ), LONG2CHARS( 0x003FFFFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00100000 ), LONG2CHARS( 0x00180000 ), LONG2CHARS( 0x001C0000 ),
- LONG2CHARS( 0x001E0000 ), LONG2CHARS( 0x001F0000 ), LONG2CHARS( 0x001F8000 ), LONG2CHARS( 0x001FC000 ),
- LONG2CHARS( 0x001FE000 ), LONG2CHARS( 0x001FF000 ), LONG2CHARS( 0x001FF800 ), LONG2CHARS( 0x001FFC00 ),
- LONG2CHARS( 0x001FFE00 ), LONG2CHARS( 0x001FFF00 ), LONG2CHARS( 0x001FFF80 ), LONG2CHARS( 0x001FFFC0 ),
- LONG2CHARS( 0x001FFFE0 ), LONG2CHARS( 0x001FFFF0 ), LONG2CHARS( 0x001FFFF8 ), LONG2CHARS( 0x001FFFFC ),
- LONG2CHARS( 0x001FFFFE ), LONG2CHARS( 0x001FFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00080000 ), LONG2CHARS( 0x000C0000 ), LONG2CHARS( 0x000E0000 ),
- LONG2CHARS( 0x000F0000 ), LONG2CHARS( 0x000F8000 ), LONG2CHARS( 0x000FC000 ), LONG2CHARS( 0x000FE000 ),
- LONG2CHARS( 0x000FF000 ), LONG2CHARS( 0x000FF800 ), LONG2CHARS( 0x000FFC00 ), LONG2CHARS( 0x000FFE00 ),
- LONG2CHARS( 0x000FFF00 ), LONG2CHARS( 0x000FFF80 ), LONG2CHARS( 0x000FFFC0 ), LONG2CHARS( 0x000FFFE0 ),
- LONG2CHARS( 0x000FFFF0 ), LONG2CHARS( 0x000FFFF8 ), LONG2CHARS( 0x000FFFFC ), LONG2CHARS( 0x000FFFFE ),
- LONG2CHARS( 0x000FFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00040000 ), LONG2CHARS( 0x00060000 ), LONG2CHARS( 0x00070000 ),
- LONG2CHARS( 0x00078000 ), LONG2CHARS( 0x0007C000 ), LONG2CHARS( 0x0007E000 ), LONG2CHARS( 0x0007F000 ),
- LONG2CHARS( 0x0007F800 ), LONG2CHARS( 0x0007FC00 ), LONG2CHARS( 0x0007FE00 ), LONG2CHARS( 0x0007FF00 ),
- LONG2CHARS( 0x0007FF80 ), LONG2CHARS( 0x0007FFC0 ), LONG2CHARS( 0x0007FFE0 ), LONG2CHARS( 0x0007FFF0 ),
- LONG2CHARS( 0x0007FFF8 ), LONG2CHARS( 0x0007FFFC ), LONG2CHARS( 0x0007FFFE ), LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00020000 ), LONG2CHARS( 0x00030000 ), LONG2CHARS( 0x00038000 ),
- LONG2CHARS( 0x0003C000 ), LONG2CHARS( 0x0003E000 ), LONG2CHARS( 0x0003F000 ), LONG2CHARS( 0x0003F800 ),
- LONG2CHARS( 0x0003FC00 ), LONG2CHARS( 0x0003FE00 ), LONG2CHARS( 0x0003FF00 ), LONG2CHARS( 0x0003FF80 ),
- LONG2CHARS( 0x0003FFC0 ), LONG2CHARS( 0x0003FFE0 ), LONG2CHARS( 0x0003FFF0 ), LONG2CHARS( 0x0003FFF8 ),
- LONG2CHARS( 0x0003FFFC ), LONG2CHARS( 0x0003FFFE ), LONG2CHARS( 0x0003FFFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00010000 ), LONG2CHARS( 0x00018000 ), LONG2CHARS( 0x0001C000 ),
- LONG2CHARS( 0x0001E000 ), LONG2CHARS( 0x0001F000 ), LONG2CHARS( 0x0001F800 ), LONG2CHARS( 0x0001FC00 ),
- LONG2CHARS( 0x0001FE00 ), LONG2CHARS( 0x0001FF00 ), LONG2CHARS( 0x0001FF80 ), LONG2CHARS( 0x0001FFC0 ),
- LONG2CHARS( 0x0001FFE0 ), LONG2CHARS( 0x0001FFF0 ), LONG2CHARS( 0x0001FFF8 ), LONG2CHARS( 0x0001FFFC ),
- LONG2CHARS( 0x0001FFFE ), LONG2CHARS( 0x0001FFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00008000 ), LONG2CHARS( 0x0000C000 ), LONG2CHARS( 0x0000E000 ),
- LONG2CHARS( 0x0000F000 ), LONG2CHARS( 0x0000F800 ), LONG2CHARS( 0x0000FC00 ), LONG2CHARS( 0x0000FE00 ),
- LONG2CHARS( 0x0000FF00 ), LONG2CHARS( 0x0000FF80 ), LONG2CHARS( 0x0000FFC0 ), LONG2CHARS( 0x0000FFE0 ),
- LONG2CHARS( 0x0000FFF0 ), LONG2CHARS( 0x0000FFF8 ), LONG2CHARS( 0x0000FFFC ), LONG2CHARS( 0x0000FFFE ),
- LONG2CHARS( 0x0000FFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00004000 ), LONG2CHARS( 0x00006000 ), LONG2CHARS( 0x00007000 ),
- LONG2CHARS( 0x00007800 ), LONG2CHARS( 0x00007C00 ), LONG2CHARS( 0x00007E00 ), LONG2CHARS( 0x00007F00 ),
- LONG2CHARS( 0x00007F80 ), LONG2CHARS( 0x00007FC0 ), LONG2CHARS( 0x00007FE0 ), LONG2CHARS( 0x00007FF0 ),
- LONG2CHARS( 0x00007FF8 ), LONG2CHARS( 0x00007FFC ), LONG2CHARS( 0x00007FFE ), LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00002000 ), LONG2CHARS( 0x00003000 ), LONG2CHARS( 0x00003800 ),
- LONG2CHARS( 0x00003C00 ), LONG2CHARS( 0x00003E00 ), LONG2CHARS( 0x00003F00 ), LONG2CHARS( 0x00003F80 ),
- LONG2CHARS( 0x00003FC0 ), LONG2CHARS( 0x00003FE0 ), LONG2CHARS( 0x00003FF0 ), LONG2CHARS( 0x00003FF8 ),
- LONG2CHARS( 0x00003FFC ), LONG2CHARS( 0x00003FFE ), LONG2CHARS( 0x00003FFF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00001000 ), LONG2CHARS( 0x00001800 ), LONG2CHARS( 0x00001C00 ),
- LONG2CHARS( 0x00001E00 ), LONG2CHARS( 0x00001F00 ), LONG2CHARS( 0x00001F80 ), LONG2CHARS( 0x00001FC0 ),
- LONG2CHARS( 0x00001FE0 ), LONG2CHARS( 0x00001FF0 ), LONG2CHARS( 0x00001FF8 ), LONG2CHARS( 0x00001FFC ),
- LONG2CHARS( 0x00001FFE ), LONG2CHARS( 0x00001FFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000800 ), LONG2CHARS( 0x00000C00 ), LONG2CHARS( 0x00000E00 ),
- LONG2CHARS( 0x00000F00 ), LONG2CHARS( 0x00000F80 ), LONG2CHARS( 0x00000FC0 ), LONG2CHARS( 0x00000FE0 ),
- LONG2CHARS( 0x00000FF0 ), LONG2CHARS( 0x00000FF8 ), LONG2CHARS( 0x00000FFC ), LONG2CHARS( 0x00000FFE ),
- LONG2CHARS( 0x00000FFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000400 ), LONG2CHARS( 0x00000600 ), LONG2CHARS( 0x00000700 ),
- LONG2CHARS( 0x00000780 ), LONG2CHARS( 0x000007C0 ), LONG2CHARS( 0x000007E0 ), LONG2CHARS( 0x000007F0 ),
- LONG2CHARS( 0x000007F8 ), LONG2CHARS( 0x000007FC ), LONG2CHARS( 0x000007FE ), LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000200 ), LONG2CHARS( 0x00000300 ), LONG2CHARS( 0x00000380 ),
- LONG2CHARS( 0x000003C0 ), LONG2CHARS( 0x000003E0 ), LONG2CHARS( 0x000003F0 ), LONG2CHARS( 0x000003F8 ),
- LONG2CHARS( 0x000003FC ), LONG2CHARS( 0x000003FE ), LONG2CHARS( 0x000003FF ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000100 ), LONG2CHARS( 0x00000180 ), LONG2CHARS( 0x000001C0 ),
- LONG2CHARS( 0x000001E0 ), LONG2CHARS( 0x000001F0 ), LONG2CHARS( 0x000001F8 ), LONG2CHARS( 0x000001FC ),
- LONG2CHARS( 0x000001FE ), LONG2CHARS( 0x000001FF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000080 ), LONG2CHARS( 0x000000C0 ), LONG2CHARS( 0x000000E0 ),
- LONG2CHARS( 0x000000F0 ), LONG2CHARS( 0x000000F8 ), LONG2CHARS( 0x000000FC ), LONG2CHARS( 0x000000FE ),
- LONG2CHARS( 0x000000FF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000040 ), LONG2CHARS( 0x00000060 ), LONG2CHARS( 0x00000070 ),
- LONG2CHARS( 0x00000078 ), LONG2CHARS( 0x0000007C ), LONG2CHARS( 0x0000007E ), LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000020 ), LONG2CHARS( 0x00000030 ), LONG2CHARS( 0x00000038 ),
- LONG2CHARS( 0x0000003C ), LONG2CHARS( 0x0000003E ), LONG2CHARS( 0x0000003F ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000010 ), LONG2CHARS( 0x00000018 ), LONG2CHARS( 0x0000001C ),
- LONG2CHARS( 0x0000001E ), LONG2CHARS( 0x0000001F ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000008 ), LONG2CHARS( 0x0000000C ), LONG2CHARS( 0x0000000E ),
- LONG2CHARS( 0x0000000F ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000004 ), LONG2CHARS( 0x00000006 ), LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000002 ), LONG2CHARS( 0x00000003 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000001 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
-};
-
-#else /* LSBFirst */
-/* NOTE:
-the first element in starttab could be LONG2CHARS( 0xffffffff. making it 0
-lets us deal with a full first word in the middle loop ), rather
-than having to do the multiple reads and masks that we'd
-have to do if we thought it was partial.
-*/
-PixelType starttab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endtab[PPW+1] =
- {
- LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-
-
-#ifdef NEED_OLD_MFB_MASKS
-/* a hack ), for now, since the entries for 0 need to be all
- 1 bits ), not all zeros.
- this means the code DOES NOT WORK for segments of length
- 0 (which is only a problem in the horizontal line code.)
-*/
-PixelType startpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0xFFFFFFFE ),
- LONG2CHARS( 0xFFFFFFFC ),
- LONG2CHARS( 0xFFFFFFF8 ),
- LONG2CHARS( 0xFFFFFFF0 ),
- LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0xFFFFFFC0 ),
- LONG2CHARS( 0xFFFFFF80 ),
- LONG2CHARS( 0xFFFFFF00 ),
- LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0xFFFFFC00 ),
- LONG2CHARS( 0xFFFFF800 ),
- LONG2CHARS( 0xFFFFF000 ),
- LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0xFFFFC000 ),
- LONG2CHARS( 0xFFFF8000 ),
- LONG2CHARS( 0xFFFF0000 ),
- LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0xFFFC0000 ),
- LONG2CHARS( 0xFFF80000 ),
- LONG2CHARS( 0xFFF00000 ),
- LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0xFFC00000 ),
- LONG2CHARS( 0xFF800000 ),
- LONG2CHARS( 0xFF000000 ),
- LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0xFC000000 ),
- LONG2CHARS( 0xF8000000 ),
- LONG2CHARS( 0xF0000000 ),
- LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0xC0000000 ),
- LONG2CHARS( 0x80000000 ),
- LONG2CHARS( 0x00000000 )
- };
-
-PixelType endpartial[33] =
- {
- LONG2CHARS( 0xFFFFFFFF ),
- LONG2CHARS( 0x00000001 ),
- LONG2CHARS( 0x00000003 ),
- LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x0000000F ),
- LONG2CHARS( 0x0000001F ),
- LONG2CHARS( 0x0000003F ),
- LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x000000FF ),
- LONG2CHARS( 0x000001FF ),
- LONG2CHARS( 0x000003FF ),
- LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000FFF ),
- LONG2CHARS( 0x00001FFF ),
- LONG2CHARS( 0x00003FFF ),
- LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x0000FFFF ),
- LONG2CHARS( 0x0001FFFF ),
- LONG2CHARS( 0x0003FFFF ),
- LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x000FFFFF ),
- LONG2CHARS( 0x001FFFFF ),
- LONG2CHARS( 0x003FFFFF ),
- LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00FFFFFF ),
- LONG2CHARS( 0x01FFFFFF ),
- LONG2CHARS( 0x03FFFFFF ),
- LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ),
- LONG2CHARS( 0x1FFFFFFF ),
- LONG2CHARS( 0x3FFFFFFF ),
- LONG2CHARS( 0x7FFFFFFF ),
- LONG2CHARS( 0xFFFFFFFF )
- };
-#endif
-
-
-PixelType partmasks[PPW][PPW] = {
- {LONG2CHARS( 0xFFFFFFFF ), LONG2CHARS( 0x00000001 ), LONG2CHARS( 0x00000003 ), LONG2CHARS( 0x00000007 ),
- LONG2CHARS( 0x0000000F ), LONG2CHARS( 0x0000001F ), LONG2CHARS( 0x0000003F ), LONG2CHARS( 0x0000007F ),
- LONG2CHARS( 0x000000FF ), LONG2CHARS( 0x000001FF ), LONG2CHARS( 0x000003FF ), LONG2CHARS( 0x000007FF ),
- LONG2CHARS( 0x00000FFF ), LONG2CHARS( 0x00001FFF ), LONG2CHARS( 0x00003FFF ), LONG2CHARS( 0x00007FFF ),
- LONG2CHARS( 0x0000FFFF ), LONG2CHARS( 0x0001FFFF ), LONG2CHARS( 0x0003FFFF ), LONG2CHARS( 0x0007FFFF ),
- LONG2CHARS( 0x000FFFFF ), LONG2CHARS( 0x001FFFFF ), LONG2CHARS( 0x003FFFFF ), LONG2CHARS( 0x007FFFFF ),
- LONG2CHARS( 0x00FFFFFF ), LONG2CHARS( 0x01FFFFFF ), LONG2CHARS( 0x03FFFFFF ), LONG2CHARS( 0x07FFFFFF ),
- LONG2CHARS( 0x0FFFFFFF ), LONG2CHARS( 0x1FFFFFFF ), LONG2CHARS( 0x3FFFFFFF ), LONG2CHARS( 0x7FFFFFFF )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000002 ), LONG2CHARS( 0x00000006 ), LONG2CHARS( 0x0000000E ),
- LONG2CHARS( 0x0000001E ), LONG2CHARS( 0x0000003E ), LONG2CHARS( 0x0000007E ), LONG2CHARS( 0x000000FE ),
- LONG2CHARS( 0x000001FE ), LONG2CHARS( 0x000003FE ), LONG2CHARS( 0x000007FE ), LONG2CHARS( 0x00000FFE ),
- LONG2CHARS( 0x00001FFE ), LONG2CHARS( 0x00003FFE ), LONG2CHARS( 0x00007FFE ), LONG2CHARS( 0x0000FFFE ),
- LONG2CHARS( 0x0001FFFE ), LONG2CHARS( 0x0003FFFE ), LONG2CHARS( 0x0007FFFE ), LONG2CHARS( 0x000FFFFE ),
- LONG2CHARS( 0x001FFFFE ), LONG2CHARS( 0x003FFFFE ), LONG2CHARS( 0x007FFFFE ), LONG2CHARS( 0x00FFFFFE ),
- LONG2CHARS( 0x01FFFFFE ), LONG2CHARS( 0x03FFFFFE ), LONG2CHARS( 0x07FFFFFE ), LONG2CHARS( 0x0FFFFFFE ),
- LONG2CHARS( 0x1FFFFFFE ), LONG2CHARS( 0x3FFFFFFE ), LONG2CHARS( 0x7FFFFFFE ), LONG2CHARS( 0xFFFFFFFE )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000004 ), LONG2CHARS( 0x0000000C ), LONG2CHARS( 0x0000001C ),
- LONG2CHARS( 0x0000003C ), LONG2CHARS( 0x0000007C ), LONG2CHARS( 0x000000FC ), LONG2CHARS( 0x000001FC ),
- LONG2CHARS( 0x000003FC ), LONG2CHARS( 0x000007FC ), LONG2CHARS( 0x00000FFC ), LONG2CHARS( 0x00001FFC ),
- LONG2CHARS( 0x00003FFC ), LONG2CHARS( 0x00007FFC ), LONG2CHARS( 0x0000FFFC ), LONG2CHARS( 0x0001FFFC ),
- LONG2CHARS( 0x0003FFFC ), LONG2CHARS( 0x0007FFFC ), LONG2CHARS( 0x000FFFFC ), LONG2CHARS( 0x001FFFFC ),
- LONG2CHARS( 0x003FFFFC ), LONG2CHARS( 0x007FFFFC ), LONG2CHARS( 0x00FFFFFC ), LONG2CHARS( 0x01FFFFFC ),
- LONG2CHARS( 0x03FFFFFC ), LONG2CHARS( 0x07FFFFFC ), LONG2CHARS( 0x0FFFFFFC ), LONG2CHARS( 0x1FFFFFFC ),
- LONG2CHARS( 0x3FFFFFFC ), LONG2CHARS( 0x7FFFFFFC ), LONG2CHARS( 0xFFFFFFFC ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000008 ), LONG2CHARS( 0x00000018 ), LONG2CHARS( 0x00000038 ),
- LONG2CHARS( 0x00000078 ), LONG2CHARS( 0x000000F8 ), LONG2CHARS( 0x000001F8 ), LONG2CHARS( 0x000003F8 ),
- LONG2CHARS( 0x000007F8 ), LONG2CHARS( 0x00000FF8 ), LONG2CHARS( 0x00001FF8 ), LONG2CHARS( 0x00003FF8 ),
- LONG2CHARS( 0X00007FF8 ), LONG2CHARS( 0x0000FFF8 ), LONG2CHARS( 0x0001FFF8 ), LONG2CHARS( 0x0003FFF8 ),
- LONG2CHARS( 0X0007FFF8 ), LONG2CHARS( 0x000FFFF8 ), LONG2CHARS( 0x001FFFF8 ), LONG2CHARS( 0x003FFFF8 ),
- LONG2CHARS( 0X007FFFF8 ), LONG2CHARS( 0x00FFFFF8 ), LONG2CHARS( 0x01FFFFF8 ), LONG2CHARS( 0x03FFFFF8 ),
- LONG2CHARS( 0X07FFFFF8 ), LONG2CHARS( 0x0FFFFFF8 ), LONG2CHARS( 0x1FFFFFF8 ), LONG2CHARS( 0x3FFFFFF8 ),
- LONG2CHARS( 0X7FFFFFF8 ), LONG2CHARS( 0xFFFFFFF8 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000010 ), LONG2CHARS( 0x00000030 ), LONG2CHARS( 0x00000070 ),
- LONG2CHARS( 0X000000F0 ), LONG2CHARS( 0x000001F0 ), LONG2CHARS( 0x000003F0 ), LONG2CHARS( 0x000007F0 ),
- LONG2CHARS( 0X00000FF0 ), LONG2CHARS( 0x00001FF0 ), LONG2CHARS( 0x00003FF0 ), LONG2CHARS( 0x00007FF0 ),
- LONG2CHARS( 0X0000FFF0 ), LONG2CHARS( 0x0001FFF0 ), LONG2CHARS( 0x0003FFF0 ), LONG2CHARS( 0x0007FFF0 ),
- LONG2CHARS( 0X000FFFF0 ), LONG2CHARS( 0x001FFFF0 ), LONG2CHARS( 0x003FFFF0 ), LONG2CHARS( 0x007FFFF0 ),
- LONG2CHARS( 0X00FFFFF0 ), LONG2CHARS( 0x01FFFFF0 ), LONG2CHARS( 0x03FFFFF0 ), LONG2CHARS( 0x07FFFFF0 ),
- LONG2CHARS( 0X0FFFFFF0 ), LONG2CHARS( 0x1FFFFFF0 ), LONG2CHARS( 0x3FFFFFF0 ), LONG2CHARS( 0x7FFFFFF0 ),
- LONG2CHARS( 0XFFFFFFF0 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000020 ), LONG2CHARS( 0x00000060 ), LONG2CHARS( 0x000000E0 ),
- LONG2CHARS( 0X000001E0 ), LONG2CHARS( 0x000003E0 ), LONG2CHARS( 0x000007E0 ), LONG2CHARS( 0x00000FE0 ),
- LONG2CHARS( 0X00001FE0 ), LONG2CHARS( 0x00003FE0 ), LONG2CHARS( 0x00007FE0 ), LONG2CHARS( 0x0000FFE0 ),
- LONG2CHARS( 0X0001FFE0 ), LONG2CHARS( 0x0003FFE0 ), LONG2CHARS( 0x0007FFE0 ), LONG2CHARS( 0x000FFFE0 ),
- LONG2CHARS( 0X001FFFE0 ), LONG2CHARS( 0x003FFFE0 ), LONG2CHARS( 0x007FFFE0 ), LONG2CHARS( 0x00FFFFE0 ),
- LONG2CHARS( 0X01FFFFE0 ), LONG2CHARS( 0x03FFFFE0 ), LONG2CHARS( 0x07FFFFE0 ), LONG2CHARS( 0x0FFFFFE0 ),
- LONG2CHARS( 0X1FFFFFE0 ), LONG2CHARS( 0x3FFFFFE0 ), LONG2CHARS( 0x7FFFFFE0 ), LONG2CHARS( 0xFFFFFFE0 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000040 ), LONG2CHARS( 0x000000C0 ), LONG2CHARS( 0x000001C0 ),
- LONG2CHARS( 0X000003C0 ), LONG2CHARS( 0x000007C0 ), LONG2CHARS( 0x00000FC0 ), LONG2CHARS( 0x00001FC0 ),
- LONG2CHARS( 0X00003FC0 ), LONG2CHARS( 0x00007FC0 ), LONG2CHARS( 0x0000FFC0 ), LONG2CHARS( 0x0001FFC0 ),
- LONG2CHARS( 0X0003FFC0 ), LONG2CHARS( 0x0007FFC0 ), LONG2CHARS( 0x000FFFC0 ), LONG2CHARS( 0x001FFFC0 ),
- LONG2CHARS( 0X003FFFC0 ), LONG2CHARS( 0x007FFFC0 ), LONG2CHARS( 0x00FFFFC0 ), LONG2CHARS( 0x01FFFFC0 ),
- LONG2CHARS( 0X03FFFFC0 ), LONG2CHARS( 0x07FFFFC0 ), LONG2CHARS( 0x0FFFFFC0 ), LONG2CHARS( 0x1FFFFFC0 ),
- LONG2CHARS( 0X3FFFFFC0 ), LONG2CHARS( 0x7FFFFFC0 ), LONG2CHARS( 0xFFFFFFC0 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000080 ), LONG2CHARS( 0x00000180 ), LONG2CHARS( 0x00000380 ),
- LONG2CHARS( 0X00000780 ), LONG2CHARS( 0x00000F80 ), LONG2CHARS( 0x00001F80 ), LONG2CHARS( 0x00003F80 ),
- LONG2CHARS( 0X00007F80 ), LONG2CHARS( 0x0000FF80 ), LONG2CHARS( 0x0001FF80 ), LONG2CHARS( 0x0003FF80 ),
- LONG2CHARS( 0X0007FF80 ), LONG2CHARS( 0x000FFF80 ), LONG2CHARS( 0x001FFF80 ), LONG2CHARS( 0x003FFF80 ),
- LONG2CHARS( 0X007FFF80 ), LONG2CHARS( 0x00FFFF80 ), LONG2CHARS( 0x01FFFF80 ), LONG2CHARS( 0x03FFFF80 ),
- LONG2CHARS( 0X07FFFF80 ), LONG2CHARS( 0x0FFFFF80 ), LONG2CHARS( 0x1FFFFF80 ), LONG2CHARS( 0x3FFFFF80 ),
- LONG2CHARS( 0X7FFFFF80 ), LONG2CHARS( 0xFFFFFF80 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000100 ), LONG2CHARS( 0x00000300 ), LONG2CHARS( 0x00000700 ),
- LONG2CHARS( 0X00000F00 ), LONG2CHARS( 0x00001F00 ), LONG2CHARS( 0x00003F00 ), LONG2CHARS( 0x00007F00 ),
- LONG2CHARS( 0X0000FF00 ), LONG2CHARS( 0x0001FF00 ), LONG2CHARS( 0x0003FF00 ), LONG2CHARS( 0x0007FF00 ),
- LONG2CHARS( 0X000FFF00 ), LONG2CHARS( 0x001FFF00 ), LONG2CHARS( 0x003FFF00 ), LONG2CHARS( 0x007FFF00 ),
- LONG2CHARS( 0X00FFFF00 ), LONG2CHARS( 0x01FFFF00 ), LONG2CHARS( 0x03FFFF00 ), LONG2CHARS( 0x07FFFF00 ),
- LONG2CHARS( 0X0FFFFF00 ), LONG2CHARS( 0x1FFFFF00 ), LONG2CHARS( 0x3FFFFF00 ), LONG2CHARS( 0x7FFFFF00 ),
- LONG2CHARS( 0XFFFFFF00 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000200 ), LONG2CHARS( 0x00000600 ), LONG2CHARS( 0x00000E00 ),
- LONG2CHARS( 0X00001E00 ), LONG2CHARS( 0x00003E00 ), LONG2CHARS( 0x00007E00 ), LONG2CHARS( 0x0000FE00 ),
- LONG2CHARS( 0X0001FE00 ), LONG2CHARS( 0x0003FE00 ), LONG2CHARS( 0x0007FE00 ), LONG2CHARS( 0x000FFE00 ),
- LONG2CHARS( 0X001FFE00 ), LONG2CHARS( 0x003FFE00 ), LONG2CHARS( 0x007FFE00 ), LONG2CHARS( 0x00FFFE00 ),
- LONG2CHARS( 0X01FFFE00 ), LONG2CHARS( 0x03FFFE00 ), LONG2CHARS( 0x07FFFE00 ), LONG2CHARS( 0x0FFFFE00 ),
- LONG2CHARS( 0X1FFFFE00 ), LONG2CHARS( 0x3FFFFE00 ), LONG2CHARS( 0x7FFFFE00 ), LONG2CHARS( 0xFFFFFE00 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000400 ), LONG2CHARS( 0x00000C00 ), LONG2CHARS( 0x00001C00 ),
- LONG2CHARS( 0X00003C00 ), LONG2CHARS( 0x00007C00 ), LONG2CHARS( 0x0000FC00 ), LONG2CHARS( 0x0001FC00 ),
- LONG2CHARS( 0X0003FC00 ), LONG2CHARS( 0x0007FC00 ), LONG2CHARS( 0x000FFC00 ), LONG2CHARS( 0x001FFC00 ),
- LONG2CHARS( 0X003FFC00 ), LONG2CHARS( 0x007FFC00 ), LONG2CHARS( 0x00FFFC00 ), LONG2CHARS( 0x01FFFC00 ),
- LONG2CHARS( 0X03FFFC00 ), LONG2CHARS( 0x07FFFC00 ), LONG2CHARS( 0x0FFFFC00 ), LONG2CHARS( 0x1FFFFC00 ),
- LONG2CHARS( 0X3FFFFC00 ), LONG2CHARS( 0x7FFFFC00 ), LONG2CHARS( 0xFFFFFC00 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000800 ), LONG2CHARS( 0x00001800 ), LONG2CHARS( 0x00003800 ),
- LONG2CHARS( 0X00007800 ), LONG2CHARS( 0x0000F800 ), LONG2CHARS( 0x0001F800 ), LONG2CHARS( 0x0003F800 ),
- LONG2CHARS( 0X0007F800 ), LONG2CHARS( 0x000FF800 ), LONG2CHARS( 0x001FF800 ), LONG2CHARS( 0x003FF800 ),
- LONG2CHARS( 0X007FF800 ), LONG2CHARS( 0x00FFF800 ), LONG2CHARS( 0x01FFF800 ), LONG2CHARS( 0x03FFF800 ),
- LONG2CHARS( 0X07FFF800 ), LONG2CHARS( 0x0FFFF800 ), LONG2CHARS( 0x1FFFF800 ), LONG2CHARS( 0x3FFFF800 ),
- LONG2CHARS( 0X7FFFF800 ), LONG2CHARS( 0xFFFFF800 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00001000 ), LONG2CHARS( 0x00003000 ), LONG2CHARS( 0x00007000 ),
- LONG2CHARS( 0X0000F000 ), LONG2CHARS( 0x0001F000 ), LONG2CHARS( 0x0003F000 ), LONG2CHARS( 0x0007F000 ),
- LONG2CHARS( 0X000FF000 ), LONG2CHARS( 0x001FF000 ), LONG2CHARS( 0x003FF000 ), LONG2CHARS( 0x007FF000 ),
- LONG2CHARS( 0X00FFF000 ), LONG2CHARS( 0x01FFF000 ), LONG2CHARS( 0x03FFF000 ), LONG2CHARS( 0x07FFF000 ),
- LONG2CHARS( 0X0FFFF000 ), LONG2CHARS( 0x1FFFF000 ), LONG2CHARS( 0x3FFFF000 ), LONG2CHARS( 0x7FFFF000 ),
- LONG2CHARS( 0XFFFFF000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00002000 ), LONG2CHARS( 0x00006000 ), LONG2CHARS( 0x0000E000 ),
- LONG2CHARS( 0X0001E000 ), LONG2CHARS( 0x0003E000 ), LONG2CHARS( 0x0007E000 ), LONG2CHARS( 0x000FE000 ),
- LONG2CHARS( 0X001FE000 ), LONG2CHARS( 0x003FE000 ), LONG2CHARS( 0x007FE000 ), LONG2CHARS( 0x00FFE000 ),
- LONG2CHARS( 0X01FFE000 ), LONG2CHARS( 0x03FFE000 ), LONG2CHARS( 0x07FFE000 ), LONG2CHARS( 0x0FFFE000 ),
- LONG2CHARS( 0X1FFFE000 ), LONG2CHARS( 0x3FFFE000 ), LONG2CHARS( 0x7FFFE000 ), LONG2CHARS( 0xFFFFE000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00004000 ), LONG2CHARS( 0x0000C000 ), LONG2CHARS( 0x0001C000 ),
- LONG2CHARS( 0X0003C000 ), LONG2CHARS( 0x0007C000 ), LONG2CHARS( 0x000FC000 ), LONG2CHARS( 0x001FC000 ),
- LONG2CHARS( 0X003FC000 ), LONG2CHARS( 0x007FC000 ), LONG2CHARS( 0x00FFC000 ), LONG2CHARS( 0x01FFC000 ),
- LONG2CHARS( 0X03FFC000 ), LONG2CHARS( 0x07FFC000 ), LONG2CHARS( 0x0FFFC000 ), LONG2CHARS( 0x1FFFC000 ),
- LONG2CHARS( 0X3FFFC000 ), LONG2CHARS( 0x7FFFC000 ), LONG2CHARS( 0xFFFFC000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00008000 ), LONG2CHARS( 0x00018000 ), LONG2CHARS( 0x00038000 ),
- LONG2CHARS( 0X00078000 ), LONG2CHARS( 0x000F8000 ), LONG2CHARS( 0x001F8000 ), LONG2CHARS( 0x003F8000 ),
- LONG2CHARS( 0X007F8000 ), LONG2CHARS( 0x00FF8000 ), LONG2CHARS( 0x01FF8000 ), LONG2CHARS( 0x03FF8000 ),
- LONG2CHARS( 0X07FF8000 ), LONG2CHARS( 0x0FFF8000 ), LONG2CHARS( 0x1FFF8000 ), LONG2CHARS( 0x3FFF8000 ),
- LONG2CHARS( 0X7FFF8000 ), LONG2CHARS( 0xFFFF8000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00010000 ), LONG2CHARS( 0x00030000 ), LONG2CHARS( 0x00070000 ),
- LONG2CHARS( 0X000F0000 ), LONG2CHARS( 0x001F0000 ), LONG2CHARS( 0x003F0000 ), LONG2CHARS( 0x007F0000 ),
- LONG2CHARS( 0X00FF0000 ), LONG2CHARS( 0x01FF0000 ), LONG2CHARS( 0x03FF0000 ), LONG2CHARS( 0x07FF0000 ),
- LONG2CHARS( 0X0FFF0000 ), LONG2CHARS( 0x1FFF0000 ), LONG2CHARS( 0x3FFF0000 ), LONG2CHARS( 0x7FFF0000 ),
- LONG2CHARS( 0XFFFF0000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00020000 ), LONG2CHARS( 0x00060000 ), LONG2CHARS( 0x000E0000 ),
- LONG2CHARS( 0X001E0000 ), LONG2CHARS( 0x003E0000 ), LONG2CHARS( 0x007E0000 ), LONG2CHARS( 0x00FE0000 ),
- LONG2CHARS( 0X01FE0000 ), LONG2CHARS( 0x03FE0000 ), LONG2CHARS( 0x07FE0000 ), LONG2CHARS( 0x0FFE0000 ),
- LONG2CHARS( 0X1FFE0000 ), LONG2CHARS( 0x3FFE0000 ), LONG2CHARS( 0x7FFE0000 ), LONG2CHARS( 0xFFFE0000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00040000 ), LONG2CHARS( 0x000C0000 ), LONG2CHARS( 0x001C0000 ),
- LONG2CHARS( 0X003C0000 ), LONG2CHARS( 0x007C0000 ), LONG2CHARS( 0x00FC0000 ), LONG2CHARS( 0x01FC0000 ),
- LONG2CHARS( 0X03FC0000 ), LONG2CHARS( 0x07FC0000 ), LONG2CHARS( 0x0FFC0000 ), LONG2CHARS( 0x1FFC0000 ),
- LONG2CHARS( 0X3FFC0000 ), LONG2CHARS( 0x7FFC0000 ), LONG2CHARS( 0xFFFC0000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00080000 ), LONG2CHARS( 0x00180000 ), LONG2CHARS( 0x00380000 ),
- LONG2CHARS( 0X00780000 ), LONG2CHARS( 0x00F80000 ), LONG2CHARS( 0x01F80000 ), LONG2CHARS( 0x03F80000 ),
- LONG2CHARS( 0X07F80000 ), LONG2CHARS( 0x0FF80000 ), LONG2CHARS( 0x1FF80000 ), LONG2CHARS( 0x3FF80000 ),
- LONG2CHARS( 0X7FF80000 ), LONG2CHARS( 0xFFF80000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00100000 ), LONG2CHARS( 0x00300000 ), LONG2CHARS( 0x00700000 ),
- LONG2CHARS( 0X00F00000 ), LONG2CHARS( 0x01F00000 ), LONG2CHARS( 0x03F00000 ), LONG2CHARS( 0x07F00000 ),
- LONG2CHARS( 0X0FF00000 ), LONG2CHARS( 0x1FF00000 ), LONG2CHARS( 0x3FF00000 ), LONG2CHARS( 0x7FF00000 ),
- LONG2CHARS( 0XFFF00000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00200000 ), LONG2CHARS( 0x00600000 ), LONG2CHARS( 0x00E00000 ),
- LONG2CHARS( 0X01E00000 ), LONG2CHARS( 0x03E00000 ), LONG2CHARS( 0x07E00000 ), LONG2CHARS( 0x0FE00000 ),
- LONG2CHARS( 0X1FE00000 ), LONG2CHARS( 0x3FE00000 ), LONG2CHARS( 0x7FE00000 ), LONG2CHARS( 0xFFE00000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00400000 ), LONG2CHARS( 0x00C00000 ), LONG2CHARS( 0x01C00000 ),
- LONG2CHARS( 0X03C00000 ), LONG2CHARS( 0x07C00000 ), LONG2CHARS( 0x0FC00000 ), LONG2CHARS( 0x1FC00000 ),
- LONG2CHARS( 0X3FC00000 ), LONG2CHARS( 0x7FC00000 ), LONG2CHARS( 0xFFC00000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00800000 ), LONG2CHARS( 0x01800000 ), LONG2CHARS( 0x03800000 ),
- LONG2CHARS( 0X07800000 ), LONG2CHARS( 0x0F800000 ), LONG2CHARS( 0x1F800000 ), LONG2CHARS( 0x3F800000 ),
- LONG2CHARS( 0X7F800000 ), LONG2CHARS( 0xFF800000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x01000000 ), LONG2CHARS( 0x03000000 ), LONG2CHARS( 0x07000000 ),
- LONG2CHARS( 0X0F000000 ), LONG2CHARS( 0x1F000000 ), LONG2CHARS( 0x3F000000 ), LONG2CHARS( 0x7F000000 ),
- LONG2CHARS( 0XFF000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x02000000 ), LONG2CHARS( 0x06000000 ), LONG2CHARS( 0x0E000000 ),
- LONG2CHARS( 0X1E000000 ), LONG2CHARS( 0x3E000000 ), LONG2CHARS( 0x7E000000 ), LONG2CHARS( 0xFE000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x04000000 ), LONG2CHARS( 0x0C000000 ), LONG2CHARS( 0x1C000000 ),
- LONG2CHARS( 0X3C000000 ), LONG2CHARS( 0x7C000000 ), LONG2CHARS( 0xFC000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x08000000 ), LONG2CHARS( 0x18000000 ), LONG2CHARS( 0x38000000 ),
- LONG2CHARS( 0X78000000 ), LONG2CHARS( 0xF8000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x10000000 ), LONG2CHARS( 0x30000000 ), LONG2CHARS( 0x70000000 ),
- LONG2CHARS( 0XF0000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x20000000 ), LONG2CHARS( 0x60000000 ), LONG2CHARS( 0xE0000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x40000000 ), LONG2CHARS( 0xC0000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
- {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x80000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ),
- LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )},
-};
-
-#endif /* BITMAP_BIT_ORDER */
-
-/* used for masking bits in bresenham lines
- mask[n] is used to mask out all but bit n in a longword (n is a
-screen position).
- rmask[n] is used to mask out the single bit at position n (n
-is a screen posiotion.)
-*/
-
-#define _1_ ((PixelType)1)
-
-#if (BITMAP_BIT_ORDER == MSBFirst)
-PixelType mask[PPW] =
- {
- LONG2CHARS( _1_<<31 ), LONG2CHARS( 1<<30 ), LONG2CHARS( 1<<29 ),
- LONG2CHARS( 1<<28 ), LONG2CHARS( 1<<27 ), LONG2CHARS( 1<<26 ),
- LONG2CHARS( 1<<25 ), LONG2CHARS( 1<<24 ), LONG2CHARS( 1<<23 ),
- LONG2CHARS( 1<<22 ), LONG2CHARS( 1<<21 ), LONG2CHARS( 1<<20 ),
- LONG2CHARS( 1<<19 ), LONG2CHARS( 1<<18 ), LONG2CHARS( 1<<17 ),
- LONG2CHARS( 1<<16 ), LONG2CHARS( 1<<15 ), LONG2CHARS( 1<<14 ),
- LONG2CHARS( 1<<13 ), LONG2CHARS( 1<<12 ), LONG2CHARS( 1<<11 ),
- LONG2CHARS( 1<<10 ), LONG2CHARS( 1<<9 ), LONG2CHARS( 1<<8 ),
- LONG2CHARS( 1<<7 ), LONG2CHARS( 1<<6 ), LONG2CHARS( 1<<5 ),
- LONG2CHARS( 1<<4 ), LONG2CHARS( 1<<3 ), LONG2CHARS( 1<<2 ),
- LONG2CHARS( 1<<1 ), LONG2CHARS( 1<<0 )
- };
-
-PixelType rmask[] =
- {
- 0xffffffff ^ LONG2CHARS( _1_<<31 ), 0xffffffff ^ LONG2CHARS( 1<<30 ),
- 0xffffffff ^ LONG2CHARS( 1<<29 ), 0xffffffff ^ LONG2CHARS( 1<<28),
- 0xffffffff ^ LONG2CHARS( 1<<27 ), 0xffffffff ^ LONG2CHARS( 1<<26),
- 0xffffffff ^ LONG2CHARS( 1<<25 ), 0xffffffff ^ LONG2CHARS( 1<<24 ),
- 0xffffffff ^ LONG2CHARS( 1<<23 ), 0xffffffff ^ LONG2CHARS( 1<<22),
- 0xffffffff ^ LONG2CHARS( 1<<21 ), 0xffffffff ^ LONG2CHARS( 1<<20),
- 0xffffffff ^ LONG2CHARS( 1<<19 ), 0xffffffff ^ LONG2CHARS( 1<<18 ),
- 0xffffffff ^ LONG2CHARS( 1<<17 ), 0xffffffff ^ LONG2CHARS( 1<<16),
- 0xffffffff ^ LONG2CHARS( 1<<15 ), 0xffffffff ^ LONG2CHARS( 1<<14),
- 0xffffffff ^ LONG2CHARS( 1<<13 ), 0xffffffff ^ LONG2CHARS( 1<<12 ),
- 0xffffffff ^ LONG2CHARS( 1<<11 ), 0xffffffff ^ LONG2CHARS( 1<<10),
- 0xffffffff ^ LONG2CHARS( 1<<9 ), 0xffffffff ^ LONG2CHARS( 1<<8),
- 0xffffffff ^ LONG2CHARS( 1<<7 ), 0xffffffff ^ LONG2CHARS( 1<<6),
- 0xffffffff ^ LONG2CHARS( 1<<5 ), 0xffffffff ^ LONG2CHARS( 1<<4),
- 0xffffffff ^ LONG2CHARS( 1<<3 ), 0xffffffff ^ LONG2CHARS( 1<<2),
- 0xffffffff ^ LONG2CHARS( 1<<1 ), 0xffffffff ^ LONG2CHARS( 1<<0)
- };
-#else /* LSBFirst */
-PixelType mask[] =
- {
- LONG2CHARS( 1<<0 ), LONG2CHARS( 1<<1 ), LONG2CHARS( 1<<2),
- LONG2CHARS( 1<<3 ), LONG2CHARS( 1<<4 ), LONG2CHARS( 1<<5),
- LONG2CHARS( 1<<6 ), LONG2CHARS( 1<<7 ), LONG2CHARS( 1<<8),
- LONG2CHARS( 1<<9 ), LONG2CHARS( 1<<10 ), LONG2CHARS( 1<<11),
- LONG2CHARS( 1<<12 ), LONG2CHARS( 1<<13 ), LONG2CHARS( 1<<14),
- LONG2CHARS( 1<<15 ), LONG2CHARS( 1<<16 ), LONG2CHARS( 1<<17),
- LONG2CHARS( 1<<18 ), LONG2CHARS( 1<<19 ), LONG2CHARS( 1<<20),
- LONG2CHARS( 1<<21 ), LONG2CHARS( 1<<22 ), LONG2CHARS( 1<<23),
- LONG2CHARS( 1<<24 ), LONG2CHARS( 1<<25 ), LONG2CHARS( 1<<26),
- LONG2CHARS( 1<<27 ), LONG2CHARS( 1<<28 ), LONG2CHARS( 1<<29),
- LONG2CHARS( 1<<30 ), LONG2CHARS( _1_<<31 )
- };
-PixelType rmask[] =
- {
- 0xffffffff ^ LONG2CHARS( 1<<0), 0xffffffff ^ LONG2CHARS( 1<<1),
- 0xffffffff ^ LONG2CHARS( 1<<2), 0xffffffff ^ LONG2CHARS( 1<<3),
- 0xffffffff ^ LONG2CHARS( 1<<4), 0xffffffff ^ LONG2CHARS( 1<<5),
- 0xffffffff ^ LONG2CHARS( 1<<6), 0xffffffff ^ LONG2CHARS( 1<<7),
- 0xffffffff ^ LONG2CHARS( 1<<8), 0xffffffff ^ LONG2CHARS( 1<<9),
- 0xffffffff ^ LONG2CHARS( 1<<10), 0xffffffff ^ LONG2CHARS( 1<<11),
- 0xffffffff ^ LONG2CHARS( 1<<12), 0xffffffff ^ LONG2CHARS( 1<<13),
- 0xffffffff ^ LONG2CHARS( 1<<14), 0xffffffff ^ LONG2CHARS( 1<<15),
- 0xffffffff ^ LONG2CHARS( 1<<16), 0xffffffff ^ LONG2CHARS( 1<<17),
- 0xffffffff ^ LONG2CHARS( 1<<18), 0xffffffff ^ LONG2CHARS( 1<<19),
- 0xffffffff ^ LONG2CHARS( 1<<20), 0xffffffff ^ LONG2CHARS( 1<<21),
- 0xffffffff ^ LONG2CHARS( 1<<22), 0xffffffff ^ LONG2CHARS( 1<<23),
- 0xffffffff ^ LONG2CHARS( 1<<24), 0xffffffff ^ LONG2CHARS( 1<<25),
- 0xffffffff ^ LONG2CHARS( 1<<26), 0xffffffff ^ LONG2CHARS( 1<<27),
- 0xffffffff ^ LONG2CHARS( 1<<28), 0xffffffff ^ LONG2CHARS( 1<<29),
- 0xffffffff ^ LONG2CHARS( 1<<30), 0xffffffff ^ LONG2CHARS( _1_<<31)
- };
-#endif /* BITMAP_BIT_ORDER */
-
-#undef _1_
-
-PixelType mfbGetmask(int i) { return mask[i]; }
-PixelType mfbGetrmask(int i) { return rmask[i]; }
-PixelType mfbGetstarttab(int i) { return starttab[i]; }
-PixelType mfbGetendtab(int i) { return endtab[i]; }
-PixelType mfbGetpartmasks(int i, int j) { return partmasks[i][j]; }
-
-/*
- * Merge raster ops for full src + dest + plane mask
- *
- * More clever usage of boolean arithmetic to reduce the
- * cost of complex raster ops. This is for bitblt and
- * reduces all 16 raster ops + planemask to a single
- * expression:
- *
- * dst = dst & (src & ca1 ^ cx1) ^ (src & ca2 ^ cx2)
- *
- * The array below contains the values for c?? for each
- * raster op. Those values are further modified by
- * planemasks on multi-plane displays as follows:
- *
- * ca1 &= pm;
- * cx1 |= ~pm;
- * ca2 &= pm;
- * cx2 &= pm;
- */
-
-#include "mergerop.h"
-
-#define O 0
-#define I ~((MfbBits)0)
-
-mergeRopRec mergeRopBits[16] = {
-{ O,O,O,O, }, /* clear 0x0 0 */
-{ I,O,O,O, }, /* and 0x1 src AND dst */
-{ I,O,I,O, }, /* andReverse 0x2 src AND NOT dst */
-{ O,O,I,O, }, /* copy 0x3 src */
-{ I,I,O,O, }, /* andInverted 0x4 NOT src AND dst */
-{ O,I,O,O, }, /* noop 0x5 dst */
-{ O,I,I,O, }, /* xor 0x6 src XOR dst */
-{ I,I,I,O, }, /* or 0x7 src OR dst */
-{ I,I,I,I, }, /* nor 0x8 NOT src AND NOT dst */
-{ O,I,I,I, }, /* equiv 0x9 NOT src XOR dst */
-{ O,I,O,I, }, /* invert 0xa NOT dst */
-{ I,I,O,I, }, /* orReverse 0xb src OR NOT dst */
-{ O,O,I,I, }, /* copyInverted 0xc NOT src */
-{ I,O,I,I, }, /* orInverted 0xd NOT src OR dst */
-{ I,O,O,I, }, /* nand 0xe NOT src OR NOT dst */
-{ O,O,O,I, }, /* set 0xf 1 */
-};
-
-mergeRopPtr mergeGetRopBits(int i) {
- return &mergeRopBits[i];
-}
-
-#undef O
-#undef I
diff --git a/xorg-server/mfb/maskbits.h b/xorg-server/mfb/maskbits.h
deleted file mode 100644
index 36a611fe7..000000000
--- a/xorg-server/mfb/maskbits.h
+++ /dev/null
@@ -1,689 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.1, 1/24/89 */
-/***********************************************************
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-
-/* the following notes use the following conventions:
-SCREEN LEFT SCREEN RIGHT
-in this file and maskbits.c, left and right refer to screen coordinates,
-NOT bit numbering in registers.
-
-starttab[n]
- bits[0,n-1] = 0 bits[n,PLST] = 1
-endtab[n] =
- bits[0,n-1] = 1 bits[n,PLST] = 0
-
-startpartial[], endpartial[]
- these are used as accelerators for doing putbits and masking out
-bits that are all contained between longword boudaries. the extra
-256 bytes of data seems a small price to pay -- code is smaller,
-and narrow things (e.g. window borders) go faster.
-
-the names may seem misleading; they are derived not from which end
-of the word the bits are turned on, but at which end of a scanline
-the table tends to be used.
-
-look at the tables and macros to understand boundary conditions.
-(careful readers will note that starttab[n] = ~endtab[n] for n != 0)
-
------------------------------------------------------------------------
-these two macros depend on the screen's bit ordering.
-in both of them x is a screen position. they are used to
-combine bits collected from multiple longwords into a
-single destination longword, and to unpack a single
-source longword into multiple destinations.
-
-SCRLEFT(dst, x)
- takes dst[x, PPW] and moves them to dst[0, PPW-x]
- the contents of the rest of dst are 0.
- this is a right shift on LSBFirst (forward-thinking)
- machines like the VAX, and left shift on MSBFirst
- (backwards) machines like the 680x0 and pc/rt.
-
-SCRRIGHT(dst, x)
- takes dst[0,x] and moves them to dst[PPW-x, PPW]
- the contents of the rest of dst are 0.
- this is a left shift on LSBFirst, right shift
- on MSBFirst.
-
-
-the remaining macros are cpu-independent; all bit order dependencies
-are built into the tables and the two macros above.
-
-maskbits(x, w, startmask, endmask, nlw)
- for a span of width w starting at position x, returns
-a mask for ragged bits at start, mask for ragged bits at end,
-and the number of whole longwords between the ends.
-
-maskpartialbits(x, w, mask)
- works like maskbits(), except all the bits are in the
- same longword (i.e. (x&PIM + w) <= PPW)
-
-maskPPWbits(x, w, startmask, endmask, nlw)
- as maskbits, but does not calculate nlw. it is used by
- mfbGlyphBlt to put down glyphs <= PPW bits wide.
-
--------------------------------------------------------------------
-
-NOTE
- any pointers passed to the following 4 macros are
- guranteed to be PPW-bit aligned.
- The only non-PPW-bit-aligned references ever made are
- to font glyphs, and those are made with getleftbits()
- and getshiftedleftbits (qq.v.)
-
- For 64-bit server, it is assumed that we will never have font padding
- of more than 4 bytes. The code uses int's to access the fonts
- intead of longs.
-
-getbits(psrc, x, w, dst)
- starting at position x in psrc (x < PPW), collect w
- bits and put them in the screen left portion of dst.
- psrc is a longword pointer. this may span longword boundaries.
- it special-cases fetching all w bits from one longword.
-
- +--------+--------+ +--------+
- | | m |n| | ==> | m |n| |
- +--------+--------+ +--------+
- x x+w 0 w
- psrc psrc+1 dst
- m = PPW - x
- n = w - m
-
- implementation:
- get m bits, move to screen-left of dst, zeroing rest of dst;
- get n bits from next word, move screen-right by m, zeroing
- lower m bits of word.
- OR the two things together.
-
-putbits(src, x, w, pdst)
- starting at position x in pdst, put down the screen-leftmost
- w bits of src. pdst is a longword pointer. this may
- span longword boundaries.
- it special-cases putting all w bits into the same longword.
-
- +--------+ +--------+--------+
- | m |n| | ==> | | m |n| |
- +--------+ +--------+--------+
- 0 w x x+w
- dst pdst pdst+1
- m = PPW - x
- n = w - m
-
- implementation:
- get m bits, shift screen-right by x, zero screen-leftmost x
- bits; zero rightmost m bits of *pdst and OR in stuff
- from before the semicolon.
- shift src screen-left by m, zero bits n-PPW;
- zero leftmost n bits of *(pdst+1) and OR in the
- stuff from before the semicolon.
-
-putbitsrop(src, x, w, pdst, ROP)
- like putbits but calls DoRop with the rasterop ROP (see mfb.h for
- DoRop)
-
-putbitsrrop(src, x, w, pdst, ROP)
- like putbits but calls DoRRop with the reduced rasterop ROP
- (see mfb.h for DoRRop)
-
------------------------------------------------------------------------
- The two macros below are used only for getting bits from glyphs
-in fonts, and glyphs in fonts are gotten only with the following two
-mcros.
- You should tune these macros toyour font format and cpu
-byte ordering.
-
-NOTE
-getleftbits(psrc, w, dst)
- get the leftmost w (w<=32) bits from *psrc and put them
- in dst. this is used by the mfbGlyphBlt code for glyphs
- <=PPW bits wide.
- psrc is declared (unsigned char *)
-
- psrc is NOT guaranteed to be PPW-bit aligned. on many
- machines this will cause problems, so there are several
- versions of this macro.
-
- this macro is called ONLY for getting bits from font glyphs,
- and depends on the server-natural font padding.
-
- for blazing text performance, you want this macro
- to touch memory as infrequently as possible (e.g.
- fetch longwords) and as efficiently as possible
- (e.g. don't fetch misaligned longwords)
-
-getshiftedleftbits(psrc, offset, w, dst)
- used by the font code; like getleftbits, but shifts the
- bits SCRLEFT by offset.
- this is implemented portably, calling getleftbits()
- and SCRLEFT().
- psrc is declared (unsigned char *).
-*/
-
-/* to match CFB and allow algorithm sharing ...
- * name mfb32 mfb64 explanation
- * ---- ------ ----- -----------
- * PGSZ 32 64 pixel group size (in bits; same as PPW for mfb)
- * PGSZB 4 8 pixel group size (in bytes)
- * PPW 32 64 pixels per word (pixels per pixel group)
- * PLST 31 63 index of last pixel in a word (should be PPW-1)
- * PIM 0x1f 0x3f pixel index mask (index within a pixel group)
- * PWSH 5 6 pixel-to-word shift (should be log2(PPW))
- *
- * The MFB_ versions are here so that cfb can include maskbits.h to get
- * the bitmap constants without conflicting with its own P* constants.
- *
- * Keith Packard (keithp@suse.com):
- * Note mfb64 is no longer supported; it requires DIX support
- * for realigning images which costs too much
- */
-
-/* warning: PixelType definition duplicated in mfb.h */
-#ifndef PixelType
-#define PixelType CARD32
-#endif /* PixelType */
-#ifndef MfbBits
-#define MfbBits CARD32
-#endif
-
-#define MFB_PGSZB 4
-#define MFB_PPW (MFB_PGSZB<<3) /* assuming 8 bits per byte */
-#define MFB_PGSZ MFB_PPW
-#define MFB_PLST (MFB_PPW-1)
-#define MFB_PIM MFB_PLST
-
-/* set PWSH = log2(PPW) using brute force */
-
-#if MFB_PPW == 32
-#define MFB_PWSH 5
-#endif /* MFB_PPW == 32 */
-
-/* XXX don't use these five */
-extern PixelType starttab[];
-extern PixelType endtab[];
-extern PixelType partmasks[MFB_PPW][MFB_PPW];
-extern PixelType rmask[];
-extern PixelType mask[];
-/* XXX use these five */
-extern PixelType mfbGetstarttab(int);
-extern PixelType mfbGetendtab(int);
-extern PixelType mfbGetpartmasks(int, int);
-extern PixelType mfbGetrmask(int);
-extern PixelType mfbGetmask(int);
-
-#ifndef MFB_CONSTS_ONLY
-
-#define PGSZB MFB_PGSZB
-#define PPW MFB_PPW
-#define PGSZ MFB_PGSZ
-#define PLST MFB_PLST
-#define PIM MFB_PIM
-#define PWSH MFB_PWSH
-
-#define BitLeft(b,s) SCRLEFT(b,s)
-#define BitRight(b,s) SCRRIGHT(b,s)
-
-#if 1
-#define LONG2CHARSSAMEORDER(x) ((MfbBits)(x))
-#define LONG2CHARSDIFFORDER( x ) ( ( ( ( x ) & (MfbBits)0x000000FF ) << 0x18 ) \
- | ( ( ( x ) & (MfbBits)0x0000FF00 ) << 0x08 ) \
- | ( ( ( x ) & (MfbBits)0x00FF0000 ) >> 0x08 ) \
- | ( ( ( x ) & (MfbBits)0xFF000000 ) >> 0x18 ) )
-#endif /* XFree86Server */
-
-#if (BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER)
-#define LONG2CHARS(x) ((MfbBits)(x))
-#else
-/*
- * the unsigned case below is for compilers like
- * the Danbury C and i386cc
- */
-#define LONG2CHARS( x ) ( ( ( ( x ) & (MfbBits)0x000000FF ) << 0x18 ) \
- | ( ( ( x ) & (MfbBits)0x0000FF00 ) << 0x08 ) \
- | ( ( ( x ) & (MfbBits)0x00FF0000 ) >> 0x08 ) \
- | ( ( ( x ) & (MfbBits)0xFF000000 ) >> 0x18 ) )
-#endif /* BITMAP_BIT_ORDER */
-
-#ifdef STRICT_ANSI_SHIFT
-#define SHL(x,y) ((y) >= PPW ? 0 : LONG2CHARS(LONG2CHARS(x) << (y)))
-#define SHR(x,y) ((y) >= PPW ? 0 : LONG2CHARS(LONG2CHARS(x) >> (y)))
-#else
-#define SHL(x,y) LONG2CHARS(LONG2CHARS(x) << (y))
-#define SHR(x,y) LONG2CHARS(LONG2CHARS(x) >> (y))
-#endif
-
-#if (BITMAP_BIT_ORDER == MSBFirst) /* pc/rt, 680x0 */
-#define SCRLEFT(lw, n) SHL((PixelType)(lw),(n))
-#define SCRRIGHT(lw, n) SHR((PixelType)(lw),(n))
-#else /* vax, intel */
-#define SCRLEFT(lw, n) SHR((PixelType)(lw),(n))
-#define SCRRIGHT(lw, n) SHL((PixelType)(lw),(n))
-#endif
-
-#define DoRRop(alu, src, dst) \
-(((alu) == RROP_BLACK) ? ((dst) & ~(src)) : \
- ((alu) == RROP_WHITE) ? ((dst) | (src)) : \
- ((alu) == RROP_INVERT) ? ((dst) ^ (src)) : \
- (dst))
-
-/* A generalized form of a x4 Duff's Device */
-#define Duff(counter, block) { \
- while (counter >= 4) {\
- { block; } \
- { block; } \
- { block; } \
- { block; } \
- counter -= 4; \
- } \
- switch (counter & 3) { \
- case 3: { block; } \
- case 2: { block; } \
- case 1: { block; } \
- case 0: \
- counter = 0; \
- } \
-}
-
-#define maskbits(x, w, startmask, endmask, nlw) \
- startmask = mfbGetstarttab((x) & PIM); \
- endmask = mfbGetendtab(((x)+(w)) & PIM); \
- if (startmask) \
- nlw = (((w) - (PPW - ((x) & PIM))) >> PWSH); \
- else \
- nlw = (w) >> PWSH;
-
-#define maskpartialbits(x, w, mask) \
- mask = mfbGetpartmasks((x) & PIM, (w) & PIM);
-
-#define maskPPWbits(x, w, startmask, endmask) \
- startmask = mfbGetstarttab((x) & PIM); \
- endmask = mfbGetendtab(((x)+(w)) & PIM);
-
-#ifdef __GNUC__ /* XXX don't want for Alpha? */
-#ifdef vax
-#define FASTGETBITS(psrc,x,w,dst) \
- __asm ("extzv %1,%2,%3,%0" \
- : "=g" (dst) \
- : "g" (x), "g" (w), "m" (*(char *)(psrc)))
-#define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst)
-
-#define FASTPUTBITS(src, x, w, pdst) \
- __asm ("insv %3,%1,%2,%0" \
- : "=m" (*(char *)(pdst)) \
- : "g" (x), "g" (w), "g" (src))
-#define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst)
-#endif /* vax */
-#ifdef mc68020
-#define FASTGETBITS(psrc, x, w, dst) \
- __asm ("bfextu %3{%1:%2},%0" \
- : "=d" (dst) : "di" (x), "di" (w), "o" (*(char *)(psrc)))
-
-#define getbits(psrc,x,w,dst) \
-{ \
- FASTGETBITS(psrc, x, w, dst);\
- dst = SHL(dst,(32-(w))); \
-}
-
-#define FASTPUTBITS(src, x, w, pdst) \
- __asm ("bfins %3,%0{%1:%2}" \
- : "=o" (*(char *)(pdst)) \
- : "di" (x), "di" (w), "d" (src), "0" (*(char *) (pdst)))
-
-#define putbits(src, x, w, pdst) FASTPUTBITS(SHR((src),32-(w)), x, w, pdst)
-
-#endif /* mc68020 */
-#endif /* __GNUC__ */
-
-/* The following flag is used to override a bugfix for sun 3/60+CG4 machines,
- */
-
-/* We don't need to be careful about this unless we're dealing with sun3's
- * We will default its usage for those who do not know anything, but will
- * override its effect if the machine doesn't look like a sun3
- */
-#if !defined(mc68020) || !defined(sun)
-#define NO_3_60_CG4
-#endif
-
-/* This is gross. We want to #define u_putbits as something which can be used
- * in the case of the 3/60+CG4, but if we use /bin/cc or are on another
- * machine type, we want nothing to do with u_putbits. What a hastle. Here
- * I used slo_putbits as something which either u_putbits or putbits could be
- * defined as.
- *
- * putbits gets it iff it is not already defined with FASTPUTBITS above.
- * u_putbits gets it if we have FASTPUTBITS (putbits) from above and have not
- * overridden the NO_3_60_CG4 flag.
- */
-
-#define slo_putbits(src, x, w, pdst) \
-{ \
- register int n = (x)+(w)-PPW; \
- \
- if (n <= 0) \
- { \
- register PixelType tmpmask; \
- maskpartialbits((x), (w), tmpmask); \
- *(pdst) = (*(pdst) & ~tmpmask) | \
- (SCRRIGHT(src, x) & tmpmask); \
- } \
- else \
- { \
- register int d = PPW-(x); \
- *(pdst) = (*(pdst) & mfbGetendtab(x)) | (SCRRIGHT((src), x)); \
- (pdst)[1] = ((pdst)[1] & mfbGetstarttab(n)) | \
- (SCRLEFT(src, d) & mfbGetendtab(n)); \
- } \
-}
-
-#if defined(putbits) && !defined(NO_3_60_CG4)
-#define u_putbits(src, x, w, pdst) slo_putbits(src, x, w, pdst)
-#else
-#define u_putbits(src, x, w, pdst) putbits(src, x, w, pdst)
-#endif
-
-#if !defined(putbits)
-#define putbits(src, x, w, pdst) slo_putbits(src, x, w, pdst)
-#endif
-
-/* Now if we have not gotten any really good bitfield macros, try some
- * moderately fast macros. Alas, I don't know how to do asm instructions
- * without gcc.
- */
-
-#ifndef getbits
-#define getbits(psrc, x, w, dst) \
-{ \
- dst = SCRLEFT(*(psrc), (x)); \
- if ( ((x) + (w)) > PPW) \
- dst |= (SCRRIGHT(*((psrc)+1), PPW-(x))); \
-}
-#endif
-
-/* We have to special-case putbitsrop because of 3/60+CG4 combos
- */
-
-#define u_putbitsrop(src, x, w, pdst, rop) \
-{\
- register PixelType t1, t2; \
- register int n = (x)+(w)-PPW; \
- \
- t1 = SCRRIGHT((src), (x)); \
- DoRop(t2, rop, t1, *(pdst)); \
- \
- if (n <= 0) \
- { \
- register PixelType tmpmask; \
- \
- maskpartialbits((x), (w), tmpmask); \
- *(pdst) = (*(pdst) & ~tmpmask) | (t2 & tmpmask); \
- } \
- else \
- { \
- int m = PPW-(x); \
- *(pdst) = (*(pdst) & mfbGetendtab(x)) | (t2 & mfbGetstarttab(x)); \
- t1 = SCRLEFT((src), m); \
- DoRop(t2, rop, t1, (pdst)[1]); \
- (pdst)[1] = ((pdst)[1] & mfbGetstarttab(n)) | (t2 & mfbGetendtab(n)); \
- } \
-}
-
-/* If our getbits and putbits are FAST enough,
- * do this brute force, it's faster
- */
-
-#if defined(FASTPUTBITS) && defined(FASTGETBITS) && defined(NO_3_60_CG4)
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define putbitsrop(src, x, w, pdst, rop) \
-{ \
- register PixelType _tmp, _tmp2; \
- FASTGETBITS(pdst, x, w, _tmp); \
- _tmp2 = SCRRIGHT(src, PPW-(w)); \
- DoRop(_tmp, rop, _tmp2, _tmp) \
- FASTPUTBITS(_tmp, x, w, pdst); \
-}
-#define putbitsrrop(src, x, w, pdst, rop) \
-{ \
- register PixelType _tmp, _tmp2; \
- \
- FASTGETBITS(pdst, x, w, _tmp); \
- _tmp2 = SCRRIGHT(src, PPW-(w)); \
- _tmp= DoRRop(rop, _tmp2, _tmp); \
- FASTPUTBITS(_tmp, x, w, pdst); \
-}
-#undef u_putbitsrop
-#else
-#define putbitsrop(src, x, w, pdst, rop) \
-{ \
- register PixelType _tmp; \
- FASTGETBITS(pdst, x, w, _tmp); \
- DoRop(_tmp, rop, src, _tmp) \
- FASTPUTBITS(_tmp, x, w, pdst); \
-}
-#define putbitsrrop(src, x, w, pdst, rop) \
-{ \
- register PixelType _tmp; \
- \
- FASTGETBITS(pdst, x, w, _tmp); \
- _tmp= DoRRop(rop, src, _tmp); \
- FASTPUTBITS(_tmp, x, w, pdst); \
-}
-#undef u_putbitsrop
-#endif
-#endif
-
-#ifndef putbitsrop
-#define putbitsrop(src, x, w, pdst, rop) u_putbitsrop(src, x, w, pdst, rop)
-#endif
-
-#ifndef putbitsrrop
-#define putbitsrrop(src, x, w, pdst, rop) \
-{\
- register PixelType t1, t2; \
- register int n = (x)+(w)-PPW; \
- \
- t1 = SCRRIGHT((src), (x)); \
- t2 = DoRRop(rop, t1, *(pdst)); \
- \
- if (n <= 0) \
- { \
- register PixelType tmpmask; \
- \
- maskpartialbits((x), (w), tmpmask); \
- *(pdst) = (*(pdst) & ~tmpmask) | (t2 & tmpmask); \
- } \
- else \
- { \
- int m = PPW-(x); \
- *(pdst) = (*(pdst) & mfbGetendtab(x)) | (t2 & mfbGetstarttab(x)); \
- t1 = SCRLEFT((src), m); \
- t2 = DoRRop(rop, t1, (pdst)[1]); \
- (pdst)[1] = ((pdst)[1] & mfbGetstarttab(n)) | (t2 & mfbGetendtab(n)); \
- } \
-}
-#endif
-
-#if GETLEFTBITS_ALIGNMENT == 1
-#define getleftbits(psrc, w, dst) dst = *((CARD32 *)(pointer) psrc)
-#endif /* GETLEFTBITS_ALIGNMENT == 1 */
-
-#if GETLEFTBITS_ALIGNMENT == 2
-#define getleftbits(psrc, w, dst) \
- { \
- if ( ((int)(psrc)) & 0x01 ) \
- getbits( ((CARD32 *)(((char *)(psrc))-1)), 8, (w), (dst) ); \
- else \
- getbits(psrc, 0, w, dst); \
- }
-#endif /* GETLEFTBITS_ALIGNMENT == 2 */
-
-#if GETLEFTBITS_ALIGNMENT == 4
-#define getleftbits(psrc, w, dst) \
- { \
- int off, off_b; \
- off_b = (off = ( ((int)(psrc)) & 0x03)) << 3; \
- getbits( \
- (CARD32 *)( ((char *)(psrc)) - off), \
- (off_b), (w), (dst) \
- ); \
- }
-#endif /* GETLEFTBITS_ALIGNMENT == 4 */
-
-
-#define getshiftedleftbits(psrc, offset, w, dst) \
- getleftbits((psrc), (w), (dst)); \
- dst = SCRLEFT((dst), (offset));
-
-/* FASTGETBITS and FASTPUTBITS are not necessarily correct implementations of
- * getbits and putbits, but they work if used together.
- *
- * On a MSBFirst machine, a cpu bitfield extract instruction (like bfextu)
- * could normally assign its result to a 32-bit word register in the screen
- * right position. This saves canceling register shifts by not fighting the
- * natural cpu byte order.
- *
- * Unfortunately, these fail on a 3/60+CG4 and cannot be used unmodified. Sigh.
- */
-#if defined(FASTGETBITS) && defined(FASTPUTBITS)
-#ifdef NO_3_60_CG4
-#define u_FASTPUT(aa, bb, cc, dd) FASTPUTBITS(aa, bb, cc, dd)
-#else
-#define u_FASTPUT(aa, bb, cc, dd) u_putbits(SCRLEFT(aa, PPW-(cc)), bb, cc, dd)
-#endif
-
-#define getandputbits(psrc, srcbit, dstbit, width, pdst) \
-{ \
- register PixelType _tmpbits; \
- FASTGETBITS(psrc, srcbit, width, _tmpbits); \
- u_FASTPUT(_tmpbits, dstbit, width, pdst); \
-}
-
-#define getandputrop(psrc, srcbit, dstbit, width, pdst, rop) \
-{ \
- register PixelType _tmpsrc, _tmpdst; \
- FASTGETBITS(pdst, dstbit, width, _tmpdst); \
- FASTGETBITS(psrc, srcbit, width, _tmpsrc); \
- DoRop(_tmpdst, rop, _tmpsrc, _tmpdst); \
- u_FASTPUT(_tmpdst, dstbit, width, pdst); \
-}
-
-#define getandputrrop(psrc, srcbit, dstbit, width, pdst, rop) \
-{ \
- register PixelType _tmpsrc, _tmpdst; \
- FASTGETBITS(pdst, dstbit, width, _tmpdst); \
- FASTGETBITS(psrc, srcbit, width, _tmpsrc); \
- _tmpdst = DoRRop(rop, _tmpsrc, _tmpdst); \
- u_FASTPUT(_tmpdst, dstbit, width, pdst); \
-}
-
-#define getandputbits0(psrc, srcbit, width, pdst) \
- getandputbits(psrc, srcbit, 0, width, pdst)
-
-#define getandputrop0(psrc, srcbit, width, pdst, rop) \
- getandputrop(psrc, srcbit, 0, width, pdst, rop)
-
-#define getandputrrop0(psrc, srcbit, width, pdst, rop) \
- getandputrrop(psrc, srcbit, 0, width, pdst, rop)
-
-
-#else /* Slow poke */
-
-/* pairs of getbits/putbits happen frequently. Some of the code can
- * be shared or avoided in a few specific instances. It gets us a
- * small advantage, so we do it. The getandput...0 macros are the only ones
- * which speed things here. The others are here for compatibility w/the above
- * FAST ones
- */
-
-#define getandputbits(psrc, srcbit, dstbit, width, pdst) \
-{ \
- register PixelType _tmpbits; \
- getbits(psrc, srcbit, width, _tmpbits); \
- putbits(_tmpbits, dstbit, width, pdst); \
-}
-
-#define getandputrop(psrc, srcbit, dstbit, width, pdst, rop) \
-{ \
- register PixelType _tmpbits; \
- getbits(psrc, srcbit, width, _tmpbits) \
- putbitsrop(_tmpbits, dstbit, width, pdst, rop) \
-}
-
-#define getandputrrop(psrc, srcbit, dstbit, width, pdst, rop) \
-{ \
- register PixelType _tmpbits; \
- getbits(psrc, srcbit, width, _tmpbits) \
- putbitsrrop(_tmpbits, dstbit, width, pdst, rop) \
-}
-
-
-#define getandputbits0(psrc, sbindex, width, pdst) \
-{ /* unroll the whole damn thing to see how it * behaves */ \
- register int _flag = PPW - (sbindex); \
- register PixelType _src; \
- \
- _src = SCRLEFT (*(psrc), (sbindex)); \
- if ((width) > _flag) \
- _src |= SCRRIGHT (*((psrc) + 1), _flag); \
- \
- *(pdst) = (*(pdst) & mfbGetstarttab((width))) | (_src & mfbGetendtab((width))); \
-}
-
-
-#define getandputrop0(psrc, sbindex, width, pdst, rop) \
-{ \
- register int _flag = PPW - (sbindex); \
- register PixelType _src; \
- \
- _src = SCRLEFT (*(psrc), (sbindex)); \
- if ((width) > _flag) \
- _src |= SCRRIGHT (*((psrc) + 1), _flag); \
- DoRop(_src, rop, _src, *(pdst)); \
- \
- *(pdst) = (*(pdst) & mfbGetstarttab((width))) | (_src & mfbGetendtab((width))); \
-}
-
-#define getandputrrop0(psrc, sbindex, width, pdst, rop) \
-{ \
- int _flag = PPW - (sbindex); \
- register PixelType _src; \
- \
- _src = SCRLEFT (*(psrc), (sbindex)); \
- if ((width) > _flag) \
- _src |= SCRRIGHT (*((psrc) + 1), _flag); \
- _src = DoRRop(rop, _src, *(pdst)); \
- \
- *(pdst) = (*(pdst) & mfbGetstarttab((width))) | (_src & mfbGetendtab((width))); \
-}
-
-#endif /* FASTGETBITS && FASTPUTBITS */
-
-#endif /* MFB_CONSTS_ONLY */
diff --git a/xorg-server/mfb/mergerop.h b/xorg-server/mfb/mergerop.h
deleted file mode 100644
index b71bfcc09..000000000
--- a/xorg-server/mfb/mergerop.h
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- *
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _MERGEROP_H_
-#define _MERGEROP_H_
-
-#ifndef GXcopy
-#include <X11/X.h>
-#endif
-
-typedef struct _mergeRopBits {
- MfbBits ca1, cx1, ca2, cx2;
-} mergeRopRec, *mergeRopPtr;
-
-extern mergeRopRec mergeRopBits[16];
-extern mergeRopPtr mergeGetRopBits(int i);
-
-#if defined(PPW) && defined(PGSZ) && (PPW != PGSZ) /* cfb */
-#define DeclareMergeRop() MfbBits _ca1 = 0, _cx1 = 0, _ca2 = 0, _cx2 = 0;
-#define DeclarePrebuiltMergeRop() MfbBits _cca, _ccx;
-#if PSZ == 24 /* both for PGSZ == 32 and 64 */
-#define DeclareMergeRop24() \
- MfbBits _ca1u[4], _cx1u[4], _ca2u[4], _cx2u[4];
- /* int _unrollidx[3]={0,0,1,2};*/
-#define DeclarePrebuiltMergeRop24() MfbBits _ccau[4], _ccxu[4];
-#endif /* PSZ == 24 */
-#else /* mfb */
-#define DeclareMergeRop() MfbBits _ca1 = 0, _cx1 = 0, _ca2 = 0, _cx2 = 0;
-#define DeclarePrebuiltMergeRop() MfbBits _cca, _ccx;
-#endif
-
-#if defined(PPW) && defined(PGSZ) && (PPW != PGSZ) /* cfb */
-#define InitializeMergeRop(alu,pm) {\
- MfbBits _pm; \
- mergeRopPtr _bits; \
- _pm = PFILL(pm); \
- _bits = mergeGetRopBits(alu); \
- _ca1 = _bits->ca1 & _pm; \
- _cx1 = _bits->cx1 | ~_pm; \
- _ca2 = _bits->ca2 & _pm; \
- _cx2 = _bits->cx2 & _pm; \
-}
-#if PSZ == 24
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define InitializeMergeRop24(alu,pm) {\
- register int i; \
- register MfbBits _pm = (pm) & 0xFFFFFF; \
- mergeRopPtr _bits = mergeGetRopBits(alu); \
- MfbBits _bits_ca1 = _bits->ca1; \
- MfbBits _bits_cx1 = _bits->cx1; \
- MfbBits _bits_ca2 = _bits->ca2; \
- MfbBits _bits_cx2 = _bits->cx2; \
- _pm = (_pm << 8) | (_pm >> 16); \
- for(i = 0; i < 4; i++){ \
- _ca1u[i] = _bits_ca1 & _pm; \
- _cx1u[i] = _bits_cx1 | ~_pm; \
- _ca2u[i] = _bits_ca2 & _pm; \
- _cx2u[i] = _bits_cx2 & _pm; \
- _pm = (_pm << 16)|(_pm >> 8); \
- } \
-}
-#else /*(BITMAP_BIT_ORDER == LSBFirst)*/
-#define InitializeMergeRop24(alu,pm) {\
- register int i; \
- register MfbBits _pm = (pm) & cfbmask[0]; \
- mergeRopPtr _bits = mergeGetRopBits(alu); \
- MfbBits _bits_ca1 = _bits->ca1 & cfbmask[0]; \
- MfbBits _bits_cx1 = _bits->cx1 & cfbmask[0]; \
- MfbBits _bits_ca2 = _bits->ca2 & cfbmask[0]; \
- MfbBits _bits_cx2 = _bits->cx2 & cfbmask[0]; \
- _pm |= (_pm << 24); \
- _bits_ca1 |= (_bits->ca1 << 24); \
- _bits_cx1 |= (_bits->cx1 << 24); \
- _bits_ca2 |= (_bits->ca2 << 24); \
- _bits_cx2 |= (_bits->cx2 << 24); \
- for(i = 0; i < 4; i++){ \
- _ca1u[i] = _bits_ca1 & _pm; \
- _cx1u[i] = _bits_cx1 | ~_pm; \
- _ca2u[i] = _bits_ca2 & _pm; \
- _cx2u[i] = _bits_cx2 & _pm; \
- _pm = (_pm << 16)|(_pm >> 8); \
- } \
-}
-#endif /*(BITMAP_BIT_ORDER == MSBFirst)*/
-#endif /* PSZ == 24 */
-#else /* mfb */
-#define InitializeMergeRop(alu,pm) {\
- mergeRopPtr _bits; \
- _bits = mergeGetRopBits(alu); \
- _ca1 = _bits->ca1; \
- _cx1 = _bits->cx1; \
- _ca2 = _bits->ca2; \
- _cx2 = _bits->cx2; \
-}
-#endif
-
-/* AND has higher precedence than XOR */
-
-#define DoMergeRop(src, dst) \
- (((dst) & (((src) & _ca1) ^ _cx1)) ^ (((src) & _ca2) ^ _cx2))
-
-#define DoMergeRop24u(src, dst, i) \
-(((dst) & (((src) & _ca1u[i]) ^ _cx1u[i])) ^ (((src) & _ca2u[i]) ^ _cx2u[i]))
-
-#define DoMaskMergeRop24(src, dst, mask, index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src0 = (src);\
- MfbBits _src1 = (_src0 & _ca1) ^ _cx1; \
- MfbBits _src2 = (_src0 & _ca2) ^ _cx2; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | (((*(dst)) & cfbmask[idx]) & \
- (((( _src1 |(~mask))<<cfb24Shift[idx])&cfbmask[idx]) ^ \
- ((( _src2&(mask))<<cfb24Shift[idx])&cfbmask[idx])))); \
- idx++; \
- (dst)++; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | (((*(dst)) & cfbmask[idx]) & \
- ((((_src1 |(~mask))>>cfb24Shift[idx])&cfbmask[idx]) ^ \
- (((_src2 &(mask))>>cfb24Shift[idx])&cfbmask[idx])))); \
- (dst)--; \
- }
-
-#define DoMaskMergeRop(src, dst, mask) \
- (((dst) & ((((src) & _ca1) ^ _cx1) | ~(mask))) ^ ((((src) & _ca2) ^ _cx2) & (mask)))
-
-#define DoMaskMergeRop24u(src, dst, mask, i) \
-(((dst) & ((((src) & _ca1u[(i)]) ^ _cx1u[(i)]) | ~(mask))) ^ ((((src) & _ca2u[(i)]) ^ _cx2u[(i)]) & (mask)))
-
-#define DoMergeRop24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src0 = (src);\
- MfbBits _src1 = (_src0 & _ca1) ^ _cx1; \
- MfbBits _src2 = (_src0 & _ca2) ^ _cx2; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) & \
- ((_src1 << cfb24Shift[idx])&cfbmask[idx])) ^ \
- ((_src2 << cfb24Shift[idx])&cfbmask[idx]))); \
- idx++; \
- (dst)++; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) & \
- ((_src1 >> cfb24Shift[idx])&cfbmask[idx])) ^ \
- ((_src2 >> cfb24Shift[idx])&cfbmask[idx]))); \
- (dst)--; \
- }
-
-#define DoPrebuiltMergeRop(dst) (((dst) & _cca) ^ _ccx)
-
-#define DoPrebuiltMergeRop24(dst,index) { \
- register int idx = ((index) & 3)<< 1; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) &\
- (( _cca <<cfb24Shift[idx])&cfbmask[idx])) ^ \
- (( _ccx <<cfb24Shift[idx])&cfbmask[idx]))); \
- idx++; \
- (dst)++; \
- *(dst) = (((*(dst)) & cfbrmask[idx]) | ((((*(dst)) & cfbmask[idx]) &\
- (( _cca >>cfb24Shift[idx])&cfbmask[idx])) ^ \
- (( _ccx >>cfb24Shift[idx])&cfbmask[idx]))); \
- (dst)--; \
- }
-
-#define DoMaskPrebuiltMergeRop(dst,mask) \
- (((dst) & (_cca | ~(mask))) ^ (_ccx & (mask)))
-
-#define PrebuildMergeRop(src) ((_cca = ((src) & _ca1) ^ _cx1), \
- (_ccx = ((src) & _ca2) ^ _cx2))
-
-#ifndef MROP
-#define MROP 0
-#endif
-
-#define Mclear (1<<GXclear)
-#define Mand (1<<GXand)
-#define MandReverse (1<<GXandReverse)
-#define Mcopy (1<<GXcopy)
-#define MandInverted (1<<GXandInverted)
-#define Mnoop (1<<GXnoop)
-#define Mxor (1<<GXxor)
-#define Mor (1<<GXor)
-#define Mnor (1<<GXnor)
-#define Mequiv (1<<GXequiv)
-#define Minvert (1<<GXinvert)
-#define MorReverse (1<<GXorReverse)
-#define McopyInverted (1<<GXcopyInverted)
-#define MorInverted (1<<GXorInverted)
-#define Mnand (1<<GXnand)
-#define Mset (1<<GXset)
-
-#define MROP_PIXEL24(pix, idx) \
- (((*(pix) & cfbmask[(idx)<<1]) >> cfb24Shift[(idx)<<1])| \
- ((*((pix)+1) & cfbmask[((idx)<<1)+1]) << cfb24Shift[((idx)<<1)+1]))
-
-#define MROP_SOLID24P(src,dst,sindex, index) \
- MROP_SOLID24(MROP_PIXEL24(src,sindex),dst,index)
-
-#define MROP_MASK24P(src,dst,mask,sindex,index) \
- MROP_MASK24(MROP_PIXEL24(src,sindex),dst,mask,index)
-
-#if (MROP) == Mcopy
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) (src)
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) = (*(dst) & cfbrmask[idx])|((_src<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- *((dst)+1) = (*((dst)+1) & cfbrmask[idx])|((_src>>cfb24Shift[idx])&cfbmask[idx]); \
- }
-#define MROP_MASK(src,dst,mask) (((dst) & ~(mask)) | ((src) & (mask)))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) = (*(dst) & cfbrmask[idx] &(~(((mask)<< cfb24Shift[idx])&cfbmask[idx])) | \
- (((_src &(mask))<<cfb24Shift[idx])&cfbmask[idx])); \
- idx++; \
- *((dst)+1) = (*((dst)+1) & cfbrmask[idx] &(~(((mask)>>cfb24Shift[idx])&cfbmask[idx])) | \
- (((_src&(mask))>>cfb24Shift[idx])&cfbmask[idx])); \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Copy)
-#endif
-
-#if (MROP) == McopyInverted
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) (~(src))
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = ~(src); \
- *(dst) = (*(dst) & cfbrmask[idx])|((_src << cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) = (*(dst) & cfbrmask[idx])|((_src >>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_MASK(src,dst,mask) (((dst) & ~(mask)) | ((~(src)) & (mask)))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = ~(src); \
- *(dst) = (*(dst) & cfbrmask[idx] &(~(((mask)<< cfb24Shift[idx])&cfbmask[idx])) | \
- (((_src &(mask))<<cfb24Shift[idx])&cfbmask[idx])); \
- idx++; \
- (dst)++; \
- *(dst) = (*(dst) & cfbrmask[idx] &(~(((mask)>>cfb24Shift[idx])&cfbmask[idx])) | \
- ((((_src & (mask))>>cfb24Shift[idx])&cfbmask[idx])); \
- (dst)--; \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,CopyInverted)
-#endif
-
-#if (MROP) == Mxor
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) ((src) ^ (dst))
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) ^= ((_src << cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) ^= ((_src >>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_MASK(src,dst,mask) (((src) & (mask)) ^ (dst))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) ^= ((((src)&(mask))<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) ^= ((((src)&(mask))>>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Xor)
-#endif
-
-#if (MROP) == Mor
-#define MROP_DECLARE()
-#define MROP_DECLARE_REG()
-#define MROP_INITIALIZE(alu,pm)
-#define MROP_SOLID(src,dst) ((src) | (dst))
-#define MROP_SOLID24(src,dst,index) {\
- register int idx = ((index) & 3)<< 1; \
- *(dst) |= (((src)<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) |= (((src)>>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_MASK(src,dst,mask) (((src) & (mask)) | (dst))
-#define MROP_MASK24(src,dst,mask,index) {\
- register int idx = ((index) & 3)<< 1; \
- MfbBits _src = (src); \
- *(dst) |= (((_src &(mask))<<cfb24Shift[idx])&cfbmask[idx]); \
- idx++; \
- (dst)++; \
- *(dst) |= (((_src &(mask))>>cfb24Shift[idx])&cfbmask[idx]); \
- (dst)--; \
- }
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Or)
-#endif
-
-#if (MROP) == (Mcopy|Mxor|MandReverse|Mor)
-#define MROP_DECLARE() MfbBits _ca1 = 0, _cx1 = 0;
-#define MROP_DECLARE_REG() register MROP_DECLARE()
-#define MROP_INITIALIZE(alu,pm) { \
- mergeRopPtr _bits; \
- _bits = mergeGetRopBits(alu); \
- _ca1 = _bits->ca1; \
- _cx1 = _bits->cx1; \
-}
-#define MROP_SOLID(src,dst) \
- (((dst) & (((src) & _ca1) ^ _cx1)) ^ (src))
-#define MROP_MASK(src,dst,mask) \
- (((dst) & ((((src) & _ca1) ^ _cx1)) | (~(mask)) ^ ((src) & (mask))))
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,CopyXorAndReverseOr)
-#define MROP_PREBUILD(src) PrebuildMergeRop(src)
-#define MROP_PREBUILT_DECLARE() DeclarePrebuiltMergeRop()
-#define MROP_PREBUILT_SOLID(src,dst) DoPrebuiltMergeRop(dst)
-#define MROP_PREBUILT_SOLID24(src,dst,index) DoPrebuiltMergeRop24(dst,index)
-#define MROP_PREBUILT_MASK(src,dst,mask) DoMaskPrebuiltMergeRop(dst,mask)
-#define MROP_PREBUILT_MASK24(src,dst,mask,index) DoMaskPrebuiltMergeRop24(dst,mask,index)
-#endif
-
-#if (MROP) == 0
-#if !defined(PSZ) || (PSZ != 24)
-#define MROP_DECLARE() DeclareMergeRop()
-#define MROP_DECLARE_REG() register DeclareMergeRop()
-#define MROP_INITIALIZE(alu,pm) InitializeMergeRop(alu,pm)
-#define MROP_SOLID(src,dst) DoMergeRop(src,dst)
-#define MROP_MASK(src,dst,mask) DoMaskMergeRop(src, dst, mask)
-#else
-#define MROP_DECLARE() \
- DeclareMergeRop() \
- DeclareMergeRop24()
-#define MROP_DECLARE_REG() \
- register DeclareMergeRop()\
- DeclareMergeRop24()
-#define MROP_INITIALIZE(alu,pm) \
- InitializeMergeRop(alu,pm)\
- InitializeMergeRop24(alu,pm)
-#define MROP_SOLID(src,dst) DoMergeRop24u(src,dst,((int)(&(dst)-pdstBase) % 3))
-#define MROP_MASK(src,dst,mask) DoMaskMergeRop24u(src, dst, mask,((int)(&(dst) - pdstBase)%3))
-#endif
-#define MROP_SOLID24(src,dst,index) DoMergeRop24(src,dst,index)
-#define MROP_MASK24(src,dst,mask,index) DoMaskMergeRop24(src, dst, mask,index)
-#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,General)
-#define MROP_PREBUILD(src) PrebuildMergeRop(src)
-#define MROP_PREBUILT_DECLARE() DeclarePrebuiltMergeRop()
-#define MROP_PREBUILT_SOLID(src,dst) DoPrebuiltMergeRop(dst)
-#define MROP_PREBUILT_SOLID24(src,dst,index) DoPrebuiltMergeRop24(dst,index)
-#define MROP_PREBUILT_MASK(src,dst,mask) DoMaskPrebuiltMergeRop(dst,mask)
-#define MROP_PREBUILT_MASK24(src,dst,mask,index) \
- DoMaskPrebuiltMergeRop24(dst,mask,index)
-#endif
-
-#ifndef MROP_PREBUILD
-#define MROP_PREBUILD(src)
-#define MROP_PREBUILT_DECLARE()
-#define MROP_PREBUILT_SOLID(src,dst) MROP_SOLID(src,dst)
-#define MROP_PREBUILT_SOLID24(src,dst,index) MROP_SOLID24(src,dst,index)
-#define MROP_PREBUILT_MASK(src,dst,mask) MROP_MASK(src,dst,mask)
-#define MROP_PREBUILT_MASK24(src,dst,mask,index) MROP_MASK24(src,dst,mask,index)
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define MROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define MROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
-
-#endif
diff --git a/xorg-server/mfb/mfb.h b/xorg-server/mfb/mfb.h
deleted file mode 100644
index 36f111380..000000000
--- a/xorg-server/mfb/mfb.h
+++ /dev/null
@@ -1,1112 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#if !defined(_MFB_H_) || defined(MFB_PROTOTYPES_ONLY)
-#ifndef MFB_PROTOTYPES_ONLY
-#define _MFB_H_
-#endif
-
-/* Monochrome Frame Buffer definitions
- written by drewry, september 1986
-*/
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "privates.h"
-#include "miscstruct.h"
-#include "mibstore.h"
-
-extern int InverseAlu[];
-extern int mfbGetInverseAlu(int i);
-
-/* warning: PixelType definition duplicated in maskbits.h */
-#ifndef PixelType
-#define PixelType CARD32
-#endif /* PixelType */
-#ifndef MfbBits
-#define MfbBits CARD32
-#endif
-
-/* mfbbitblt.c */
-
-extern void mfbDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-
-extern RegionPtr mfbCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern Bool mfbRegisterCopyPlaneProc(
- ScreenPtr /*pScreen*/,
- RegionPtr (* /*proc*/)(
- DrawablePtr /* pSrcDrawable */,
- DrawablePtr /* pDstDrawable */,
- GCPtr /* pGC */,
- int /* srcx */,
- int /* srcy */,
- int /* width */,
- int /* height */,
- int /* dstx */,
- int /* dsty */,
- unsigned long /* bitPlane */
- )
-);
-
-extern RegionPtr mfbCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*plane*/
-);
-/* mfbbltC.c */
-
-extern void mfbDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltCI.c */
-
-extern void mfbDoBitbltCopyInverted(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltG.c */
-
-extern void mfbDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltO.c */
-
-extern void mfbDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbltX.c */
-
-extern void mfbDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/
-);
-/* mfbbres.c */
-
-extern void mfbBresS(
- int /*rop*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* mfbbresd.c */
-
-extern void mfbBresD(
- int /*fgrop*/,
- int /*bgrop*/,
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-
-/* mfbclip.c */
-
-extern RegionPtr mfbPixmapToRegion(
- PixmapPtr /*pPix*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef RegionPtr (*mfbPixmapToRegionProc)(PixmapPtr);
-
-extern mfbPixmapToRegionProc *mfbPixmapToRegionWeak(void);
-#endif
-
-/* mfbcmap.c */
-
-extern int mfbListInstalledColormaps(
- ScreenPtr /*pScreen*/,
- Colormap * /*pmaps*/
-);
-
-extern void mfbInstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void mfbUninstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void mfbResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool mfbCreateColormap(
- ColormapPtr /*pMap*/
-);
-
-extern void mfbDestroyColormap(
- ColormapPtr /*pMap*/
-);
-
-extern Bool mfbCreateDefColormap(
- ScreenPtr /*pScreen*/
-);
-/* mfbfillarc.c */
-
-extern void mfbPolyFillArcSolid(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* mfbfillrct.c */
-
-extern void mfbPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-/* mfbfillsp.c */
-
-extern void mfbBlackSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbWhiteSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbInvertSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbWhiteStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbBlackStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbInvertStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void mfbUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* mfbfont.c */
-
-extern Bool mfbRealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-extern Bool mfbUnrealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef void (*mfbRealizeFontProc)(ScreenPtr, FontPtr);
-typedef void (*mfbUnrealizeFontProc)(ScreenPtr, FontPtr);
-
-extern mfbRealizeFontProc *mfbRealizeFontWeak(void);
-extern mfbUnrealizeFontProc *mfbUnrealizeFontWeak(void);
-#endif
-
-/* mfbgc.c */
-
-extern Bool mfbCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void mfbValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-extern int mfbReduceRop(
- int /*alu*/,
- Pixel /*src*/
-);
-
-/* mfbgetsp.c */
-
-extern void mfbGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* mfbhrzvert.c */
-
-extern void mfbHorzS(
- int /*rop*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-
-extern void mfbVertS(
- int /*rop*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-/* mfbigbblak.c */
-
-extern void mfbImageGlyphBltBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbigbwht.c */
-
-extern void mfbImageGlyphBltWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbimage.c */
-
-extern void mfbPutImage(
- DrawablePtr /*dst*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void mfbGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* mfbline.c */
-
-extern void mfbLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void mfbLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-/* mfbmisc.c */
-
-extern void mfbQueryBestSize(
- int /*class*/,
- unsigned short * /*pwidth*/,
- unsigned short * /*pheight*/,
- ScreenPtr /*pScreen*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef void (*mfbQueryBestSizeProc)(int, unsigned short *, unsigned short *,
- ScreenPtr);
-
-extern mfbQueryBestSizeProc *mfbQueryBestSizeWeak(void);
-#endif
-
-/* mfbpablack.c */
-
-extern void mfbSolidBlackArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
-);
-
-extern void mfbStippleBlackArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*pstipple*/
-);
-/* mfbpainv.c */
-
-extern void mfbSolidInvertArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
-);
-
-extern void mfbStippleInvertArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*pstipple*/
-);
-/* mfbpawhite.c */
-
-extern void mfbSolidWhiteArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
-);
-
-extern void mfbStippleWhiteArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*pstipple*/
-);
-
-/* mfbpgbinv.c */
-
-extern void mfbPolyGlyphBltBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbpgbinv.c */
-
-extern void mfbPolyGlyphBltInvert(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbpgbwht.c */
-
-extern void mfbPolyGlyphBltWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbpixmap.c */
-
-extern PixmapPtr mfbCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/,
- unsigned /*usage_hint*/
-);
-
-extern Bool mfbDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr mfbCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void mfbPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void mfbXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void mfbYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void mfbCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-/* mfbplyblack.c */
-
-extern void mfbFillPolyBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* mfbplyinv.c */
-
-extern void mfbFillPolyInvert(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-
-/* mfbpntwin.c */
-
-extern void mfbFillPolyWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* mfbpolypnt.c */
-
-extern void mfbPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* mfbpushpxl.c */
-
-extern void mfbSolidPP(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-
-extern void mfbPushPixels(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-typedef void (*mfbPushPixelsProc)(GCPtr, PixmapPtr, DrawablePtr, int, int,
- int, int);
-
-extern mfbPushPixelsProc *mfbPushPixelsWeak(void);
-#endif
-
-/* mfbscrclse.c */
-
-extern Bool mfbCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-/* mfbscrinit.c */
-
-extern Bool mfbAllocatePrivates(
- ScreenPtr /*pScreen*/,
- DevPrivateKey * /*pGCKey*/
-);
-
-extern Bool mfbScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr mfbGetWindowPixmap(
- WindowPtr /*pWin*/
-);
-
-extern void mfbSetWindowPixmap(
- WindowPtr /*pWin*/,
- PixmapPtr /*pPix*/
-);
-
-extern void mfbFillInScreen(ScreenPtr pScreen);
-
-/* mfbseg.c */
-
-extern void mfbSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void mfbSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* mfbsetsp.c */
-
-extern void mfbSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- PixelType * /*psrc*/,
- int /*alu*/,
- PixelType * /*pdstBase*/,
- int /*widthDst*/
-);
-
-extern void mfbSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* mfbteblack.c */
-
-extern void mfbTEGlyphBltBlack(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbtewhite.c */
-
-extern void mfbTEGlyphBltWhite(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* mfbtileC.c */
-
-extern void mfbTileAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/
-);
-/* mfbtileG.c */
-
-extern void mfbTileAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/
-);
-
-extern void mfbTileAreaPPW(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/
-);
-/* mfbwindow.c */
-
-extern Bool mfbCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool mfbDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool mfbMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool mfbPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool mfbUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void mfbCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool mfbChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* mfbzerarc.c */
-
-extern void mfbZeroPolyArcSS(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-#ifndef MFB_PROTOTYPES_ONLY
-/*
- private filed of pixmap
- pixmap.devPrivate = (PixelType *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-
- private field of screen
- a pixmap, for which we allocate storage. devPrivate is a pointer to
-the bits in the hardware framebuffer. note that devKind can be poked to
-make the code work for framebuffers that are wider than their
-displayable screen (e.g. the early vsII, which displayed 960 pixels
-across, but was 1024 in the hardware.)
-
- private field of GC
-*/
-typedef void (*mfbFillAreaProcPtr)(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/
- );
-
-typedef struct {
- unsigned char rop; /* reduction of rasterop to 1 of 3 */
- unsigned char ropOpStip; /* rop for opaque stipple */
- unsigned char ropFillArea; /* == alu, rop, or ropOpStip */
- unsigned char unused1[sizeof(long) - 3]; /* Alignment */
- mfbFillAreaProcPtr FillArea; /* fills regions; look at the code */
- } mfbPrivGC;
-typedef mfbPrivGC *mfbPrivGCPtr;
-#endif
-
-extern DevPrivateKey mfbGetGCPrivateKey(void);
-#ifdef PIXMAP_PER_WINDOW
-extern DevPrivateKey frameGetWindowPrivateKey(void);
-#endif
-
-#ifndef MFB_PROTOTYPES_ONLY
-/* Common macros for extracting drawing information */
-
-#define mfbGetTypedWidth(pDrawable,wtype) (\
- (((pDrawable)->type == DRAWABLE_WINDOW) ? \
- (int) (((PixmapPtr)((pDrawable)->pScreen->devPrivate))->devKind) : \
- (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
-
-#define mfbGetByteWidth(pDrawable) mfbGetTypedWidth(pDrawable, unsigned char)
-
-#define mfbGetPixelWidth(pDrawable) mfbGetTypedWidth(pDrawable, PixelType)
-
-#define mfbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type == DRAWABLE_WINDOW) \
- _pPix = (PixmapPtr) (pDrawable)->pScreen->devPrivate; \
- else \
- _pPix = (PixmapPtr) (pDrawable); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define mfbGetByteWidthAndPointer(pDrawable, width, pointer) \
- mfbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
-
-#define mfbGetPixelWidthAndPointer(pDrawable, width, pointer) \
- mfbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-#define mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix = (PixmapPtr) (pWin)->drawable.pScreen->devPrivate; \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define mfbGetWindowPixelWidthAndPointer(pWin, width, pointer) \
- mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, PixelType, PixelType)
-
-#define mfbGetWindowByteWidthAndPointer(pWin, width, pointer) \
- mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, char, char)
-
-/* mfb uses the following macros to calculate addresses in drawables.
- * To support banked framebuffers, the macros come in four flavors.
- * All four collapse into the same definition on unbanked devices.
- *
- * mfbScanlineFoo - calculate address and do bank switching
- * mfbScanlineFooNoBankSwitch - calculate address, don't bank switch
- * mfbScanlineFooSrc - calculate address, switch source bank
- * mfbScanlineFooDst - calculate address, switch destination bank
- */
-
-/* The NoBankSwitch versions are the same for banked and unbanked cases */
-
-#define mfbScanlineIncNoBankSwitch(_ptr, _off) _ptr += (_off)
-#define mfbScanlineOffsetNoBankSwitch(_ptr, _off) ((_ptr) + (_off))
-#define mfbScanlineDeltaNoBankSwitch(_ptr, _y, _w) \
- mfbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w))
-#define mfbScanlineNoBankSwitch(_ptr, _x, _y, _w) \
- mfbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH))
-
-#ifdef MFB_LINE_BANK
-
-#include "mfblinebank.h" /* get macro definitions from this file */
-
-#else /* !MFB_LINE_BANK - unbanked case */
-
-#define mfbScanlineInc(_ptr, _off) mfbScanlineIncNoBankSwitch(_ptr, _off)
-#define mfbScanlineIncSrc(_ptr, _off) mfbScanlineInc(_ptr, _off)
-#define mfbScanlineIncDst(_ptr, _off) mfbScanlineInc(_ptr, _off)
-
-#define mfbScanlineOffset(_ptr, _off) mfbScanlineOffsetNoBankSwitch(_ptr, _off)
-#define mfbScanlineOffsetSrc(_ptr, _off) mfbScanlineOffset(_ptr, _off)
-#define mfbScanlineOffsetDst(_ptr, _off) mfbScanlineOffset(_ptr, _off)
-
-#define mfbScanlineSrc(_ptr, _x, _y, _w) mfbScanline(_ptr, _x, _y, _w)
-#define mfbScanlineDst(_ptr, _x, _y, _w) mfbScanline(_ptr, _x, _y, _w)
-
-#define mfbScanlineDeltaSrc(_ptr, _y, _w) mfbScanlineDelta(_ptr, _y, _w)
-#define mfbScanlineDeltaDst(_ptr, _y, _w) mfbScanlineDelta(_ptr, _y, _w)
-
-#endif /* MFB_LINE_BANK */
-
-#define mfbScanlineDelta(_ptr, _y, _w) \
- mfbScanlineOffset(_ptr, (_y) * (_w))
-
-#define mfbScanline(_ptr, _x, _y, _w) \
- mfbScanlineOffset(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH))
-
-
-/* precomputed information about each glyph for GlyphBlt code.
- this saves recalculating the per glyph information for each box.
-*/
-typedef struct _pos{
- int xpos; /* xposition of glyph's origin */
- int xchar; /* x position mod 32 */
- int leftEdge;
- int rightEdge;
- int topEdge;
- int bottomEdge;
- PixelType *pdstBase; /* longword with character origin */
- int widthGlyph; /* width in bytes of this glyph */
-} TEXTPOS;
-
-/* reduced raster ops for mfb */
-#define RROP_BLACK GXclear
-#define RROP_WHITE GXset
-#define RROP_NOP GXnoop
-#define RROP_INVERT GXinvert
-
-/* macros for mfbbitblt.c, mfbfillsp.c
- these let the code do one switch on the rop per call, rather
-than a switch on the rop per item (span or rectangle.)
-*/
-
-#define fnCLEAR(src, dst) (0)
-#define fnAND(src, dst) (src & dst)
-#define fnANDREVERSE(src, dst) (src & ~dst)
-#define fnCOPY(src, dst) (src)
-#define fnANDINVERTED(src, dst) (~src & dst)
-#define fnNOOP(src, dst) (dst)
-#define fnXOR(src, dst) (src ^ dst)
-#define fnOR(src, dst) (src | dst)
-#define fnNOR(src, dst) (~(src | dst))
-#define fnEQUIV(src, dst) (~src ^ dst)
-#define fnINVERT(src, dst) (~dst)
-#define fnORREVERSE(src, dst) (src | ~dst)
-#define fnCOPYINVERTED(src, dst)(~src)
-#define fnORINVERTED(src, dst) (~src | dst)
-#define fnNAND(src, dst) (~(src & dst))
-#undef fnSET
-#define fnSET(src, dst) (MfbBits)(~0)
-
-/* Using a "switch" statement is much faster in most cases
- * since the compiler can do a look-up table or multi-way branch
- * instruction, depending on the architecture. The result on
- * A Sun 3/50 is at least 2.5 times faster, assuming a uniform
- * distribution of RasterOp operation types.
- *
- * However, doing some profiling on a running system reveals
- * GXcopy is the operation over 99.5% of the time and
- * GXxor is the next most frequent (about .4%), so we make special
- * checks for those first.
- *
- * Note that this requires a change to the "calling sequence"
- * since we can't engineer a "switch" statement to have an lvalue.
- */
-#undef DoRop
-#define DoRop(result, alu, src, dst) \
-{ \
- if (alu == GXcopy) \
- result = fnCOPY (src, dst); \
- else if (alu == GXxor) \
- result = fnXOR (src, dst); \
- else \
- switch (alu) \
- { \
- case GXclear: \
- result = fnCLEAR (src, dst); \
- break; \
- case GXand: \
- result = fnAND (src, dst); \
- break; \
- case GXandReverse: \
- result = fnANDREVERSE (src, dst); \
- break; \
- case GXandInverted: \
- result = fnANDINVERTED (src, dst); \
- break; \
- default: \
- case GXnoop: \
- result = fnNOOP (src, dst); \
- break; \
- case GXor: \
- result = fnOR (src, dst); \
- break; \
- case GXnor: \
- result = fnNOR (src, dst); \
- break; \
- case GXequiv: \
- result = fnEQUIV (src, dst); \
- break; \
- case GXinvert: \
- result = fnINVERT (src, dst); \
- break; \
- case GXorReverse: \
- result = fnORREVERSE (src, dst); \
- break; \
- case GXcopyInverted: \
- result = fnCOPYINVERTED (src, dst); \
- break; \
- case GXorInverted: \
- result = fnORINVERTED (src, dst); \
- break; \
- case GXnand: \
- result = fnNAND (src, dst); \
- break; \
- case GXset: \
- result = fnSET (src, dst); \
- break; \
- } \
-}
-
-
-/* C expression fragments for various operations. These get passed in
- * as -D's on the compile command line. See mfb/Imakefile. This
- * fixes XBUG 6319.
- *
- * This seems like a good place to point out that mfb's use of the
- * words black and white is an unfortunate misnomer. In mfb code, black
- * means zero, and white means one.
- */
-#define MFB_OPEQ_WHITE |=
-#define MFB_OPEQ_BLACK &=~
-#define MFB_OPEQ_INVERT ^=
-#define MFB_EQWHOLEWORD_WHITE =~0
-#define MFB_EQWHOLEWORD_BLACK =0
-#define MFB_EQWHOLEWORD_INVERT ^=~0
-#define MFB_OP_WHITE /* nothing */
-#define MFB_OP_BLACK ~
-
-#endif /* MFB_PROTOTYPES_ONLY */
-#endif /* _MFB_H_ */
diff --git a/xorg-server/mfb/mfbbitblt.c b/xorg-server/mfb/mfbbitblt.c
deleted file mode 100644
index 344c655ee..000000000
--- a/xorg-server/mfb/mfbbitblt.c
+++ /dev/null
@@ -1,500 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-
-#include <stdlib.h>
-
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mi.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-
-/* CopyArea and CopyPlane for a monchrome frame buffer
-
-
- clip the source rectangle to the source's available bits. (this
-avoids copying unnecessary pieces that will just get exposed anyway.)
-this becomes the new shape of the destination.
- clip the destination region to the composite clip in the
-GC. this requires translating the destination region to (dstx, dsty).
- build a list of source points, one for each rectangle in the
-destination. this is a simple translation.
- go do the multiple rectangle copies
- do graphics exposures
-*/
-/** Optimized for drawing pixmaps into windows, especially when drawing into
- ** unobscured windows. Calls to the general-purpose region code were
- ** replaced with rectangle-to-rectangle clipping comparisions. This is
- ** possible, since the pixmap is a single rectangle. In an unobscured
- ** window, the destination clip is also a single rectangle, and region
- ** code can be avoided entirely. This is a big savings, since the region
- ** code uses XAlloc() and makes many function calls.
- **
- ** In addition, if source is a pixmap, there is no need to call the
- ** expensive miHandleExposures() routine. Instead, we simply return NULL.
- **
- ** Previously, drawing a pixmap into an unobscured window executed at least
- ** 8 XAlloc()'s, 30 function calls, and hundreds of lines of code.
- **
- ** Now, the same operation requires no XAlloc()'s, no region function calls,
- ** and much less overhead. Nice for drawing lots of small pixmaps.
- */
-
-
-void
-mfbDoBitblt (pSrc, pDst, alu, prgnDst, pptSrc)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
-{
- switch (alu)
- {
- case GXcopy:
- mfbDoBitbltCopy (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- case GXxor:
- mfbDoBitbltXor (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- case GXcopyInverted:
- mfbDoBitbltCopyInverted (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- case GXor:
- mfbDoBitbltOr (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- default:
- mfbDoBitbltGeneral (pSrc, pDst, alu, prgnDst, pptSrc);
- break;
- }
-}
-
-RegionPtr
-mfbCopyArea(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty)
-register DrawablePtr pSrcDrawable;
-register DrawablePtr pDstDrawable;
-register GC *pGC;
-int srcx, srcy;
-int width, height;
-int dstx, dsty;
-{
- RegionPtr prgnSrcClip = NULL; /* may be a new region, or just a copy */
- Bool freeSrcClip = FALSE;
-
- RegionPtr prgnExposed;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
- register int dx;
- register int dy;
- xRectangle origSource;
- DDXPointRec origDest;
- int numRects;
- BoxRec fastBox;
- int fastClip = 0; /* for fast clipping with pixmap source */
- int fastExpose = 0; /* for fast exposures with pixmap source */
- void (*localDoBitBlt)(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/);
-
- origSource.x = srcx;
- origSource.y = srcy;
- origSource.width = width;
- origSource.height = height;
- origDest.x = dstx;
- origDest.y = dsty;
-
- if ((pSrcDrawable != pDstDrawable) &&
- pSrcDrawable->pScreen->SourceValidate)
- {
- (*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, srcx, srcy, width, height);
- }
-
- switch (pGC->alu) {
- case GXcopy:
- localDoBitBlt = mfbDoBitbltCopy;
- break;
- case GXcopyInverted:
- localDoBitBlt = mfbDoBitbltCopyInverted;
- break;
- case GXxor:
- localDoBitBlt = mfbDoBitbltXor;
- break;
- case GXor:
- localDoBitBlt = mfbDoBitbltOr;
- break;
- default:
- localDoBitBlt = mfbDoBitbltGeneral;
- break;
- }
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- {
- if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = pGC->pCompositeClip;
- }
- else
- {
- fastClip = 1;
- }
- }
- else
- {
- if (pGC->subWindowMode == IncludeInferiors)
- {
- if (!((WindowPtr) pSrcDrawable)->parent)
- {
- /*
- * special case bitblt from root window in
- * IncludeInferiors mode; just like from a pixmap
- */
- fastClip = 1;
- }
- else if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = pGC->pCompositeClip;
- }
- else
- {
- prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable);
- freeSrcClip = TRUE;
- }
- }
- else
- {
- prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList;
- }
- }
-
- fastBox.x1 = srcx;
- fastBox.y1 = srcy;
- fastBox.x2 = srcx + width;
- fastBox.y2 = srcy + height;
-
- /* Don't create a source region if we are doing a fast clip */
- if (fastClip)
- {
- fastExpose = 1;
- /*
- * clip the source; if regions extend beyond the source size,
- * make sure exposure events get sent
- */
- if (fastBox.x1 < pSrcDrawable->x)
- {
- fastBox.x1 = pSrcDrawable->x;
- fastExpose = 0;
- }
- if (fastBox.y1 < pSrcDrawable->y)
- {
- fastBox.y1 = pSrcDrawable->y;
- fastExpose = 0;
- }
- if (fastBox.x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
- {
- fastBox.x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
- fastExpose = 0;
- }
- if (fastBox.y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
- {
- fastBox.y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
- fastExpose = 0;
- }
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip);
- }
-
- dstx += pDstDrawable->x;
- dsty += pDstDrawable->y;
-
- if (pDstDrawable->type == DRAWABLE_WINDOW)
- {
- if (!((WindowPtr)pDstDrawable)->realized)
- {
- if (!fastClip)
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- }
-
- dx = srcx - dstx;
- dy = srcy - dsty;
-
- /* Translate and clip the dst to the destination composite clip */
- if (fastClip)
- {
- RegionPtr cclip;
-
- /* Translate the region directly */
- fastBox.x1 -= dx;
- fastBox.x2 -= dx;
- fastBox.y1 -= dy;
- fastBox.y2 -= dy;
-
- /* If the destination composite clip is one rectangle we can
- do the clip directly. Otherwise we have to create a full
- blown region and call intersect */
- cclip = pGC->pCompositeClip;
- if (REGION_NUM_RECTS(cclip) == 1)
- {
- BoxPtr pBox = REGION_RECTS(cclip);
-
- if (fastBox.x1 < pBox->x1) fastBox.x1 = pBox->x1;
- if (fastBox.x2 > pBox->x2) fastBox.x2 = pBox->x2;
- if (fastBox.y1 < pBox->y1) fastBox.y1 = pBox->y1;
- if (fastBox.y2 > pBox->y2) fastBox.y2 = pBox->y2;
-
- /* Check to see if the region is empty */
- if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2)
- {
- REGION_NULL(pGC->pScreen, &rgnDst);
- }
- else
- {
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- /* We must turn off fastClip now, since we must create
- a full blown region. It is intersected with the
- composite clip below. */
- fastClip = 0;
- REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1);
- }
- }
- else
- {
- REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy);
- }
-
- if (!fastClip)
- {
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height)
- {
- if(!(pptSrc = (DDXPointPtr)xalloc(numRects *
- sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return NULL;
- }
- pbox = REGION_RECTS(&rgnDst);
- ppt = pptSrc;
- for (i = numRects; --i >= 0; pbox++, ppt++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- if (pGC->planemask & 1)
- (*localDoBitBlt) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc);
-
- xfree(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose)
- {
- /* Pixmap sources generate a NoExposed (we return NULL to do this) */
- if (!fastExpose)
- prgnExposed =
- miHandleExposures(pSrcDrawable, pDstDrawable, pGC,
- origSource.x, origSource.y,
- (int)origSource.width,
- (int)origSource.height,
- origDest.x, origDest.y, (unsigned long)0);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-
-/*
- * Devices which use mfb for 1-bit pixmap support
- * must register a function for n-to-1 copy operations
- */
-
-static DevPrivateKey copyPlaneScreenKey = &copyPlaneScreenKey;
-
-Bool
-mfbRegisterCopyPlaneProc (pScreen, proc)
- ScreenPtr pScreen;
- RegionPtr (*proc)(
- DrawablePtr /* pSrcDrawable */,
- DrawablePtr /* pDstDrawable */,
- GCPtr /* pGC */,
- int /* srcx */,
- int /* srcy */,
- int /* width */,
- int /* height */,
- int /* dstx */,
- int /* dsty */,
- unsigned long /* bitPlane */);
-{
- dixSetPrivate(&pScreen->devPrivates, copyPlaneScreenKey, proc);
- return TRUE;
-}
-
-/*
- if fg == 1 and bg ==0, we can do an ordinary CopyArea.
- if fg == bg, we can do a CopyArea with alu = mfbReduceRop(alu, fg)
- if fg == 0 and bg == 1, we use the same rasterop, with
- source operand inverted.
-
- CopyArea deals with all of the graphics exposure events.
- This code depends on knowing that we can change the
-alu in the GC without having to call ValidateGC() before calling
-CopyArea().
-
-*/
-
-
-RegionPtr
-mfbCopyPlane(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, plane)
-DrawablePtr pSrcDrawable, pDstDrawable;
-register GC *pGC;
-int srcx, srcy;
-int width, height;
-int dstx, dsty;
-unsigned long plane;
-{
- int alu;
- RegionPtr prgnExposed;
- RegionPtr (*copyPlane)(
- DrawablePtr /* pSrcDrawable */,
- DrawablePtr /* pDstDrawable */,
- GCPtr /* pGC */,
- int /* srcx */,
- int /* srcy */,
- int /* width */,
- int /* height */,
- int /* dstx */,
- int /* dsty */,
- unsigned long /* bitPlane */);
-
-
- if (pSrcDrawable->depth != 1)
- {
- if ((copyPlane = dixLookupPrivate(&pSrcDrawable->pScreen->devPrivates,
- copyPlaneScreenKey)))
- {
- return (*copyPlane) (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, plane);
- }
- else
- {
- FatalError ("No copyPlane proc registered for depth %d\n",
- pSrcDrawable->depth);
- }
- }
- if (plane != 1)
- return NULL;
-
- if ((pGC->fgPixel & 1) == 1 && (pGC->bgPixel & 1) == 0)
- {
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- }
- else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))
- {
- alu = pGC->alu;
- pGC->alu = mfbReduceRop(pGC->alu, pGC->fgPixel);
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- pGC->alu = alu;
- }
- else /* need to invert the src */
- {
- alu = pGC->alu;
- pGC->alu = InverseAlu[alu];
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty);
- pGC->alu = alu;
- }
- return prgnExposed;
-}
-
diff --git a/xorg-server/mfb/mfbblt.c b/xorg-server/mfb/mfbblt.c
deleted file mode 100644
index b87a69797..000000000
--- a/xorg-server/mfb/mfbblt.c
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * mfb copy area
- */
-
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-Author: Keith Packard
-
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "fastblt.h"
-#include "mergerop.h"
-
-void
-MROP_NAME(mfbDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
-{
- PixelType *psrcBase, *pdstBase;
- /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
-
- BoxPtr pbox;
- int nbox;
-
- BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2;
- /* temporaries for shuffling rectangles */
- DDXPointPtr pptTmp, pptNew1, pptNew2;
- /* shuffling boxes entails shuffling the
- source points too */
- int w, h;
- int xdir; /* 1 = left right, -1 = right left/ */
- int ydir; /* 1 = top down, -1 = bottom up */
-
- PixelType *psrcLine, *pdstLine;
- /* pointers to line with current src and dst */
- register PixelType *psrc;/* pointer to current src longword */
- register PixelType *pdst;/* pointer to current dst longword */
-
- MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- PixelType startmask, endmask; /* masks for writing ends of dst */
- int nlMiddle; /* whole longwords in dst */
- int xoffSrc, xoffDst;
- register int leftShift, rightShift;
- register PixelType bits;
- register PixelType bits1;
- register int nl; /* temp copy of nlMiddle */
- int careful;
-
- MROP_INITIALIZE(alu,0);
-
- mfbGetPixelWidthAndPointer(pSrc, widthSrc, psrcBase);
-
- mfbGetPixelWidthAndPointer(pDst, widthDst, pdstBase);
-
- /* XXX we have to err on the side of safety when both are windows,
- * because we don't know if IncludeInferiors is being used.
- */
- careful = ((pSrc == pDst) ||
- ((pSrc->type == DRAWABLE_WINDOW) &&
- (pDst->type == DRAWABLE_WINDOW)));
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
-
- pboxNew1 = NULL;
- pptNew1 = NULL;
- pboxNew2 = NULL;
- pptNew2 = NULL;
- if (careful && (pptSrc->y < pbox->y1))
- {
- /* walk source botttom to top */
- ydir = -1;
- widthSrc = -widthSrc;
- widthDst = -widthDst;
-
- if (nbox > 1)
- {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)xalloc(sizeof(BoxRec) * nbox);
- if(!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)xalloc(sizeof(DDXPointRec) * nbox);
- if(!pptNew1)
- {
- xfree(pboxNew1);
- return;
- }
- pboxBase = pboxNext = pbox+nbox-1;
- while (pboxBase >= pbox)
- {
- while ((pboxNext >= pbox) &&
- (pboxBase->y1 == pboxNext->y1))
- pboxNext--;
- pboxTmp = pboxNext+1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase)
- {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
- }
- pboxBase = pboxNext;
- }
- pboxNew1 -= nbox;
- pbox = pboxNew1;
- pptNew1 -= nbox;
- pptSrc = pptNew1;
- }
- }
- else
- {
- /* walk source top to bottom */
- ydir = 1;
- }
-
- if (careful && (pptSrc->x < pbox->x1))
- {
- /* walk source right to left */
- xdir = -1;
-
- if (nbox > 1)
- {
- /* reverse order of rects in each band */
- pboxNew2 = (BoxPtr)xalloc(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)xalloc(sizeof(DDXPointRec) * nbox);
- if(!pboxNew2 || !pptNew2)
- {
- if (pptNew2) xfree(pptNew2);
- if (pboxNew2) xfree(pboxNew2);
- if (pboxNew1)
- {
- xfree(pptNew1);
- xfree(pboxNew1);
- }
- return;
- }
- pboxBase = pboxNext = pbox;
- while (pboxBase < pbox+nbox)
- {
- while ((pboxNext < pbox+nbox) &&
- (pboxNext->y1 == pboxBase->y1))
- pboxNext++;
- pboxTmp = pboxNext;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp != pboxBase)
- {
- *pboxNew2++ = *--pboxTmp;
- *pptNew2++ = *--pptTmp;
- }
- pboxBase = pboxNext;
- }
- pboxNew2 -= nbox;
- pbox = pboxNew2;
- pptNew2 -= nbox;
- pptSrc = pptNew2;
- }
- }
- else
- {
- /* walk source left to right */
- xdir = 1;
- }
-
- while(nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
- if (ydir == -1) /* start at last scanline of rectangle */
- {
- psrcLine = mfbScanlineDeltaSrc(psrcBase, -(pptSrc->y+h-1), widthSrc);
- pdstLine = mfbScanlineDeltaDst(pdstBase, -(pbox->y2-1), widthDst);
- }
- else /* start at first scanline */
- {
- psrcLine = mfbScanlineDeltaSrc(psrcBase, pptSrc->y, widthSrc);
- pdstLine = mfbScanlineDeltaDst(pdstBase, pbox->y1, widthDst);
- }
- if ((pbox->x1 & PIM) + w <= PPW)
- {
- maskpartialbits (pbox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlMiddle);
- }
- if (xdir == 1)
- {
- xoffSrc = pptSrc->x & PIM;
- xoffDst = pbox->x1 & PIM;
- pdstLine += (pbox->x1 >> PWSH);
- psrcLine += (pptSrc->x >> PWSH);
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)
- (((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- if (startmask)
- {
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- psrc++;
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++;
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
-#ifdef NOTDEF
- /* you'd think this would be faster --
- * a single instruction instead of 6
- * but measurements show it to be ~15% slower
- */
- while ((nl -= 6) >= 0)
- {
- asm ("moveml %1+,#0x0c0f;moveml#0x0c0f,%0"
- : "=m" (*(char *)pdst)
- : "m" (*(char *)psrc)
- : "d0", "d1", "d2", "d3",
- "a2", "a3");
- pdst += 6;
- }
- nl += 6;
- while (nl--)
- *pdst++ = *psrc++;
-#endif
- DuffL(nl, label1,
- *pdst = MROP_SOLID (*psrc, *pdst);
- pdst++; psrc++;)
-#endif
-
- if (endmask)
- *pdst = MROP_MASK(*psrc, *pdst, endmask);
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffSrc > xoffDst)
- bits = *psrc++;
- if (startmask)
- {
- bits1 = BitLeft(bits,leftShift);
- if (BitLeft(startmask, rightShift)) {
- bits = *psrc++;
- bits1 |= BitRight(bits,rightShift);
- }
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- pdst++;
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-
-#ifdef FAST_CONSTANT_OFFSET_MODE
-
- psrc += nl & (UNROLL-1);
- pdst += nl & (UNROLL-1);
-
-#define BodyOdd(n) \
-bits = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]);
-
-#define BodyEven(n) \
-bits1 = psrc[-n]; \
-pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]);
-
-#define LoopReset \
-pdst += UNROLL; \
-psrc += UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \
-pdst++;
-
-#define BodyEven(n) \
-bits1 = *psrc++; \
-*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \
-pdst++;
-
-#define LoopReset ;
-
-#endif /* !FAST_CONSTANT_OFFSET_MODE */
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl,label2,
- bits1 = BitLeft(bits, leftShift);
- bits = *psrc++;
- *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst);
- pdst++;
- )
-#endif
-
- if (endmask)
- {
- bits1 = BitLeft(bits, leftShift);
- if (BitLeft(endmask, rightShift))
- {
- bits = *psrc;
- bits1 |= BitRight(bits, rightShift);
- }
- *pdst = MROP_MASK (bits1, *pdst, endmask);
- }
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#endif /* DO_UNALIGNED_BITBLT */
- }
- else /* xdir == -1 */
- {
- xoffSrc = (pptSrc->x + w - 1) & PIM;
- xoffDst = (pbox->x2 - 1) & PIM;
- pdstLine += ((pbox->x2-1) >> PWSH) + 1;
- psrcLine += ((pptSrc->x+w - 1) >> PWSH) + 1;
-#ifdef DO_UNALIGNED_BITBLT
- nl = xoffSrc - xoffDst;
- psrcLine = (PixelType *)
- (((unsigned char *) psrcLine) + nl);
-#else
- if (xoffSrc == xoffDst)
-#endif
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- if (endmask)
- {
- pdst--;
- psrc--;
- *pdst = MROP_MASK (*psrc, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) pdst[n-1] = MROP_SOLID (psrc[n-1], pdst[n-1]);
-
-#define BodyEven(n) BodyOdd(n)
-
-#define LoopReset \
-pdst -= UNROLL;\
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) --pdst; --psrc; *pdst = MROP_SOLID(*psrc, *pdst);
-#define BodyEven(n) BodyOdd(n)
-#define LoopReset ;
-
-#endif
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL(nl,label3,
- --pdst; --psrc; *pdst = MROP_SOLID (*psrc, *pdst);)
-#endif
-
- if (startmask)
- {
- --pdst;
- --psrc;
- *pdst = MROP_MASK(*psrc, *pdst, startmask);
- }
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#ifndef DO_UNALIGNED_BITBLT
- else
- {
- if (xoffDst > xoffSrc)
- {
- rightShift = (xoffDst - xoffSrc);
- leftShift = PPW - rightShift;
- }
- else
- {
- leftShift = (xoffSrc - xoffDst);
- rightShift = PPW - leftShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- bits = 0;
- if (xoffDst > xoffSrc)
- bits = *--psrc;
- if (endmask)
- {
- bits1 = BitRight(bits, rightShift);
- if (BitRight(endmask, leftShift)) {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- pdst--;
- *pdst = MROP_MASK(bits1, *pdst, endmask);
- }
- nl = nlMiddle;
-
-#ifdef LARGE_INSTRUCTION_CACHE
- bits1 = bits;
-#ifdef FAST_CONSTANT_OFFSET_MODE
- psrc -= nl & (UNROLL - 1);
- pdst -= nl & (UNROLL - 1);
-
-#define BodyOdd(n) \
-bits = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),pdst[n-1]);
-
-#define BodyEven(n) \
-bits1 = psrc[n-1]; \
-pdst[n-1] = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),pdst[n-1]);
-
-#define LoopReset \
-pdst -= UNROLL; \
-psrc -= UNROLL;
-
-#else
-
-#define BodyOdd(n) \
-bits = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),*pdst);
-
-#define BodyEven(n) \
-bits1 = *--psrc; --pdst; \
-*pdst = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),*pdst);
-
-#define LoopReset ;
-
-#endif
-
- PackedLoop
-
-#undef BodyOdd
-#undef BodyEven
-#undef LoopReset
-
-#else
- DuffL (nl, label4,
- bits1 = BitRight(bits, rightShift);
- bits = *--psrc;
- --pdst;
- *pdst = MROP_SOLID(bits1 | BitLeft(bits, leftShift),*pdst);
- )
-#endif
-
- if (startmask)
- {
- bits1 = BitRight(bits, rightShift);
- if (BitRight (startmask, leftShift))
- {
- bits = *--psrc;
- bits1 |= BitLeft(bits, leftShift);
- }
- --pdst;
- *pdst = MROP_MASK(bits1, *pdst, startmask);
- }
- mfbScanlineIncDst(pdstLine, widthDst);
- mfbScanlineIncSrc(psrcLine, widthSrc);
- }
- }
-#endif
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2)
- {
- xfree(pptNew2);
- xfree(pboxNew2);
- }
- if (pboxNew1)
- {
- xfree(pptNew1);
- xfree(pboxNew1);
- }
-}
diff --git a/xorg-server/mfb/mfbbltC.c b/xorg-server/mfb/mfbbltC.c
deleted file mode 100644
index b6a830cea..000000000
--- a/xorg-server/mfb/mfbbltC.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP Mcopy
-#include "./mfbblt.c"
diff --git a/xorg-server/mfb/mfbbltCI.c b/xorg-server/mfb/mfbbltCI.c
deleted file mode 100644
index 274b8153a..000000000
--- a/xorg-server/mfb/mfbbltCI.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP McopyInverted
-#include "./mfbblt.c"
diff --git a/xorg-server/mfb/mfbbltG.c b/xorg-server/mfb/mfbbltG.c
deleted file mode 100644
index 28b6070b4..000000000
--- a/xorg-server/mfb/mfbbltG.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP 0
-#include "./mfbblt.c"
diff --git a/xorg-server/mfb/mfbbltO.c b/xorg-server/mfb/mfbbltO.c
deleted file mode 100644
index 94a4c329d..000000000
--- a/xorg-server/mfb/mfbbltO.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP Mor
-#include "./mfbblt.c"
diff --git a/xorg-server/mfb/mfbbltX.c b/xorg-server/mfb/mfbbltX.c
deleted file mode 100644
index 9228e3861..000000000
--- a/xorg-server/mfb/mfbbltX.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP Mxor
-#include "./mfbblt.c"
diff --git a/xorg-server/mfb/mfbbres.c b/xorg-server/mfb/mfbbres.c
deleted file mode 100644
index ee2f10f33..000000000
--- a/xorg-server/mfb/mfbbres.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-mfbBresS(rop, addrlbase, nlwidth, signdx, signdy, axis, x1, y1, e, e1, e2, len)
-int rop; /* a reduced rasterop */
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl; /* bitmask 32-bit pointer */
- register PixelType bit; /* current bit being set/cleared/etc. */
- PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
- PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
-
- register int e3 = e2-e1;
- PixelType tmp;
-
- /* point to longword containing first point */
- addrl = mfbScanline(addrlbase, x1, y1, nlwidth);
- yinc = signdy * nlwidth;
- e = e-e1; /* to make looping easier */
- bit = mask[x1 & PIM];
-
- if (!len)
- return;
- if (rop == RROP_BLACK)
- {
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- tmp = *addrl;
- for (;;)
- {
- tmp &= ~bit;
- if (!--len)
- break;
- bit = SCRRIGHT(bit,1);
- e += e1;
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- else
- {
- tmp = *addrl;
- for (;;)
- {
- tmp &= ~bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- else
- {
- while(len--)
- {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- }
- else if (rop == RROP_WHITE)
- {
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- tmp = *addrl;
- for (;;)
- {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRRIGHT(bit,1);
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = leftbit;
- addrl ++;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = leftbit;
- addrl ++;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- else
- {
- tmp = *addrl;
- for (;;)
- {
- tmp |= bit;
- if (!--len)
- break;
- e += e1;
- bit = SCRLEFT(bit,1);
- if (e >= 0)
- {
- *addrl = tmp;
- mfbScanlineInc(addrl, yinc);
- e += e3;
- if (!bit)
- {
- bit = rightbit;
- addrl --;
- }
- tmp = *addrl;
- }
- else if (!bit)
- {
- *addrl = tmp;
- bit = rightbit;
- addrl --;
- tmp = *addrl;
- }
- }
- *addrl = tmp;
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl |= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- else
- {
- while(len--)
- {
- *addrl |= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- }
- else if (rop == RROP_INVERT)
- {
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- }
- }
- else
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- else
- {
- while(len--)
- {
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit; addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- }
-}
diff --git a/xorg-server/mfb/mfbbresd.c b/xorg-server/mfb/mfbbresd.c
deleted file mode 100644
index 3904c0db1..000000000
--- a/xorg-server/mfb/mfbbresd.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* Dashed bresenham line */
-
-#define StepDash\
- if (!--dashRemaining) { \
- if (++ dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- rop = fgrop; \
- if (dashIndex & 1) \
- rop = bgrop; \
- }
-
-void
-mfbBresD(fgrop, bgrop,
- pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrlbase, nlwidth,
- signdx, signdy, axis, x1, y1, e, e1, e2, len)
-int fgrop, bgrop;
-int *pdashIndex; /* current dash */
-unsigned char *pDash; /* dash list */
-int numInDashList; /* total length of dash list */
-int *pdashOffset; /* offset into current dash */
-int isDoubleDash;
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int signdx, signdy; /* signs of directions */
-int axis; /* major axis (Y_AXIS or X_AXIS) */
-int x1, y1; /* initial point */
-register int e; /* error accumulator */
-register int e1; /* bresenham increments */
-int e2;
-int len; /* length of line */
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl;
- register int e3 = e2-e1;
- register MfbBits bit;
- PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
- PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- int rop;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- dashRemaining = pDash[dashIndex] - dashOffset;
- rop = fgrop;
- if (!isDoubleDash)
- bgrop = -1;
- if (dashIndex & 1)
- rop = bgrop;
-
- /* point to longword containing first point */
- addrl = mfbScanline(addrlbase, x1, y1, nlwidth);
- yinc = signdy * nlwidth;
- e = e-e1; /* to make looping easier */
- bit = mask[x1 & PIM];
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- StepDash
- }
- }
- else
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- mfbScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- StepDash
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- StepDash
- }
- }
- else
- {
- while(len--)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~bit;
- else if (rop == RROP_WHITE)
- *addrl |= bit;
- else if (rop == RROP_INVERT)
- *addrl ^= bit;
- e += e1;
- if (e >= 0)
- {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- mfbScanlineInc(addrl, yinc);
- StepDash
- }
- }
- } /* else Y_AXIS */
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/xorg-server/mfb/mfbclip.c b/xorg-server/mfb/mfbclip.c
deleted file mode 100644
index 48e532aa8..000000000
--- a/xorg-server/mfb/mfbclip.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-
-#include <X11/X.h>
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "gc.h"
-#include "maskbits.h"
-#include "mi.h"
-#include "mfb.h"
-
-#define ADDRECT(reg,r,fr,rx1,ry1,rx2,ry2) \
-if (((rx1) < (rx2)) && ((ry1) < (ry2)) && \
- (!((reg)->data->numRects && \
- ((r-1)->y1 == (ry1)) && \
- ((r-1)->y2 == (ry2)) && \
- ((r-1)->x1 <= (rx1)) && \
- ((r-1)->x2 >= (rx2))))) \
-{ \
- if ((reg)->data->numRects == (reg)->data->size) \
- { \
- miRectAlloc(reg, 1); \
- fr = REGION_BOXPTR(reg); \
- r = fr + (reg)->data->numRects; \
- } \
- r->x1 = (rx1); \
- r->y1 = (ry1); \
- r->x2 = (rx2); \
- r->y2 = (ry2); \
- (reg)->data->numRects++; \
- if(r->x1 < (reg)->extents.x1) \
- (reg)->extents.x1 = r->x1; \
- if(r->x2 > (reg)->extents.x2) \
- (reg)->extents.x2 = r->x2; \
- r++; \
-}
-
-/* Convert bitmap clip mask into clipping region.
- * First, goes through each line and makes boxes by noting the transitions
- * from 0 to 1 and 1 to 0.
- * Then it coalesces the current line with the previous if they have boxes
- * at the same X coordinates.
- */
-RegionPtr
-mfbPixmapToRegion(pPix)
- PixmapPtr pPix;
-{
- register RegionPtr pReg;
- register PixelType *pw, w;
- register int ib;
- int width, h, base, rx1 = 0, crects;
- PixelType *pwLineEnd;
- int irectPrevStart, irectLineStart;
- register BoxPtr prectO, prectN;
- BoxPtr FirstRect, rects, prectLineStart;
- Bool fInBox, fSame;
- register PixelType mask0 = mask[0];
- PixelType *pwLine;
- int nWidth;
-
- pReg = REGION_CREATE(pPix->drawable.pScreen, NULL, 1);
- if(!pReg)
- return NullRegion;
- FirstRect = REGION_BOXPTR(pReg);
- rects = FirstRect;
-
- pwLine = (PixelType *) pPix->devPrivate.ptr;
- nWidth = pPix->devKind / PGSZB;
-
- width = pPix->drawable.width;
- pReg->extents.x1 = width - 1;
- pReg->extents.x2 = 0;
- irectPrevStart = -1;
- for(h = 0; h < pPix->drawable.height; h++)
- {
- pw = pwLine;
- pwLine += nWidth;
- irectLineStart = rects - FirstRect;
- /* If the Screen left most bit of the word is set, we're starting in
- * a box */
- if(*pw & mask0)
- {
- fInBox = TRUE;
- rx1 = 0;
- }
- else
- fInBox = FALSE;
- /* Process all words which are fully in the pixmap */
- pwLineEnd = pw + (width >> PWSH);
- for (base = 0; pw < pwLineEnd; base += PPW)
- {
- w = *pw++;
- if (fInBox)
- {
- if (!~w)
- continue;
- }
- else
- {
- if (!w)
- continue;
- }
- for(ib = 0; ib < PPW; ib++)
- {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if(w & mask0)
- {
- if(!fInBox)
- {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- if(width & PIM)
- {
- /* Process final partial word on line */
- w = *pw++;
- for(ib = 0; ib < (width & PIM); ib++)
- {
- /* If the Screen left most bit of the word is set, we're
- * starting a box */
- if(w & mask0)
- {
- if(!fInBox)
- {
- rx1 = base + ib;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + ib, h + 1);
- fInBox = FALSE;
- }
- }
- /* Shift the word VISUALLY left one. */
- w = SCRLEFT(w, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox)
- {
- ADDRECT(pReg, rects, FirstRect,
- rx1, h, base + (width & PIM), h + 1);
- }
- /* if all rectangles on this line have the same x-coords as
- * those on the previous line, then add 1 to all the previous y2s and
- * throw away all the rectangles from this line
- */
- fSame = FALSE;
- if(irectPrevStart != -1)
- {
- crects = irectLineStart - irectPrevStart;
- if(crects == ((rects - FirstRect) - irectLineStart))
- {
- prectO = FirstRect + irectPrevStart;
- prectN = prectLineStart = FirstRect + irectLineStart;
- fSame = TRUE;
- while(prectO < prectLineStart)
- {
- if((prectO->x1 != prectN->x1) || (prectO->x2 != prectN->x2))
- {
- fSame = FALSE;
- break;
- }
- prectO++;
- prectN++;
- }
- if (fSame)
- {
- prectO = FirstRect + irectPrevStart;
- while(prectO < prectLineStart)
- {
- prectO->y2 += 1;
- prectO++;
- }
- rects -= crects;
- pReg->data->numRects -= crects;
- }
- }
- }
- if(!fSame)
- irectPrevStart = irectLineStart;
- }
- if (!pReg->data->numRects)
- pReg->extents.x1 = pReg->extents.x2 = 0;
- else
- {
- pReg->extents.y1 = REGION_BOXPTR(pReg)->y1;
- pReg->extents.y2 = REGION_END(pReg)->y2;
- if (pReg->data->numRects == 1)
- {
- xfree(pReg->data);
- pReg->data = (RegDataPtr)NULL;
- }
- }
-#ifdef DEBUG
- if (!miValidRegion(pReg))
- FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
-#endif
- return(pReg);
-}
-
-mfbPixmapToRegionProc *
-mfbPixmapToRegionWeak(void)
-{
- return mfbPixmapToRegion;
-}
diff --git a/xorg-server/mfb/mfbcmap.c b/xorg-server/mfb/mfbcmap.c
deleted file mode 100644
index 4dabcae1a..000000000
--- a/xorg-server/mfb/mfbcmap.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-#include "mfb.h"
-
-/* A monochrome frame buffer is a static gray colormap with two entries.
- * We have a "required list" of length 1. Because we can only support 1
- * colormap, we never have to change it, but we may have to change the
- * name we call it. If someone installs a new colormap, we know it must
- * look just like the old one (because we've checked in dispatch that it was
- * a valid colormap identifier, and all the colormap IDs for this device
- * look the same). Nevertheless, we still have to uninstall the old colormap
- * and install the new one. Similarly, if someone uninstalls a colormap,
- * we have to install the default map, even though we know those two looked
- * alike.
- * The required list concept is pretty much irrelevant when you can only
- * have one map installed at a time.
- */
-
-int
-mfbListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-mfbInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-mfbUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-/*ARGSUSED*/
-void
-mfbResolveColor (pred, pgreen, pblue, pVisual)
- unsigned short *pred;
- unsigned short *pgreen;
- unsigned short *pblue;
- VisualPtr pVisual;
-{
- /*
- * Gets intensity from RGB. If intensity is >= half, pick white, else
- * pick black. This may well be more trouble than it's worth.
- */
- *pred = *pgreen = *pblue =
- (((30L * *pred +
- 59L * *pgreen +
- 11L * *pblue) >> 8) >= (((1<<8)-1)*50)) ? ~0 : 0;
-}
-
-Bool
-mfbCreateColormap(pMap)
- ColormapPtr pMap;
-{
- ScreenPtr pScreen;
- unsigned short red0, green0, blue0;
- unsigned short red1, green1, blue1;
- Pixel pix;
-
- pScreen = pMap->pScreen;
- if (pScreen->whitePixel == 0)
- {
- red0 = green0 = blue0 = ~0;
- red1 = green1 = blue1 = 0;
- }
- else
- {
- red0 = green0 = blue0 = 0;
- red1 = green1 = blue1 = ~0;
- }
-
- /* this is a monochrome colormap, it only has two entries, just fill
- * them in by hand. If it were a more complex static map, it would be
- * worth writing a for loop or three to initialize it */
-
- /* this will be pixel 0 */
- pix = 0;
- if (AllocColor(pMap, &red0, &green0, &blue0, &pix, 0) != Success)
- return FALSE;
-
- /* this will be pixel 1 */
- if (AllocColor(pMap, &red1, &green1, &blue1, &pix, 0) != Success)
- return FALSE;
- return TRUE;
-}
-
-/*ARGSUSED*/
-void
-mfbDestroyColormap (pMap)
- ColormapPtr pMap;
-{
- return;
-}
-
-Bool
-mfbCreateDefColormap (pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
diff --git a/xorg-server/mfb/mfbfillarc.c b/xorg-server/mfb/mfbfillarc.c
deleted file mode 100644
index cbf47a0eb..000000000
--- a/xorg-server/mfb/mfbfillarc.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <limits.h>
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "mifillarc.h"
-#include "mi.h"
-
-static void
-mfbFillEllipseSolid(
- DrawablePtr pDraw,
- xArc *arc,
- register int rop)
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- register int slw;
- miFillArcRec info;
- PixelType *addrlt, *addrlb;
- register PixelType *addrl;
- register int n;
- int nlwidth;
- register int xpos;
- PixelType startmask, endmask;
- int nlmiddle;
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrlt);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += nlwidth * (yorg - y);
- addrlb += nlwidth * (yorg + y + dy);
- while (y)
- {
- addrlt += nlwidth;
- addrlb -= nlwidth;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- addrl = mfbScanlineOffset(addrlt, (xpos >> PWSH));
- if (((xpos & PIM) + slw) < PPW)
- {
- maskpartialbits(xpos, slw, startmask);
- if (rop == RROP_BLACK)
- *addrl &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl |= startmask;
- else
- *addrl ^= startmask;
- if (miFillArcLower(slw))
- {
- addrl = mfbScanlineOffset(addrlb, (xpos >> PWSH));
- if (rop == RROP_BLACK)
- *addrl &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl |= startmask;
- else
- *addrl ^= startmask;
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- if (startmask)
- {
- if (rop == RROP_BLACK)
- *addrl++ &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl++ |= startmask;
- else
- *addrl++ ^= startmask;
- }
- n = nlmiddle;
- if (rop == RROP_BLACK)
- while (n--)
- *addrl++ = 0;
- else if (rop == RROP_WHITE)
- while (n--)
- *addrl++ = ~0;
- else
- while (n--)
- *addrl++ ^= ~0;
- if (endmask)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~endmask;
- else if (rop == RROP_WHITE)
- *addrl |= endmask;
- else
- *addrl ^= endmask;
- }
- if (!miFillArcLower(slw))
- continue;
- addrl = mfbScanlineOffset(addrlb, (xpos >> PWSH));
- if (startmask)
- {
- if (rop == RROP_BLACK)
- *addrl++ &= ~startmask;
- else if (rop == RROP_WHITE)
- *addrl++ |= startmask;
- else
- *addrl++ ^= startmask;
- }
- n = nlmiddle;
- if (rop == RROP_BLACK)
- while (n--)
- *addrl++ = 0;
- else if (rop == RROP_WHITE)
- while (n--)
- *addrl++ = ~0;
- else
- while (n--)
- *addrl++ ^= ~0;
- if (endmask)
- {
- if (rop == RROP_BLACK)
- *addrl &= ~endmask;
- else if (rop == RROP_WHITE)
- *addrl |= endmask;
- else
- *addrl ^= endmask;
- }
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) \
- { \
- width = xr - xl + 1; \
- addrl = mfbScanlineOffset(addr, (xl >> PWSH)); \
- if (((xl & PIM) + width) < PPW) \
- { \
- maskpartialbits(xl, width, startmask); \
- if (rop == RROP_BLACK) \
- *addrl &= ~startmask; \
- else if (rop == RROP_WHITE) \
- *addrl |= startmask; \
- else \
- *addrl ^= startmask; \
- } \
- else \
- { \
- maskbits(xl, width, startmask, endmask, nlmiddle); \
- if (startmask) \
- { \
- if (rop == RROP_BLACK) \
- *addrl++ &= ~startmask; \
- else if (rop == RROP_WHITE) \
- *addrl++ |= startmask; \
- else \
- *addrl++ ^= startmask; \
- } \
- n = nlmiddle; \
- if (rop == RROP_BLACK) \
- while (n--) \
- *addrl++ = 0; \
- else if (rop == RROP_WHITE) \
- while (n--) \
- *addrl++ = ~0; \
- else \
- while (n--) \
- *addrl++ ^= ~0; \
- if (endmask) \
- { \
- if (rop == RROP_BLACK) \
- *addrl &= ~endmask; \
- else if (rop == RROP_WHITE) \
- *addrl |= endmask; \
- else \
- *addrl ^= endmask; \
- } \
- } \
- }
-
-#define FILLSLICESPANS(flip,addr) \
- if (!flip) \
- { \
- FILLSPAN(xl, xr, addr); \
- } \
- else \
- { \
- xc = xorg - x; \
- FILLSPAN(xc, xr, addr); \
- xc += slw - 1; \
- FILLSPAN(xl, xc, addr); \
- }
-
-static void
-mfbFillArcSliceSolidCopy(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc,
- register int rop)
-{
- register PixelType *addrl;
- register int n;
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- PixelType *addrlt, *addrlb;
- int nlwidth;
- int width;
- PixelType startmask, endmask;
- int nlmiddle;
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrlt);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt = mfbScanlineDeltaNoBankSwitch(addrlt, yorg - y, nlwidth);
- addrlb = mfbScanlineDeltaNoBankSwitch(addrlb, yorg + y + dy, nlwidth);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0)
- {
- mfbScanlineIncNoBankSwitch(addrlt, nlwidth);
- mfbScanlineIncNoBankSwitch(addrlb, -nlwidth);
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice))
- {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrlt);
- }
- if (miFillSliceLower(slice))
- {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrlb);
- }
- }
-}
-
-void
-mfbPolyFillArcSolid(pDraw, pGC, narcs, parcs)
- register DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- mfbPrivGC *priv;
- register xArc *arc;
- register int i;
- BoxRec box;
- int x2, y2;
- RegionPtr cclip;
- int rop;
-
- priv = (mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- rop = priv->rop;
- if ((rop == RROP_NOP) || !(pGC->planemask & 1))
- return;
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miFillArcEmpty(arc))
- continue;
- if (miCanFillArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= SHRT_MAX) && (y2 <= SHRT_MAX) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- mfbFillEllipseSolid(pDraw, arc, rop);
- else
- mfbFillArcSliceSolidCopy(pDraw, pGC, arc, rop);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/xorg-server/mfb/mfbfillrct.c b/xorg-server/mfb/mfbfillrct.c
deleted file mode 100644
index a0b3d6716..000000000
--- a/xorg-server/mfb/mfbfillrct.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#define MODEQ(a, b) ((a) %= (b))
-
-/*
- filled rectangles.
- translate the rectangles, clip them, and call the
-helper function in the GC.
-*/
-
-#define NUM_STACK_RECTS 1024
-
-void
-mfbPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nrectFill; /* number of rectangles to fill */
- xRectangle *prectInit; /* Pointer to first rectangle to fill */
-{
- xRectangle *prect;
- RegionPtr prgnClip;
- register BoxPtr pbox;
- register BoxPtr pboxClipped;
- BoxPtr pboxClippedBase;
- BoxPtr pextent;
- BoxRec stackRects[NUM_STACK_RECTS];
- int numRects;
- int n;
- int xorg, yorg;
- mfbPrivGC *priv;
- int alu;
- mfbFillAreaProcPtr pfn;
- PixmapPtr ppix;
-
- if (!(pGC->planemask & 1))
- return;
-
- priv = (mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- alu = priv->ropFillArea;
- pfn = priv->FillArea;
- ppix = pGC->pRotatedPixmap;
- prgnClip = pGC->pCompositeClip;
-
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg)
- {
- prect = prectInit;
- n = nrectFill;
- Duff (n, prect->x += xorg; prect->y += yorg; prect++);
- }
-
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS)
- {
- pboxClippedBase = (BoxPtr)xalloc(numRects * sizeof(BoxRec));
- if (!pboxClippedBase)
- return;
- }
- else
- pboxClippedBase = stackRects;
-
- pboxClipped = pboxClippedBase;
-
- if (REGION_NUM_RECTS(prgnClip) == 1)
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_RECTS(prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- if ((pboxClipped->x1 = prect->x) < x1)
- pboxClipped->x1 = x1;
-
- if ((pboxClipped->y1 = prect->y) < y1)
- pboxClipped->y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- pboxClipped->x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- pboxClipped->y2 = by2;
-
- prect++;
- if ((pboxClipped->x1 < pboxClipped->x2) &&
- (pboxClipped->y1 < pboxClipped->y2))
- {
- pboxClipped++;
- }
- }
- }
- else
- {
- int x1, y1, x2, y2, bx2, by2;
-
- pextent = REGION_EXTENTS(pGC->pScreen, prgnClip);
- x1 = pextent->x1;
- y1 = pextent->y1;
- x2 = pextent->x2;
- y2 = pextent->y2;
- while (nrectFill--)
- {
- BoxRec box;
-
- if ((box.x1 = prect->x) < x1)
- box.x1 = x1;
-
- if ((box.y1 = prect->y) < y1)
- box.y1 = y1;
-
- bx2 = (int) prect->x + (int) prect->width;
- if (bx2 > x2)
- bx2 = x2;
- box.x2 = bx2;
-
- by2 = (int) prect->y + (int) prect->height;
- if (by2 > y2)
- by2 = y2;
- box.y2 = by2;
-
- prect++;
-
- if ((box.x1 >= box.x2) || (box.y1 >= box.y2))
- continue;
-
- n = REGION_NUM_RECTS (prgnClip);
- pbox = REGION_RECTS(prgnClip);
-
- /* clip the rectangle to each box in the clip region
- this is logically equivalent to calling Intersect()
- */
- while(n--)
- {
- pboxClipped->x1 = max(box.x1, pbox->x1);
- pboxClipped->y1 = max(box.y1, pbox->y1);
- pboxClipped->x2 = min(box.x2, pbox->x2);
- pboxClipped->y2 = min(box.y2, pbox->y2);
- pbox++;
-
- /* see if clipping left anything */
- if(pboxClipped->x1 < pboxClipped->x2 &&
- pboxClipped->y1 < pboxClipped->y2)
- {
- pboxClipped++;
- }
- }
- }
- }
- if (pboxClipped != pboxClippedBase)
- (*pfn) (pDrawable,pboxClipped-pboxClippedBase, pboxClippedBase, alu, ppix);
- if (pboxClippedBase != stackRects)
- xfree(pboxClippedBase);
-}
diff --git a/xorg-server/mfb/mfbfillsp.c b/xorg-server/mfb/mfbfillsp.c
deleted file mode 100644
index c073535df..000000000
--- a/xorg-server/mfb/mfbfillsp.c
+++ /dev/null
@@ -1,1029 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "mergerop.h"
-
-#include "servermd.h"
-#include "mi.h"
-#include "mispans.h"
-
-/* scanline filling for monochrome frame buffer
- written by drewry, oct 1986
-
- these routines all clip. they assume that anything that has called
-them has already translated the points (i.e. pGC->miTranslate is
-non-zero, which is howit gets set in mfbCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
- FillSolid is overloaded to be used for OpaqueStipple as well,
-if fgPixel == bgPixel.
-
-
- FillTiled is overloaded to be used for OpaqueStipple, if
-fgPixel != bgPixel. based on the fill style, it uses
-{RotatedPixmap, gc.alu} or {RotatedPixmap, PrivGC.ropOpStip}
-*/
-
-
-void
-mfbBlackSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
-
- if (*pwidth)
- {
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~startmask;
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- }
- }
- pwidth++;
- ppt++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-
-void
-mfbWhiteSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
-
- if (*pwidth)
- {
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= startmask;
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- }
- }
- pwidth++;
- ppt++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-
-void
-mfbInvertSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
-
- if (*pwidth)
- {
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- /* all bits inside same longword */
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= startmask;
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- }
- }
- pwidth++;
- ppt++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-void
-mfbWhiteStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl;/* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
-
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl |= (src & startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ |= (src & startmask);
- Duff (nlmiddle, *addrl++ |= src);
- if (endmask)
- *addrl |= (src & endmask);
- }
- pwidth++;
- ppt++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-void
-mfbBlackStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
-
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl &= ~(src & startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ &= ~(src & startmask);
- Duff (nlmiddle, *addrl++ &= ~src);
- if (endmask)
- *addrl &= ~(src & endmask);
- }
- pwidth++;
- ppt++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-void
-mfbInvertStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pStipple;
- PixelType *psrc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- while (n--)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
-
- /* all bits inside same longword */
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl ^= (src & startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- *addrl++ ^= (src & startmask);
- Duff(nlmiddle, *addrl++ ^= src);
- if (endmask)
- *addrl ^= (src & endmask);
- }
- pwidth++;
- ppt++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-/* this works with tiles of width == PPW */
-#define FILLSPANPPW(ROP) \
- while (n--) \
- { \
- if (*pwidth) \
- { \
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); \
- src = psrc[ppt->y % tileHeight]; \
- if ( ((ppt->x & PIM) + *pwidth) < PPW) \
- { \
- maskpartialbits(ppt->x, *pwidth, startmask); \
- *addrl = (*addrl & ~startmask) | \
- (ROP(src, *addrl) & startmask); \
- } \
- else \
- { \
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); \
- if (startmask) \
- { \
- *addrl = (*addrl & ~startmask) | \
- (ROP(src, *addrl) & startmask); \
- addrl++; \
- } \
- while (nlmiddle--) \
- { \
- *addrl = ROP(src, *addrl); \
- addrl++; \
- } \
- if (endmask) \
- *addrl = (*addrl & ~endmask) | \
- (ROP(src, *addrl) & endmask); \
- } \
- } \
- pwidth++; \
- ppt++; \
- }
-
-
-
-void
-mfbTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *addrl; /* pointer to current longword in bitmap */
- register PixelType src;
- register int nlmiddle;
- register PixelType startmask;
- register PixelType endmask;
- PixmapPtr pTile;
- PixelType *psrc;
- int tileHeight;
- int rop;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- MfbBits flip;
-
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- if (pGC->fillStyle == FillTiled)
- rop = pGC->alu;
- else
- rop = ((mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey()))->ropOpStip;
-
- flip = 0;
- switch(rop)
- {
- case GXcopyInverted: /* for opaque stipples */
- flip = ~0;
- case GXcopy:
- {
-
-#define DoMaskCopyRop(src,dst,mask) (((dst) & ~(mask)) | ((src) & (mask)))
-
- while (n--)
- {
- if (*pwidth)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight] ^ flip;
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- {
- *addrl = DoMaskCopyRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--)
- {
- *addrl = src;
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskCopyRop (src, *addrl, endmask);
- }
- }
- pwidth++;
- ppt++;
- }
- }
- break;
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--)
- {
- if (*pwidth)
- {
- addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- src = psrc[ppt->y % tileHeight];
- if ( ((ppt->x & PIM) + *pwidth) < PPW)
- {
- maskpartialbits(ppt->x, *pwidth, startmask);
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- }
- else
- {
- maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle);
- if (startmask)
- {
- *addrl = DoMaskMergeRop (src, *addrl, startmask);
- addrl++;
- }
- while (nlmiddle--)
- {
- *addrl = DoMergeRop (src, *addrl);
- addrl++;
- }
- if (endmask)
- *addrl = DoMaskMergeRop (src, *addrl, endmask);
- }
- }
- pwidth++;
- ppt++;
- }
- }
- break;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-/* Fill spans with tiles that aren't PPW bits wide */
-void
-mfbUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- int iline; /* first line of tile to use */
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst;/* pointer to current word in bitmap */
- register PixelType *psrc;/* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- PixelType endmask, *psrcT;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- if (pGC->fillStyle == FillTiled)
- {
- pTile = pGC->tile.pixmap;
- tlwidth = pTile->devKind / PGSZB;
- rop = pGC->alu;
- }
- else
- {
- pTile = pGC->stipple;
- tlwidth = pTile->devKind / PGSZB;
- rop = ((mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey()))->ropOpStip;
- }
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
-
- /* this replaces rotating the tile. Instead we just adjust the offset
- * at which we start grabbing bits from the tile.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
-
- while (n--)
- {
- iline = (ppt->y - ySrc) % tileHeight;
- pdst = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- x = ppt->x;
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0)
- {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrop((psrc+endinc), (rem&PIM), (x & PIM), w, pdst, rop);
- if((x & PIM) + w >= PPW)
- pdst++;
- }
- else if(((x & PIM) + w) < PPW)
- {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrop(*psrc, x & PIM, w, pdst, rop);
- }
- else
- {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask)
- {
- putbitsrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
-#if defined(__alpha__) || defined(__alpha)
- /*
- * XXX workaround an egcs 1.1.2 code generation
- * bug. This version might actually be faster.
- */
- psrc += srcStartOver;
-#else
- if(srcStartOver)
- psrc++;
-#endif
- }
-
- while(nlMiddle--)
- {
- getandputrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if(endmask)
- {
- getandputrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
-
-
-/* Fill spans with stipples that aren't PPW bits wide */
-void
-mfbUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted)
- DrawablePtr pDrawable;
- GC *pGC;
- int nInit; /* number of spans to fill */
- DDXPointPtr pptInit; /* pointer to list of start points */
- int *pwidthInit; /* pointer to list of n widths */
- int fSorted;
-{
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- int iline; /* first line of tile to use */
- PixelType *addrlBase; /* pointer to start of bitmap */
- int nlwidth; /* width in longwords of bitmap */
- register PixelType *pdst; /* pointer to current word in bitmap */
- register PixelType *psrc; /* pointer to current word in tile */
- register int nlMiddle;
- register int rop, nstart;
- PixelType startmask;
- PixmapPtr pTile; /* pointer to tile we want to fill with */
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- PixelType endmask, *psrcT;
- int tlwidth, rem, tileWidth, endinc;
- int tileHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
-
- if (!(pGC->planemask & 1))
- return;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)xalloc(n * sizeof(int));
- pptFree = (DDXPointRec *)xalloc(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) xfree(pptFree);
- if (pwidthFree) xfree(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- rop = ((mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey()))->rop;
- tlwidth = pTile->devKind / PGSZB;
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
-
- /* this replaces rotating the stipple. Instead, we just adjust the offset
- * at which we start grabbing bits from the stipple.
- * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0,
- * so that iline and rem always stay within the tile bounds.
- */
- xSrc += (pGC->patOrg.x % tileWidth) - tileWidth;
- ySrc += (pGC->patOrg.y % tileHeight) - tileHeight;
- while (n--)
- {
- iline = (ppt->y - ySrc) % tileHeight;
- pdst = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth);
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- x = ppt->x;
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- psrc = psrcT;
- w = min(tileWidth, width);
- if((rem = (x - xSrc) % tileWidth) != 0)
- {
- /* if we're in the middle of the tile, get
- as many bits as will finish the span, or
- as many as will get to the left edge of the tile,
- or a longword worth, starting at the appropriate
- offset in the tile.
- */
- w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD);
- endinc = rem / BITMAP_SCANLINE_PAD;
- getandputrrop((psrc + endinc), (rem & PIM), (x & PIM),
- w, pdst, rop)
- if((x & PIM) + w >= PPW)
- pdst++;
- }
-
- else if(((x & PIM) + w) < PPW)
- {
- /* doing < PPW bits is easy, and worth special-casing */
- putbitsrrop(*psrc, x & PIM, w, pdst, rop);
- }
- else
- {
- /* start at the left edge of the tile,
- and put down as much as we can
- */
- maskbits(x, w, startmask, endmask, nlMiddle);
-
- if (startmask)
- nstart = PPW - (x & PIM);
- else
- nstart = 0;
- if (endmask)
- nend = (x + w) & PIM;
- else
- nend = 0;
-
- srcStartOver = nstart > PLST;
-
- if(startmask)
- {
- putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop);
- pdst++;
- if(srcStartOver)
- psrc++;
- }
-
- while(nlMiddle--)
- {
- getandputrrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if(endmask)
- {
- getandputrrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
- xfree(pptFree);
- xfree(pwidthFree);
-}
diff --git a/xorg-server/mfb/mfbfont.c b/xorg-server/mfb/mfbfont.c
deleted file mode 100644
index 672b5d958..000000000
--- a/xorg-server/mfb/mfbfont.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-*/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-mfbRealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-mfbRealizeFontProc *
-mfbRealizeFontWeak(void)
-{
- return mfbRealizeFont;
-}
-
-/*ARGSUSED*/
-Bool
-mfbUnrealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-mfbUnrealizeFontProc *
-mfbUnrealizeFontWeak(void)
-{
- return mfbUnrealizeFont;
-}
diff --git a/xorg-server/mfb/mfbgc.c b/xorg-server/mfb/mfbgc.c
deleted file mode 100644
index 7492d7c04..000000000
--- a/xorg-server/mfb/mfbgc.c
+++ /dev/null
@@ -1,1120 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "migc.h"
-
-#include "maskbits.h"
-
-static GCFuncs mfbFuncs = {
- mfbValidateGC,
- miChangeGC,
- miCopyGC,
- miDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip
-};
-
-
-static GCOps whiteTECopyOps = {
- mfbWhiteSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyWhite,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltWhite,
- mfbPolyGlyphBltWhite,
- mfbSolidPP
-};
-
-static GCOps blackTECopyOps = {
- mfbBlackSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyBlack,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltBlack,
- mfbPolyGlyphBltBlack,
- mfbSolidPP
-};
-
-static GCOps whiteTEInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- miCopyArea,
- miCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltWhite,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-};
-
-static GCOps blackTEInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbTEGlyphBltBlack,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-};
-
-static GCOps whiteCopyOps = {
- mfbWhiteSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyWhite,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltWhite,
- mfbPolyGlyphBltWhite,
- mfbSolidPP
-};
-
-static GCOps blackCopyOps = {
- mfbBlackSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyBlack,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltBlack,
- mfbPolyGlyphBltBlack,
- mfbSolidPP
-};
-
-static GCOps whiteInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltWhite,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-};
-
-static GCOps blackInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- mfbImageGlyphBltBlack,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-};
-
-static GCOps whiteWhiteCopyOps = {
- mfbWhiteSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyWhite,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- mfbPolyGlyphBltWhite,
- mfbSolidPP
-};
-
-static GCOps blackBlackCopyOps = {
- mfbBlackSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- mfbZeroPolyArcSS,
- mfbFillPolyBlack,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- mfbPolyGlyphBltBlack,
- mfbSolidPP
-};
-
-static GCOps fgEqBgInvertOps = {
- mfbInvertSolidFS,
- mfbSetSpans,
- mfbPutImage,
- mfbCopyArea,
- mfbCopyPlane,
- mfbPolyPoint,
- mfbLineSS,
- mfbSegmentSS,
- miPolyRectangle,
- miZeroPolyArc,
- mfbFillPolyInvert,
- mfbPolyFillRect,
- mfbPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- miImageGlyphBlt,
- mfbPolyGlyphBltInvert,
- mfbSolidPP
-};
-
-
-struct commonOps {
- int fg, bg;
- int rrop;
- int terminalFont;
- GCOps *ops;
- void (*fillArea)(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*nop*/);
-};
-
-static struct commonOps mfbCommonOps[] = {
- { 1, 0, RROP_WHITE, 1, &whiteTECopyOps, mfbSolidWhiteArea },
- { 0, 1, RROP_BLACK, 1, &blackTECopyOps, mfbSolidBlackArea },
- { 1, 0, RROP_INVERT, 1, &whiteTEInvertOps, mfbSolidInvertArea },
- { 0, 1, RROP_INVERT, 1, &blackTEInvertOps, mfbSolidInvertArea },
- { 1, 0, RROP_WHITE, 0, &whiteCopyOps, mfbSolidWhiteArea },
- { 0, 1, RROP_BLACK, 0, &blackCopyOps, mfbSolidBlackArea },
- { 1, 0, RROP_INVERT, 0, &whiteInvertOps, mfbSolidInvertArea },
- { 0, 1, RROP_INVERT, 0, &blackInvertOps, mfbSolidInvertArea },
- { 1, 1, RROP_WHITE, 0, &whiteWhiteCopyOps, mfbSolidWhiteArea },
- { 0, 0, RROP_BLACK, 0, &blackBlackCopyOps, mfbSolidBlackArea },
- { 1, 1, RROP_INVERT, 0, &fgEqBgInvertOps, mfbSolidInvertArea },
- { 0, 0, RROP_INVERT, 0, &fgEqBgInvertOps, mfbSolidInvertArea },
-};
-
-#define numberCommonOps (sizeof (mfbCommonOps) / sizeof (mfbCommonOps[0]))
-
-static GCOps *
-matchCommon (
- GCPtr pGC)
-{
- int i;
- struct commonOps *cop;
- mfbPrivGC *priv;
-
- if (pGC->lineWidth != 0)
- return 0;
- if (pGC->lineStyle != LineSolid)
- return 0;
- if (pGC->fillStyle != FillSolid)
- return 0;
- if (!pGC->font ||
- FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)
- return 0;
- priv = (mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- for (i = 0; i < numberCommonOps; i++) {
- cop = &mfbCommonOps[i];
- if ((pGC->fgPixel & 1) != cop->fg)
- continue;
- if ((pGC->bgPixel & 1) != cop->bg)
- continue;
- if (priv->rop != cop->rrop)
- continue;
- if (cop->terminalFont && !TERMINALFONT(pGC->font))
- continue;
- priv->FillArea = cop->fillArea;
- return cop->ops;
- }
- return 0;
-}
-
-
-Bool
-mfbCreateGC(pGC)
- register GCPtr pGC;
-{
- mfbPrivGC *pPriv;
-
- pGC->clientClip = NULL;
- pGC->clientClipType = CT_NONE;
-
- /* some of the output primitives aren't really necessary, since
- they will be filled in ValidateGC because of dix/CreateGC()
- setting all the change bits. Others are necessary because although
- they depend on being a monochrome frame buffer, they don't change
- */
-
- pGC->ops = &whiteCopyOps;
- pGC->funcs = &mfbFuncs;
-
- /* mfb wants to translate before scan convesion */
- pGC->miTranslate = 1;
-
- pPriv = (mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- pPriv->rop = mfbReduceRop(pGC->alu, pGC->fgPixel);
- pGC->fExpose = TRUE;
- pGC->pRotatedPixmap = NullPixmap;
- pGC->freeCompClip = FALSE;
- pPriv->FillArea = mfbSolidInvertArea;
- return TRUE;
-}
-
-/* some noop functions */
-static void
-mfbPolyGlyphBltNoop(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int x,
- int y,
- unsigned int nglyph,
- CharInfoPtr * ppci,
- pointer pglyphBase)
-{
- /* this is a no-op function */
-}
-
-static void
-mfbNoopFS(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int nInit,
- DDXPointPtr pptInit,
- int * pwidthInit,
- int fSorted)
-{
- /* this is a no-op function */
-}
-
-static void
-mfbFillPolyNoop(
- DrawablePtr pDrawable,
- GCPtr pGC,
- int shape,
- int mode,
- int count,
- DDXPointPtr ptsIn)
-{
- /* this is a no-op function */
-}
-
-
-/* Clipping conventions
- if the drawable is a window
- CT_REGION ==> pCompositeClip really is the composite
- CT_other ==> pCompositeClip is the window clip region
- if the drawable is a pixmap
- CT_REGION ==> pCompositeClip is the translated client region
- clipped to the pixmap boundary
- CT_other ==> pCompositeClip is the pixmap bounding box
-*/
-
-/*ARGSUSED*/
-void
-mfbValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- register mfbPrivGCPtr devPriv;
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int xrot, yrot; /* rotations for tile and stipple pattern */
- int rrop; /* reduced rasterop */
- /* flags for changing the proc vector
- and updating things in devPriv
- */
- int new_rotate, new_rrop, new_line, new_text, new_fill;
- DDXPointRec oldOrg; /* origin of thing GC was last used with */
-
- oldOrg = pGC->lastWinOrg;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
-
- /* we need to re-rotate the tile if the previous window/pixmap
- origin (oldOrg) differs from the new window/pixmap origin
- (pGC->lastWinOrg)
- */
- new_rotate = (oldOrg.x != pGC->lastWinOrg.x) ||
- (oldOrg.y != pGC->lastWinOrg.y);
-
- devPriv = (mfbPrivGCPtr)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- /*
- if the client clip is different or moved OR
- the subwindowMode has changed OR
- the window's clip has changed since the last validation
- we need to recompute the composite clip
- */
- if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) ||
- (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))
- )
- {
- miComputeCompositeClip(pGC, pDrawable);
- }
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fill = FALSE;
-
- mask = changes;
- while (mask)
- {
- index = lowbit (mask);
- mask &= ~index;
-
- /* this switch acculmulates a list of which procedures
- might have to change due to changes in the GC. in
- some cases (e.g. changing one 16 bit tile for another)
- we might not really need a change, but the code is
- being paranoid.
- this sort of batching wins if, for example, the alu
- and the font have been changed, or any other pair
- of items that both change the same thing.
- */
- switch (index)
- {
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- break;
- case GCPlaneMask:
- break;
- case GCBackground:
- new_rrop = TRUE; /* for opaque stipples */
- break;
- case GCLineStyle:
- case GCLineWidth:
- case GCJoinStyle:
- new_line = TRUE;
- break;
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_fill = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- if(pGC->tileIsPixel)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCStipple:
- if(pGC->stipple == (PixmapPtr)NULL)
- break;
- new_rotate = TRUE;
- new_fill = TRUE;
- break;
-
- case GCTileStipXOrigin:
- new_rotate = TRUE;
- break;
-
- case GCTileStipYOrigin:
- new_rotate = TRUE;
- break;
-
- case GCFont:
- new_text = TRUE;
- break;
- case GCSubwindowMode:
- break;
- case GCGraphicsExposures:
- break;
- case GCClipXOrigin:
- break;
- case GCClipYOrigin:
- break;
- case GCClipMask:
- break;
- case GCDashOffset:
- break;
- case GCDashList:
- break;
- case GCArcMode:
- break;
- default:
- break;
- }
- }
-
- /* deal with the changes we've collected .
- new_rrop must be done first because subsequent things
- depend on it.
- */
-
- if(new_rotate || new_fill)
- {
- Bool new_pix = FALSE;
-
- /* figure out how much to rotate */
- xrot = pGC->patOrg.x;
- yrot = pGC->patOrg.y;
- xrot += pDrawable->x;
- yrot += pDrawable->y;
-
- switch (pGC->fillStyle)
- {
- case FillTiled:
- /* copy current tile and stipple */
- if (!pGC->tileIsPixel && (pGC->tile.pixmap->drawable.width <= PPW) &&
- !(pGC->tile.pixmap->drawable.width & (pGC->tile.pixmap->drawable.width - 1)))
- {
- mfbCopyRotatePixmap(pGC->tile.pixmap,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- break;
- case FillStippled:
- case FillOpaqueStippled:
- if (pGC->stipple && (pGC->stipple->drawable.width <= PPW) &&
- !(pGC->stipple->drawable.width & (pGC->stipple->drawable.width - 1)))
- {
- mfbCopyRotatePixmap(pGC->stipple,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- }
- /* destroy any previously rotated tile or stipple */
- if (!new_pix && pGC->pRotatedPixmap)
- {
- (*pDrawable->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr)NULL;
- }
- }
-
- /*
- * duck out here when the GC is unchanged
- */
-
- if (!changes)
- return;
-
- if (new_rrop || new_fill)
- {
- rrop = mfbReduceRop(pGC->alu, pGC->fgPixel);
- devPriv->rop = rrop;
- new_fill = TRUE;
- /* FillArea raster op is GC's for tile filling,
- and the reduced rop for solid and stipple
- */
- if (pGC->fillStyle == FillTiled)
- devPriv->ropFillArea = pGC->alu;
- else
- devPriv->ropFillArea = rrop;
-
- /* opaque stipples:
- fg bg ropOpStip fill style
- 1 0 alu tile
- 0 1 inverseAlu tile
- 1 1 rrop(fg, alu) solid
- 0 0 rrop(fg, alu) solid
- Note that rrop(fg, alu) == mfbPrivGC.rop, so we don't really need to
- compute it.
- */
- if (pGC->fillStyle == FillOpaqueStippled)
- {
- if ((pGC->fgPixel & 1) != (pGC->bgPixel & 1))
- {
- if (pGC->fgPixel & 1)
- devPriv->ropOpStip = pGC->alu;
- else
- devPriv->ropOpStip = InverseAlu[pGC->alu];
- }
- else
- devPriv->ropOpStip = rrop;
- devPriv->ropFillArea = devPriv->ropOpStip;
- }
- }
- else
- rrop = devPriv->rop;
-
- if (new_line || new_fill || new_text)
- {
- GCOps *newops;
-
- if ((newops = matchCommon (pGC)))
- {
- if (pGC->ops->devPrivate.val)
- miDestroyGCOps (pGC->ops);
- pGC->ops = newops;
- new_line = new_fill = new_text = 0;
- }
- else
- {
- if (!pGC->ops->devPrivate.val)
- {
- pGC->ops = miCreateGCOps (pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
- }
-
- if (new_line || new_fill)
- {
- if (pGC->lineWidth == 0)
- {
- if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid)
- && ((rrop == RROP_WHITE) || (rrop == RROP_BLACK)))
- pGC->ops->PolyArc = mfbZeroPolyArcSS;
- else
- pGC->ops->PolyArc = miZeroPolyArc;
- }
- else
- pGC->ops->PolyArc = miPolyArc;
- if (pGC->lineStyle == LineSolid)
- {
- if(pGC->lineWidth == 0)
- {
- if (pGC->fillStyle == FillSolid)
- {
- pGC->ops->PolySegment = mfbSegmentSS;
- pGC->ops->Polylines = mfbLineSS;
- }
- else
- {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miZeroLine;
- }
- }
- else
- {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideLine;
- }
- }
- else
- {
- if(pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)
- {
- pGC->ops->Polylines = mfbLineSD;
- pGC->ops->PolySegment = mfbSegmentSD;
- }
- else
- {
- pGC->ops->Polylines = miWideDash;
- pGC->ops->PolySegment = miPolySegment;
- }
- }
- }
-
- if (new_text || new_fill)
- {
- if ((pGC->font) &&
- (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0))
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- else
- {
- /* special case ImageGlyphBlt for terminal emulator fonts */
-
-
- if ((pGC->font) &&
- TERMINALFONT(pGC->font) &&
- ((pGC->fgPixel & 1) != (pGC->bgPixel & 1)))
- {
- /* pcc bug makes this not compile...
- pGC->ops->ImageGlyphBlt = (pGC->fgPixel & 1) ? mfbTEGlyphBltWhite :
- mfbTEGlyphBltBlack;
- */
- if (pGC->fgPixel & 1)
- pGC->ops->ImageGlyphBlt = mfbTEGlyphBltWhite;
- else
- pGC->ops->ImageGlyphBlt = mfbTEGlyphBltBlack;
- }
- else
-
-
- {
- if (pGC->fgPixel & 1)
- pGC->ops->ImageGlyphBlt = mfbImageGlyphBltWhite;
- else
- pGC->ops->ImageGlyphBlt = mfbImageGlyphBltBlack;
- }
-
- /* now do PolyGlyphBlt */
- if (pGC->fillStyle == FillSolid ||
- (pGC->fillStyle == FillOpaqueStippled &&
- (pGC->fgPixel & 1) == (pGC->bgPixel & 1)
- )
- )
- {
- if (rrop == RROP_WHITE)
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltWhite;
- else if (rrop == RROP_BLACK)
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltBlack;
- else if (rrop == RROP_INVERT)
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltInvert;
- else
- pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltNoop;
- }
- else
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- }
- }
- }
-
- if (new_fill)
-
-
- {
- /* install a suitable fillspans and pushpixels */
- pGC->ops->PushPixels = mfbPushPixels;
- pGC->ops->FillPolygon = miFillPolygon;
- if ((pGC->fillStyle == FillSolid) ||
- ((pGC->fillStyle == FillOpaqueStippled) &&
- ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))))
- {
- pGC->ops->PushPixels = mfbSolidPP;
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- pGC->ops->FillSpans = mfbWhiteSolidFS;
- pGC->ops->FillPolygon = mfbFillPolyWhite;
- break;
- case RROP_BLACK:
- pGC->ops->FillSpans = mfbBlackSolidFS;
- pGC->ops->FillPolygon = mfbFillPolyBlack;
- break;
- case RROP_INVERT:
- pGC->ops->FillSpans = mfbInvertSolidFS;
- pGC->ops->FillPolygon = mfbFillPolyInvert;
- break;
- case RROP_NOP:
- pGC->ops->FillSpans = mfbNoopFS;
- pGC->ops->FillPolygon = mfbFillPolyNoop;
- break;
- }
- }
- /* beyond this point, opaqueStippled ==> fg != bg */
- else if (((pGC->fillStyle == FillTiled) ||
- (pGC->fillStyle == FillOpaqueStippled)) &&
- !pGC->pRotatedPixmap)
- {
- pGC->ops->FillSpans = mfbUnnaturalTileFS;
- }
- else if ((pGC->fillStyle == FillStippled) && !pGC->pRotatedPixmap)
- {
- pGC->ops->FillSpans = mfbUnnaturalStippleFS;
- }
- else if (pGC->fillStyle == FillStippled)
- {
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- pGC->ops->FillSpans = mfbWhiteStippleFS;
- break;
- case RROP_BLACK:
- pGC->ops->FillSpans = mfbBlackStippleFS;
- break;
- case RROP_INVERT:
- pGC->ops->FillSpans = mfbInvertStippleFS;
- break;
- case RROP_NOP:
- pGC->ops->FillSpans = mfbNoopFS;
- break;
- }
- }
- else /* overload tiles to do parti-colored opaque stipples */
- {
- pGC->ops->FillSpans = mfbTileFS;
- }
- if (pGC->fillStyle == FillSolid)
- pGC->ops->PolyFillArc = mfbPolyFillArcSolid;
- else
- pGC->ops->PolyFillArc = miPolyFillArc;
- /* the rectangle code doesn't deal with opaque stipples that
- are two colors -- we can fool it for fg==bg, though
- */
- if ((((pGC->fillStyle == FillTiled) ||
- (pGC->fillStyle == FillStippled)) &&
- !pGC->pRotatedPixmap) ||
- ((pGC->fillStyle == FillOpaqueStippled) &&
- ((pGC->fgPixel & 1) != (pGC->bgPixel & 1)))
- )
- {
- pGC->ops->PolyFillRect = miPolyFillRect;
- }
- else /* deal with solids and natural stipples and tiles */
- {
- pGC->ops->PolyFillRect = mfbPolyFillRect;
-
- if ((pGC->fillStyle == FillSolid) ||
- ((pGC->fillStyle == FillOpaqueStippled) &&
- ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))))
- {
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- devPriv->FillArea = mfbSolidWhiteArea;
- break;
- case RROP_BLACK:
- devPriv->FillArea = mfbSolidBlackArea;
- break;
- case RROP_INVERT:
- devPriv->FillArea = mfbSolidInvertArea;
- break;
- case RROP_NOP:
- devPriv->FillArea = (mfbFillAreaProcPtr)NoopDDA;
- break;
- }
- }
- else if (pGC->fillStyle == FillStippled)
- {
- switch(devPriv->rop)
- {
- case RROP_WHITE:
- devPriv->FillArea = mfbStippleWhiteArea;
- break;
- case RROP_BLACK:
- devPriv->FillArea = mfbStippleBlackArea;
- break;
- case RROP_INVERT:
- devPriv->FillArea = mfbStippleInvertArea;
- break;
- case RROP_NOP:
- devPriv->FillArea = (mfbFillAreaProcPtr)NoopDDA;
- break;
- }
- }
- else /* deal with tiles */
- {
- switch (pGC->alu)
- {
- case GXcopy:
- devPriv->FillArea = mfbTileAreaPPWCopy;
- break;
- default:
- devPriv->FillArea = mfbTileAreaPPWGeneral;
- break;
- }
- }
- } /* end of natural rectangles */
- } /* end of new_fill */
-
-
-}
-
-/* table to map alu(src, dst) to alu(~src, dst) */
-int InverseAlu[16] = {
- GXclear,
- GXandInverted,
- GXnor,
- GXcopyInverted,
- GXand,
- GXnoop,
- GXequiv,
- GXorInverted,
- GXandReverse,
- GXxor,
- GXinvert,
- GXnand,
- GXcopy,
- GXor,
- GXorReverse,
- GXset
-};
-
-int mfbGetInverseAlu(i)
- int i;
-{
- return InverseAlu[i];
-}
-
-int
-mfbReduceRop(alu, src)
- register int alu;
- register Pixel src;
-{
- int rop = 0;
- if ((src & 1) == 0) /* src is black */
- {
- switch(alu)
- {
- case GXclear:
- rop = RROP_BLACK;
- break;
- case GXand:
- rop = RROP_BLACK;
- break;
- case GXandReverse:
- rop = RROP_BLACK;
- break;
- case GXcopy:
- rop = RROP_BLACK;
- break;
- case GXandInverted:
- rop = RROP_NOP;
- break;
- case GXnoop:
- rop = RROP_NOP;
- break;
- case GXxor:
- rop = RROP_NOP;
- break;
- case GXor:
- rop = RROP_NOP;
- break;
- case GXnor:
- rop = RROP_INVERT;
- break;
- case GXequiv:
- rop = RROP_INVERT;
- break;
- case GXinvert:
- rop = RROP_INVERT;
- break;
- case GXorReverse:
- rop = RROP_INVERT;
- break;
- case GXcopyInverted:
- rop = RROP_WHITE;
- break;
- case GXorInverted:
- rop = RROP_WHITE;
- break;
- case GXnand:
- rop = RROP_WHITE;
- break;
- case GXset:
- rop = RROP_WHITE;
- break;
- }
- }
- else /* src is white */
- {
- switch(alu)
- {
- case GXclear:
- rop = RROP_BLACK;
- break;
- case GXand:
- rop = RROP_NOP;
- break;
- case GXandReverse:
- rop = RROP_INVERT;
- break;
- case GXcopy:
- rop = RROP_WHITE;
- break;
- case GXandInverted:
- rop = RROP_BLACK;
- break;
- case GXnoop:
- rop = RROP_NOP;
- break;
- case GXxor:
- rop = RROP_INVERT;
- break;
- case GXor:
- rop = RROP_WHITE;
- break;
- case GXnor:
- rop = RROP_BLACK;
- break;
- case GXequiv:
- rop = RROP_NOP;
- break;
- case GXinvert:
- rop = RROP_INVERT;
- break;
- case GXorReverse:
- rop = RROP_WHITE;
- break;
- case GXcopyInverted:
- rop = RROP_BLACK;
- break;
- case GXorInverted:
- rop = RROP_NOP;
- break;
- case GXnand:
- rop = RROP_INVERT;
- break;
- case GXset:
- rop = RROP_WHITE;
- break;
- }
- }
- return rop;
-}
diff --git a/xorg-server/mfb/mfbgetsp.c b/xorg-server/mfb/mfbgetsp.c
deleted file mode 100644
index befe57a1f..000000000
--- a/xorg-server/mfb/mfbgetsp.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-/* GetSpans -- for each span, gets bits from drawable starting at ppt[i]
- * and continuing for pwidth[i] bits
- * Each scanline returned will be server scanline padded, i.e., it will come
- * out to an integral number of words.
- */
-/*ARGSUSED*/
-void
-mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart)
- DrawablePtr pDrawable; /* drawable from which to get bits */
- int wMax; /* largest value of all *pwidths */
- register DDXPointPtr ppt; /* points to start copying from */
- int *pwidth; /* list of number of bits to copy */
- int nspans; /* number of scanlines to copy */
- char *pchardstStart; /* where to put the bits */
-{
- PixelType *pdstStart = (PixelType *)(pointer)pchardstStart;
- register PixelType *pdst; /* where to put the bits */
- register PixelType *psrc; /* where to get the bits */
- register PixelType tmpSrc; /* scratch buffer for bits */
- PixelType *psrcBase; /* start of src bitmap */
- int widthSrc; /* width of pixmap in bytes */
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- register int nstart;
- int nend = 0;
- int srcStartOver;
- PixelType startmask, endmask;
- unsigned int srcBit;
- int nlMiddle, nl;
- int w;
-
- pptLast = ppt + nspans;
-
- mfbGetPixelWidthAndPointer(pDrawable, widthSrc, psrcBase);
- pdst = pdstStart;
-
- while(ppt < pptLast)
- {
- /* XXX should this really be << PWSH, or * 8, or * PGSZB? */
- xEnd = min(ppt->x + *pwidth, widthSrc << PWSH);
- pwidth++;
- psrc = mfbScanline(psrcBase, ppt->x, ppt->y, widthSrc);
- w = xEnd - ppt->x;
- srcBit = ppt->x & PIM;
-
- if (srcBit + w <= PPW)
- {
- getandputbits0(psrc, srcBit, w, pdst);
- pdst++;
- }
- else
- {
-
- maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - srcBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- srcStartOver = srcBit + nstart > PLST;
- if (startmask)
- {
- getandputbits0(psrc, srcBit, nstart, pdst);
- if(srcStartOver)
- psrc++;
- }
- nl = nlMiddle;
-#ifdef FASTPUTBITS
- Duff(nl, putbits(*psrc, nstart, PPW, pdst); psrc++; pdst++;);
-#else
- while (nl--)
- {
- tmpSrc = *psrc;
- putbits(tmpSrc, nstart, PPW, pdst);
- psrc++;
- pdst++;
- }
-#endif
- if (endmask)
- {
- putbits(*psrc, nstart, nend, pdst);
- if(nstart + nend > PPW)
- pdst++;
- }
- if (startmask || endmask)
- pdst++;
- }
- ppt++;
- }
-}
diff --git a/xorg-server/mfb/mfbhrzvert.c b/xorg-server/mfb/mfbhrzvert.c
deleted file mode 100644
index 7616f9bf2..000000000
--- a/xorg-server/mfb/mfbhrzvert.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gc.h"
-#include "window.h"
-#include "pixmap.h"
-#include "region.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-void
-mfbHorzS(rop, addrl, nlwidth, x1, y1, len)
-int rop; /* a reduced rasterop */
-register PixelType *addrl; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-{
- register PixelType startmask;
- register PixelType endmask;
- register int nlmiddle;
-
-
- /* force the line to go left to right
- but don't draw the last point
- */
- if (len < 0)
- {
- x1 += len;
- x1 += 1;
- len = -len;
- }
-
- addrl = mfbScanline(addrl, x1, y1, nlwidth);
-
- /* all bits inside same longword */
- if ( ((x1 & PIM) + len) < PPW)
- {
- maskpartialbits(x1, len, startmask);
- if (rop == RROP_BLACK)
- {
- *addrl &= ~startmask;
- }
- else if (rop == RROP_WHITE)
- {
- *addrl |= startmask;
- }
- else if (rop == RROP_INVERT)
- {
- *addrl ^= startmask;
- }
- }
- else
- {
- maskbits(x1, len, startmask, endmask, nlmiddle);
- if (rop == RROP_BLACK)
- {
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- }
- else if (rop == RROP_WHITE)
- {
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- }
- else if (rop == RROP_INVERT)
- {
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- }
- }
-}
-
-/* vertical solid line
- this uses do loops because pcc (Ultrix 1.2, bsd 4.2) generates
- better code. sigh. we know that len will never be 0 or 1, so
- it's OK to use it.
-*/
-
-void
-mfbVertS(rop, addrl, nlwidth, x1, y1, len)
-int rop; /* a reduced rasterop */
-register PixelType *addrl; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int x1, y1; /* initial point */
-register int len; /* length of line */
-{
- register PixelType bitmask;
-
- addrl = mfbScanline(addrl, x1, y1, nlwidth);
-
- if (len < 0)
- {
- nlwidth = -nlwidth;
- len = -len;
- }
-
- if (rop == RROP_BLACK)
- {
- bitmask = rmask[x1 & PIM];
- Duff(len, *addrl &= bitmask; mfbScanlineInc(addrl, nlwidth) );
- }
- else if (rop == RROP_WHITE)
- {
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl |= bitmask; mfbScanlineInc(addrl, nlwidth) );
- }
- else if (rop == RROP_INVERT)
- {
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl ^= bitmask; mfbScanlineInc(addrl, nlwidth) );
- }
-}
diff --git a/xorg-server/mfb/mfbigbblak.c b/xorg-server/mfb/mfbigbblak.c
deleted file mode 100644
index 3529fe4b4..000000000
--- a/xorg-server/mfb/mfbigbblak.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define OPEQ MFB_OPEQ_BLACK
-#define MFBIMAGEGLYPHBLT mfbImageGlyphBltBlack
-#include "./mfbimggblt.c"
diff --git a/xorg-server/mfb/mfbigbwht.c b/xorg-server/mfb/mfbigbwht.c
deleted file mode 100644
index 8c68405c3..000000000
--- a/xorg-server/mfb/mfbigbwht.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define OPEQ MFB_OPEQ_WHITE
-#define MFBIMAGEGLYPHBLT mfbImageGlyphBltWhite
-#include "./mfbimggblt.c"
diff --git a/xorg-server/mfb/mfbimage.c b/xorg-server/mfb/mfbimage.c
deleted file mode 100644
index 8861865a6..000000000
--- a/xorg-server/mfb/mfbimage.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <string.h>
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-
-#include "mfb.h"
-#include "mi.h"
-#include <X11/Xmd.h>
-
-#include "maskbits.h"
-
-#include "servermd.h"
-
-/* Put and Get images on a monochrome frame buffer
- *
- * we do this by creating a temporary pixmap and making its
- * pointer to bits point to the buffer read in from the client.
- * this works because of the padding rules specified at startup
- *
- * Note that CopyArea must know how to copy a bitmap into the server-format
- * temporary pixmap.
- *
- * For speed, mfbPutImage should allocate the temporary pixmap on the stack.
- *
- * even though an XYBitmap and an XYPixmap have the same
- * format (for this device), PutImage has different semantics for the
- * two. XYPixmap just does the copy; XYBitmap takes gc.fgPixel for
- * a 1 bit, gc.bgPixel for a 0 bit, which we notice is exactly
- * like CopyPlane.
- *
- * written by drewry, september 1986
- */
-
-
-
-/*ARGSUSED*/
-void
-mfbPutImage(dst, pGC, depth, x, y, w, h, leftPad, format, pImage)
- DrawablePtr dst;
- GCPtr pGC;
- int depth, x, y, w, h;
- int leftPad;
- int format;
- char *pImage;
-{
- PixmapPtr pPixmap;
-
- if (!(pGC->planemask & 1))
- return;
-
- /* 0 may confuse CreatePixmap, and will sometimes be
- passed by the mi text code
- */
- if ((w == 0) || (h == 0))
- return;
-
- pPixmap = GetScratchPixmapHeader(dst->pScreen, w+leftPad, h, 1, 1,
- BitmapBytePad(w+leftPad), (pointer)pImage);
- if (!pPixmap)
- return;
-
- pGC->fExpose = FALSE;
- if (format != XYBitmap)
- (*pGC->ops->CopyArea)((DrawablePtr)pPixmap, dst, pGC, leftPad, 0,
- w, h, x, y);
- else
- (*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, dst, pGC, leftPad, 0,
- w, h, x, y, 1);
- pGC->fExpose = TRUE;
- FreeScratchPixmapHeader(pPixmap);
-}
-
-
-/*
- * pdstLine points to space allocated by caller, which he can do since
- * he knows dimensions of the pixmap
- * we can call mfbDoBitblt because the dispatcher has promised not to send us
- * anything that would require going over the edge of the screen.
- *
- * XYPixmap and ZPixmap are the same for mfb.
- * For any planemask with bit 0 == 0, just fill the dst with 0.
- */
-/*ARGSUSED*/
-void
-mfbGetImage( pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- BoxRec box;
- DDXPointRec ptSrc;
- RegionRec rgnDst;
-
- if (planeMask & 0x1)
- {
- ScreenPtr pScreen = pDrawable->pScreen;
- PixmapPtr pPixmap;
-
- pPixmap = GetScratchPixmapHeader(pScreen, w, h, /*depth*/ 1, /*bpp*/ 1,
- BitmapBytePad(w), (pointer)pdstLine);
- if (!pPixmap)
- return;
-
- ptSrc.x = sx + pDrawable->x;
- ptSrc.y = sy + pDrawable->y;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = w;
- box.y2 = h;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
- mfbDoBitblt(pDrawable, (DrawablePtr)pPixmap,
- GXcopy, &rgnDst, &ptSrc);
- REGION_UNINIT(pScreen, &rgnDst);
- FreeScratchPixmapHeader(pPixmap);
- }
- else
- {
- bzero(pdstLine, BitmapBytePad(w) * h);
- }
-}
diff --git a/xorg-server/mfb/mfbimggblt.c b/xorg-server/mfb/mfbimggblt.c
deleted file mode 100644
index cb532cf3b..000000000
--- a/xorg-server/mfb/mfbimggblt.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- we should eventually special-case fixed-width fonts for ImageText.
-
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were wlle-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
- to avoid source proliferation, this file is compiled
-three times:
- MFBIMAGEGLYPHBLT OPEQ
- mfbImageGlyphBltWhite |=
- mfbImageGlyphBltBlack &=~
-
- the register allocations for startmask and endmask may not
-be the right thing. are there two other deserving candidates?
-xoff, pdst, pglyph, and tmpSrc seem like the right things, though.
-*/
-
-void
-MFBIMAGEGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
- xRectangle backrect;/* backing rectangle to paint.
- in the general case, NOT necessarily
- the same as the string's bounding box
- */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst;
- /* pointer to current longword in dst */
-
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
-
- register int nFirst;/* bits of glyph in current longword */
- mfbPrivGC *pPrivGC;
- mfbFillAreaProcPtr oldFillArea;
- /* we might temporarily usurp this
- field in devPriv */
-
- if (!(pGC->planemask & 1))
- return;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- backrect.x = x;
- backrect.y = y - FONTASCENT(pGC->font);
- backrect.width = info.overallWidth;
- backrect.height = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- /* UNCLEAN CODE
- we know the mfbPolyFillRect uses only two fields in
- devPrivate[mfbGCPrivateIndex].ptr, one of which (ropFillArea) is
- irrelevant for solid filling, so we just poke the FillArea
- field. the GC is now in an inconsistent state, but we'll fix
- it as soon as PolyFillRect returns. fortunately, the server
- is single threaded.
-
- NOTE:
- if you are not using the standard mfbFillRectangle code, you
- need to poke any fields in the GC the rectangle stuff need
- (probably alu, fgPixel, and fillStyle) and in devPrivate[mfbGCPrivateIndex].ptr
- (probably rop or ropFillArea.) You could just call ValidateGC,
- but that is usually not a cheap thing to do.
- */
-
- pPrivGC = (mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- oldFillArea = pPrivGC->FillArea;
-
- if (pGC->bgPixel & 1)
- pPrivGC->FillArea = mfbSolidWhiteArea;
- else
- pPrivGC->FillArea = mfbSolidBlackArea;
-
- mfbPolyFillRect(pDrawable, pGC, 1, &backrect);
- pPrivGC->FillArea = oldFillArea;
-
- /* the faint-hearted can open their eyes now */
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xchar = x & PIM;
-
- while(nglyph--)
- {
- pci = *ppci;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- h = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- /* start at top scanline of glyph */
- pdst = pdstBase;
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST)
- {
- pdst++;
- xoff &= PIM;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -pci->metrics.ascent, widthDst);
-
- if ((xoff + w) <= PPW)
- {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- } /* glyph crosses longwords boundary */
-
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar -= PPW;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- TEXTPOS *ppos;
- int nbox;
- BoxPtr pbox;
- RegionPtr cclip;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
-#if GETLEFTBITS_ALIGNMENT > 1
- int getWidth; /* bits to get from glyph */
-#endif
-
- if(!(ppos = (TEXTPOS *)xalloc(nglyph * sizeof(TEXTPOS))))
- return;
-
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i=0; i<nglyph; i++)
- {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar &= PIM;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- /* HACK ALERT
- since we continue out of the loop below so often, it
- is easier to increment pbox at the top than at the end.
- don't try this at home.
- */
- pbox--;
- while(nbox--)
- {
- pbox++;
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for(i=0; i<nglyph; i++)
- {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- h = bottomEdge - topEdge;
- if (h <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- pglyph += (glyphRow * widthGlyph);
-
- pdst = ppos[i].pdstBase;
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
-#if GETLEFTBITS_ALIGNMENT > 1
- getWidth = w + glyphCol;
-#endif
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST)
- {
- xoff &= PIM;
- pdst++;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -(y-topEdge), widthDst);
-
- if ((xoff + w) <= PPW)
- {
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- } /* for each glyph */
- } /* while nbox-- */
- xfree(ppos);
- break;
- }
- default:
- break;
- }
-}
diff --git a/xorg-server/mfb/mfbline.c b/xorg-server/mfb/mfbline.c
deleted file mode 100644
index 65baa5efd..000000000
--- a/xorg-server/mfb/mfbline.c
+++ /dev/null
@@ -1,759 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-#include "miline.h"
-
-/* single-pixel lines on a color frame buffer
-
- NON-SLOPED LINES
- horizontal lines are always drawn left to right; we have to
-move the endpoints right by one after they're swapped.
- horizontal lines will be confined to a single band of a
-region. the code finds that band (giving up if the lower
-bound of the band is above the line we're drawing); then it
-finds the first box in that band that contains part of the
-line. we clip the line to subsequent boxes in that band.
- vertical lines are always drawn top to bottom (y-increasing.)
-this requires adding one to the y-coordinate of each endpoint
-after swapping.
-
- SLOPED LINES
- when clipping a sloped line, we bring the second point inside
-the clipping box, rather than one beyond it, and then add 1 to
-the length of the line before drawing it. this lets us use
-the same box for finding the outcodes for both endpoints. since
-the equation for clipping the second endpoint to an edge gives us
-1 beyond the edge, we then have to move the point towards the
-first point by one step on the major axis.
- eventually, there will be a diagram here to explain what's going
-on. the method uses Cohen-Sutherland outcodes to determine
-outsideness, and a method similar to Pike's layers for doing the
-actual clipping.
-
-*/
-
-void
-#ifdef POLYSEGMENT
-mfbSegmentSS (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-mfbLineSS (pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- unsigned int oc1; /* outcode of point 1 */
- unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrlBase; /* pointer to start of drawable */
-#ifndef POLYSEGMENT
- PixelType *addrl; /* address of destination pixmap */
-#endif
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
-
- /* a bunch of temporaries */
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
- int alu;
-
- if (!(pGC->planemask & 1))
- return;
-
- cclip = pGC->pCompositeClip;
- alu = ((mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey()))->rop;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- if (x1 == x2) /* vertical line */
- {
- /* make the line go top to bottom of screen, keeping
- endpoint semantics
- */
- if (y1 > y2)
- {
- register int tmp;
-
- tmp = y2;
- y2 = y1 + 1;
- y1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- y1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- y2++;
-#endif
- /* get to first band that might contain part of line */
- while ((nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- if (nbox)
- {
- /* stop when lower edge of box is beyond end of line */
- while((nbox) && (y2 >= pbox->y1))
- {
- if ((x1 >= pbox->x1) && (x1 < pbox->x2))
- {
- int y1t, y2t;
- /* this box has part of the line in it */
- y1t = max(y1, pbox->y1);
- y2t = min(y2, pbox->y2);
- if (y1t != y2t)
- {
- mfbVertS (alu,
- addrlBase, nlwidth,
- x1, y1t, y2t-y1t);
- }
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- y2 = ppt->y + yorg;
-#endif
- }
- else if (y1 == y2) /* horizontal line */
- {
- /* force line from left to right, keeping
- endpoint semantics
- */
- if (x1 > x2)
- {
- register int tmp;
-
- tmp = x2;
- x2 = x1 + 1;
- x1 = tmp + 1;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- x1--;
-#endif
- }
-#ifdef POLYSEGMENT
- else if (pGC->capStyle != CapNotLast)
- x2++;
-#endif
-
- /* find the correct band */
- while( (nbox) && (pbox->y2 <= y1))
- {
- pbox++;
- nbox--;
- }
-
- /* try to draw the line, if we haven't gone beyond it */
- if ((nbox) && (pbox->y1 <= y1))
- {
- int tmp;
-
- /* when we leave this band, we're done */
- tmp = pbox->y1;
- while((nbox) && (pbox->y1 == tmp))
- {
- int x1t, x2t;
-
- if (pbox->x2 <= x1)
- {
- /* skip boxes until one might contain start point */
- nbox--;
- pbox++;
- continue;
- }
-
- /* stop if left of box is beyond right of line */
- if (pbox->x1 >= x2)
- {
- nbox = 0;
- break;
- }
-
- x1t = max(x1, pbox->x1);
- x2t = min(x2, pbox->x2);
- if (x1t != x2t)
- {
- mfbHorzS (alu,
- addrlBase, nlwidth,
- x1t, y1, x2t-x1t);
- }
- nbox--;
- pbox++;
- }
- }
-#ifndef POLYSEGMENT
- x2 = ppt->x + xorg;
-#endif
- }
- else /* sloped line */
- {
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy,
- 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
- if (axis == X_AXIS)
- len = adx;
- else
- len = ady;
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- len++;
-#endif
- mfbBresS (alu,
- addrlBase, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, len);
- break;
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1,
- pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
-
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- mfbBresS
- (alu,
- addrlBase, nlwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
- } /* sloped line */
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
-
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- PixelType _mask;
-
- if (alu == RROP_BLACK)
- _mask = rmask[x2 & PIM];
- else
- _mask = mask[x2 & PIM];
-
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- addrl = mfbScanline(addrlBase, x2, y2, nlwidth);
- switch(alu)
- {
- case RROP_BLACK:
- *addrl &= _mask;
- break;
- case RROP_WHITE:
- *addrl |= _mask;
- break;
- case RROP_INVERT:
- *addrl ^= _mask;
- break;
- }
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-mfbSegmentSD (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-mfbLineSD( pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt; /* number of points */
- DDXPointPtr pptInit;
-#endif
-{
- int nboxInit;
- register int nbox;
- BoxPtr pboxInit;
- register BoxPtr pbox;
-#ifndef POLYSEGMENT
- register DDXPointPtr ppt; /* pointer to list of translated points */
-#endif
-
- register unsigned int oc1; /* outcode of point 1 */
- register unsigned int oc2; /* outcode of point 2 */
-
- PixelType *addrl; /* address of destination pixmap */
- int nlwidth; /* width in longwords of destination pixmap */
- int xorg, yorg; /* origin of window */
-
- int adx; /* abs values of dx and dy */
- int ady;
- int signdx; /* sign of dx and dy */
- int signdy;
- int e, e1, e2; /* bresenham error and increments */
- int len; /* length of segment */
- int axis; /* major axis */
- int octant;
- unsigned int bias = miGetZeroLineBias(pDrawable->pScreen);
- int x1, x2, y1, y2;
- RegionPtr cclip;
- int fgrop = 0, bgrop = 0;
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
-
- if (!(pGC->planemask & 1))
- return;
-
- cclip = pGC->pCompositeClip;
- fgrop = ((mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey()))->rop;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl);
-
- /* compute initial dash values */
-
- pDash = (unsigned char *) pGC->dash;
- numInDashList = pGC->numInDashList;
- isDoubleDash = (pGC->lineStyle == LineDoubleDash);
- dashIndex = 0;
- dashOffset = 0;
- miStepDash ((int)pGC->dashOffset, &dashIndex, pDash,
- numInDashList, &dashOffset);
-
- if (isDoubleDash)
- bgrop = mfbReduceRop(pGC->alu, pGC->bgPixel);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
-#ifdef POLYSEGMENT
- while (nseg--)
-#else
- ppt = pptInit;
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
- while(--npt)
-#endif
- {
- nbox = nboxInit;
- pbox = pboxInit;
-
-#ifdef POLYSEGMENT
- x1 = pSeg->x1 + xorg;
- y1 = pSeg->y1 + yorg;
- x2 = pSeg->x2 + xorg;
- y2 = pSeg->y2 + yorg;
- pSeg++;
-#else
- x1 = x2;
- y1 = y2;
- ++ppt;
- if (mode == CoordModePrevious)
- {
- xorg = x1;
- yorg = y1;
- }
- x2 = ppt->x + xorg;
- y2 = ppt->y + yorg;
-#endif
-
- CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy, 1, 1, octant);
-
- if (adx > ady)
- {
- axis = X_AXIS;
- e1 = ady << 1;
- e2 = e1 - (adx << 1);
- e = e1 - adx;
- unclippedlen = adx;
- }
- else
- {
- axis = Y_AXIS;
- e1 = adx << 1;
- e2 = e1 - (ady << 1);
- e = e1 - ady;
- unclippedlen = ady;
- SetYMajorOctant(octant);
- }
-
- FIXUP_ERROR(e, octant, bias);
-
- /* we have bresenham parameters and two points.
- all we have to do now is clip and draw.
- */
-
- while(nbox--)
- {
- oc1 = 0;
- oc2 = 0;
- OUTCODES(oc1, x1, y1, pbox);
- OUTCODES(oc2, x2, y2, pbox);
- if ((oc1 | oc2) == 0)
- {
-#ifdef POLYSEGMENT
- if (pGC->capStyle != CapNotLast)
- unclippedlen++;
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- mfbBresD (fgrop, bgrop,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- break;
-#else
- mfbBresD (fgrop, bgrop,
- &dashIndex, pDash, numInDashList,
- &dashOffset, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- goto dontStep;
-#endif
- }
- else if (oc1 & oc2)
- {
- pbox++;
- }
- else /* have to clip */
- {
- int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2;
- int clip1 = 0, clip2 = 0;
- int clipdx, clipdy;
- int err;
-
- if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1, pbox->y2-1,
- &new_x1, &new_y1, &new_x2, &new_y2,
- adx, ady, &clip1, &clip2,
- octant, bias, oc1, oc2) == -1)
- {
- pbox++;
- continue;
- }
- dashIndexTmp = dashIndex;
- dashOffsetTmp = dashOffset;
- if (clip1)
- {
- int dlen;
-
- if (axis == X_AXIS)
- dlen = abs(new_x1 - x1);
- else
- dlen = abs(new_y1 - y1);
- miStepDash (dlen, &dashIndexTmp, pDash,
- numInDashList, &dashOffsetTmp);
- }
- if (axis == X_AXIS)
- len = abs(new_x2 - new_x1);
- else
- len = abs(new_y2 - new_y1);
-#ifdef POLYSEGMENT
- if (clip2 != 0 || pGC->capStyle != CapNotLast)
- len++;
-#else
- len += (clip2 != 0);
-#endif
- if (len)
- {
- /* unwind bresenham error term to first point */
- if (clip1)
- {
- clipdx = abs(new_x1 - x1);
- clipdy = abs(new_y1 - y1);
- if (axis == X_AXIS)
- err = e+((clipdy*e2) + ((clipdx-clipdy)*e1));
- else
- err = e+((clipdx*e2) + ((clipdy-clipdx)*e1));
- }
- else
- err = e;
- mfbBresD (fgrop, bgrop,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrl, nlwidth,
- signdx, signdy, axis, new_x1, new_y1,
- err, e1, e2, len);
- }
- pbox++;
- }
- } /* while (nbox--) */
-#ifndef POLYSEGMENT
- /*
- * walk the dash list around to the next line
- */
- miStepDash (unclippedlen, &dashIndex, pDash,
- numInDashList, &dashOffset);
-dontStep: ;
-#endif
- } /* while (nline--) */
-
-#ifndef POLYSEGMENT
- /* paint the last point if the end style isn't CapNotLast.
- (Assume that a projecting, butt, or round cap that is one
- pixel wide is the same as the single pixel of the endpoint.)
- */
-
- if ((pGC->capStyle != CapNotLast) &&
- ((dashIndex & 1) == 0 || isDoubleDash) &&
- ((ppt->x + xorg != pptInit->x + pDrawable->x) ||
- (ppt->y + yorg != pptInit->y + pDrawable->y) ||
- (ppt == pptInit + 1)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- MfbBits _mask;
- int rop;
-
- rop = fgrop;
- if (dashIndex & 1)
- rop = bgrop;
- if (rop == RROP_BLACK)
- _mask = rmask[x2 & PIM];
- else
- _mask = mask[x2 & PIM];
- addrl = mfbScanline(addrl, x2, y2, nlwidth);
- if (rop == RROP_BLACK)
- *addrl &= _mask;
- else if (rop == RROP_WHITE)
- *addrl |= _mask;
- else
- *addrl ^= _mask;
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
diff --git a/xorg-server/mfb/mfbmisc.c b/xorg-server/mfb/mfbmisc.c
deleted file mode 100644
index 5154e2784..000000000
--- a/xorg-server/mfb/mfbmisc.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cursor.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-
-/*ARGSUSED*/
-void
-mfbQueryBestSize(class, pwidth, pheight, pScreen)
-int class;
-unsigned short *pwidth;
-unsigned short *pheight;
-ScreenPtr pScreen;
-{
- unsigned width, test;
-
- switch(class)
- {
- case CursorShape:
- if (*pwidth > pScreen->width)
- *pwidth = pScreen->width;
- if (*pheight > pScreen->height)
- *pheight = pScreen->height;
- break;
- case TileShape:
- case StippleShape:
- width = *pwidth;
- if (!width) break;
- /* Return the closes power of two not less than what they gave me */
- test = 0x80000000;
- /* Find the highest 1 bit in the width given */
- while(!(test & width))
- test >>= 1;
- /* If their number is greater than that, bump up to the next
- * power of two */
- if((test - 1) & width)
- test <<= 1;
- *pwidth = test;
- /* We don't care what height they use */
- break;
- }
-}
-
-mfbQueryBestSizeProc *
-mfbQueryBestSizeWeak(void)
-{
- return mfbQueryBestSize;
-}
diff --git a/xorg-server/mfb/mfbpablack.c b/xorg-server/mfb/mfbpablack.c
deleted file mode 100644
index 8e88accac..000000000
--- a/xorg-server/mfb/mfbpablack.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#define OPEQ MFB_OPEQ_BLACK
-#define MFBSOLIDFILLAREA mfbSolidBlackArea
-#define EQWHOLEWORD MFB_EQWHOLEWORD_BLACK
-#define MFBSTIPPLEFILLAREA mfbStippleBlackArea
-#include "./mfbpntarea.c"
diff --git a/xorg-server/mfb/mfbpainv.c b/xorg-server/mfb/mfbpainv.c
deleted file mode 100644
index d53568d5b..000000000
--- a/xorg-server/mfb/mfbpainv.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#define OPEQ MFB_OPEQ_INVERT
-#define MFBSOLIDFILLAREA mfbSolidInvertArea
-#define EQWHOLEWORD MFB_EQWHOLEWORD_INVERT
-#define MFBSTIPPLEFILLAREA mfbStippleInvertArea
-#include "./mfbpntarea.c"
diff --git a/xorg-server/mfb/mfbpawhite.c b/xorg-server/mfb/mfbpawhite.c
deleted file mode 100644
index 7cdb7dfed..000000000
--- a/xorg-server/mfb/mfbpawhite.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#define OPEQ MFB_OPEQ_WHITE
-#define MFBSOLIDFILLAREA mfbSolidWhiteArea
-#define EQWHOLEWORD MFB_EQWHOLEWORD_WHITE
-#define MFBSTIPPLEFILLAREA mfbStippleWhiteArea
-#include "./mfbpntarea.c"
diff --git a/xorg-server/mfb/mfbpgbblak.c b/xorg-server/mfb/mfbpgbblak.c
deleted file mode 100644
index 14bff7079..000000000
--- a/xorg-server/mfb/mfbpgbblak.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define OPEQ MFB_OPEQ_BLACK
-#define MFBPOLYGLYPHBLT mfbPolyGlyphBltBlack
-#include "./mfbplygblt.c"
diff --git a/xorg-server/mfb/mfbpgbinv.c b/xorg-server/mfb/mfbpgbinv.c
deleted file mode 100644
index 17869d9d1..000000000
--- a/xorg-server/mfb/mfbpgbinv.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define OPEQ MFB_OPEQ_INVERT
-#define MFBPOLYGLYPHBLT mfbPolyGlyphBltInvert
-#include "./mfbplygblt.c"
diff --git a/xorg-server/mfb/mfbpgbwht.c b/xorg-server/mfb/mfbpgbwht.c
deleted file mode 100644
index d11b612f2..000000000
--- a/xorg-server/mfb/mfbpgbwht.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define OPEQ MFB_OPEQ_WHITE
-#define MFBPOLYGLYPHBLT mfbPolyGlyphBltWhite
-#include "./mfbplygblt.c"
diff --git a/xorg-server/mfb/mfbpixmap.c b/xorg-server/mfb/mfbpixmap.c
deleted file mode 100644
index 34bb33d89..000000000
--- a/xorg-server/mfb/mfbpixmap.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <string.h>
-
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "maskbits.h"
-
-#include "mfb.h"
-#include "mi.h"
-
-#include "servermd.h"
-
-
-PixmapPtr
-mfbCreatePixmap (pScreen, width, height, depth, usage_hint)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
- unsigned usage_hint;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
-
- if (depth != 1)
- return NullPixmap;
- paddedWidth = BitmapBytePad(width);
- if (paddedWidth / 4 > 32767 || height > 32767)
- return NullPixmap;
- datasize = height * paddedWidth;
- pPixmap = AllocatePixmap(pScreen, datasize);
- if (!pPixmap)
- return NullPixmap;
- pPixmap->drawable.type = DRAWABLE_PIXMAP;
- pPixmap->drawable.class = 0;
- pPixmap->drawable.pScreen = pScreen;
- pPixmap->drawable.depth = depth;
- pPixmap->drawable.bitsPerPixel = depth;
- pPixmap->drawable.id = 0;
- pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- pPixmap->drawable.x = 0;
- pPixmap->drawable.y = 0;
- pPixmap->drawable.width = width;
- pPixmap->drawable.height = height;
- pPixmap->devKind = paddedWidth;
- pPixmap->refcnt = 1;
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
- pPixmap->usage_hint = usage_hint;
- return pPixmap;
-}
-
-
-Bool
-mfbDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if(--pPixmap->refcnt)
- return TRUE;
- dixFreePrivates(pPixmap->devPrivates);
- xfree(pPixmap);
- return TRUE;
-}
-
-
-PixmapPtr
-mfbCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap) (pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth, 0);
- if (!pDst)
- return NullPixmap;
- memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size);
- return pDst;
-}
-
-
-/* replicates a pattern to be a full 32 bits wide.
- relies on the fact that each scnaline is longword padded.
- doesn't do anything if pixmap is not a factor of 32 wide.
- changes width field of pixmap if successful, so that the fast
- XRotatePixmap code gets used if we rotate the pixmap later.
-
- calculate number of times to repeat
- for each scanline of pattern
- zero out area to be filled with replicate
- left shift and or in original as many times as needed
-*/
-void
-mfbPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = pPixmap->drawable.width;
- register int h;
- register PixelType mask;
- register PixelType *p;
- register PixelType bits; /* real pattern bits */
- register int i;
- int rep; /* repeat count for pattern */
-
- if (width >= PPW)
- return;
-
- rep = PPW/width;
- if (rep*width != PPW)
- return;
-
- mask = endtab[width];
-
- p = (PixelType *)(pPixmap->devPrivate.ptr);
- for (h=0; h < pPixmap->drawable.height; h++)
- {
- *p &= mask;
- bits = *p;
- for(i=1; i<rep; i++)
- {
- bits = SCRRIGHT(bits, width);
- *p |= bits;
- }
- p++;
- }
- pPixmap->drawable.width = PPW;
-}
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PPW bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-mfbXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- register PixelType *pw, *pwFinal;
- register PixelType t;
-
- if (pPix == NullPixmap)
- return;
-
- pw = (PixelType *)pPix->devPrivate.ptr;
- rw %= (int)pPix->drawable.width;
- if (rw < 0)
- rw += (int)pPix->drawable.width;
- if(pPix->drawable.width == PPW)
- {
- pwFinal = pw + pPix->drawable.height;
- while(pw < pwFinal)
- {
- t = *pw;
- *pw++ = SCRRIGHT(t, rw) |
- (SCRLEFT(t, (PPW-rw)) & endtab[rw]);
- }
- }
- else
- {
- /* We no longer do this. Validate doesn't try to rotate odd-size
- * tiles or stipples. mfbUnnatural<tile/stipple>FS works directly off
- * the unrotate tile/stipple in the GC
- */
- ErrorF("X internal error: trying to rotate odd-sized pixmap.\n");
- }
-
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->height
- works on any width.
- */
-void
-mfbYRotatePixmap(pPix, rh)
- register PixmapPtr pPix;
- int rh;
-{
- int nbyDown; /* bytes to move down to row 0; also offset of
- row rh */
- int nbyUp; /* bytes to move up to line rh; also
- offset of first line moved down to 0 */
- char *pbase;
- char *ptmp;
- int height;
-
- if (pPix == NullPixmap)
- return;
- height = (int) pPix->drawable.height;
- rh %= height;
- if (rh < 0)
- rh += height;
-
- pbase = (char *)pPix->devPrivate.ptr;
-
- nbyDown = rh * pPix->devKind;
- nbyUp = (pPix->devKind * height) - nbyDown;
- if(!(ptmp = (char *)xalloc(nbyUp)))
- return;
-
- memmove(ptmp, pbase, nbyUp); /* save the low rows */
- memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */
- memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rh */
- xfree(ptmp);
-}
-
-void
-mfbCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot)
- register PixmapPtr psrcPix, *ppdstPix;
- int xrot, yrot;
-{
- register PixmapPtr pdstPix;
-
- if ((pdstPix = *ppdstPix) &&
- (pdstPix->devKind == psrcPix->devKind) &&
- (pdstPix->drawable.height == psrcPix->drawable.height))
- {
- memmove((char *)pdstPix->devPrivate.ptr,
- (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind);
- pdstPix->drawable.width = psrcPix->drawable.width;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- else
- {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = mfbCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- mfbPadPixmap(pdstPix);
- if (xrot)
- mfbXRotatePixmap(pdstPix, xrot);
- if (yrot)
- mfbYRotatePixmap(pdstPix, yrot);
-}
diff --git a/xorg-server/mfb/mfbply1rct.c b/xorg-server/mfb/mfbply1rct.c
deleted file mode 100644
index 4227e894f..000000000
--- a/xorg-server/mfb/mfbply1rct.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- *
-Copyright 1990, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#if defined(mips) || defined(sparc)
-#define GetHighWord(x) (((int) (x)) >> 16)
-#else
-#define GetHighWord(x) (((int) (x)) / 65536)
-#endif
-
-#if IMAGE_BYTE_ORDER == MSBFirst
-#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) (i))))
-#define coordToInt(x,y) (((x) << 16) | ((y) & 0xffff))
-#define intToX(i) (GetHighWord(i))
-#define intToY(i) ((int) ((short) i))
-#else
-#define intToCoord(i,x,y) (((x) = (int) ((short) (i))), ((y) = GetHighWord(i)))
-#define coordToInt(x,y) (((y) << 16) | ((x) & 0xffff))
-#define intToX(i) ((int) ((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
-
-void
-MFBFILLPOLY1RECT (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int shape;
- int mode;
- int count;
- DDXPointPtr ptsIn;
-{
- int nlwidth;
- PixelType *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p = NULL, *vertex2p;
- int *endp;
- int x1 = 0, x2 = 0;
- int dx1 = 0, dx2 = 0;
- int dy1 = 0, dy2 = 0;
- int e1 = 0, e2 = 0;
- int step1 = 0, step2 = 0;
- int sign1 = 0, sign2 = 0;
- int h;
- int l, r;
- PixelType mask, bits = ~((PixelType)0);
- int nmiddle;
-
- if (mode == CoordModePrevious || shape != Convex ||
- REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- origin = *((int *) &pDrawable->x);
- vertex2 = origin - ((origin & 0x8000) << 1);
- extents = &pGC->pCompositeClip->extents;
- vertex1 = *((int *) &extents->x1) - vertex2;
- vertex2 = *((int *) &extents->x2) - vertex2 - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- while (count--)
- {
- c = *vertex2p;
- clip |= (c - vertex1) | (vertex2 - c);
- c = intToY(c);
- if (c < y)
- {
- y = c;
- vertex1p = vertex2p;
- }
- vertex2p++;
- if (c > maxy)
- maxy = c;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl);
- addrl = mfbScanlineDelta(addrl, y + pDrawable->y, nlwidth);
- origin = intToX(origin);
- vertex2p = vertex1p;
- vertex2 = vertex1 = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
-#define Setup(c,x,vertex,dx,dy,e,sign,step) {\
- x = intToX(vertex); \
- if ((dy = intToY(c) - y)) { \
- dx = intToX(c) - x; \
- step = 0; \
- if (dx >= 0) \
- { \
- e = 0; \
- sign = 1; \
- if (dx >= dy) {\
- step = dx / dy; \
- dx = dx % dy; \
- } \
- } \
- else \
- { \
- e = 1 - dy; \
- sign = -1; \
- dx = -dx; \
- if (dx >= dy) { \
- step = - (dx / dy); \
- dx = dx % dy; \
- } \
- } \
- } \
- x += origin; \
- vertex = c; \
-}
-
-#define Step(x,dx,dy,e,sign,step) {\
- x += step; \
- if ((e += dx) > 0) \
- { \
- x += sign; \
- e -= dy; \
- } \
-}
- for (;;)
- {
- if (y == intToY(vertex1))
- {
- do
- {
- if (vertex1p == (int *) ptsIn)
- vertex1p = endp;
- c = *--vertex1p;
- Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1)
- } while (y >= intToY(vertex1));
- h = dy1;
- }
- else
- {
- Step(x1,dx1,dy1,e1,sign1,step1)
- h = intToY(vertex1) - y;
- }
- if (y == intToY(vertex2))
- {
- do
- {
- c = *vertex2p++;
- if (vertex2p == endp)
- vertex2p = (int *) ptsIn;
- Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2)
- } while (y >= intToY(vertex2));
- if (dy2 < h)
- h = dy2;
- }
- else
- {
- Step(x2,dx2,dy2,e2,sign2,step2)
- if ((c = (intToY(vertex2) - y)) < h)
- h = c;
- }
- /* fill spans for this segment */
- y += h;
- for (;;)
- {
- l = x1;
- r = x2;
- nmiddle = x2 - x1;
- if (nmiddle < 0)
- {
- nmiddle = -nmiddle;
- l = x2;
- r = x1;
- }
- c = l & PIM;
- l -= c;
- l = l >> PWSH;
- addr = addrl + l;
- if (c + nmiddle < PPW)
- {
- mask = SCRRIGHT (bits,c) ^ SCRRIGHT (bits,c+nmiddle);
- *addr OPEQ mask;
- }
- else
- {
- if (c)
- {
- mask = SCRRIGHT(bits, c);
- *addr OPEQ mask;
- nmiddle += c - PPW;
- addr++;
- }
- nmiddle >>= PWSH;
- Duff (nmiddle, *addr++ EQWHOLEWORD)
- if ((mask = ~SCRRIGHT(bits, r & PIM)))
- *addr OPEQ mask;
- }
- if (!--h)
- break;
- mfbScanlineInc(addrl, nlwidth);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- mfbScanlineInc(addrl, nlwidth);
- }
-}
diff --git a/xorg-server/mfb/mfbplyblack.c b/xorg-server/mfb/mfbplyblack.c
deleted file mode 100644
index e3c63f773..000000000
--- a/xorg-server/mfb/mfbplyblack.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#define OPEQ MFB_OPEQ_BLACK
-#define MFBFILLPOLY1RECT mfbFillPolyBlack
-#define EQWHOLEWORD MFB_EQWHOLEWORD_BLACK
-#include "./mfbply1rct.c"
diff --git a/xorg-server/mfb/mfbplygblt.c b/xorg-server/mfb/mfbplygblt.c
deleted file mode 100644
index 1bd56e1ec..000000000
--- a/xorg-server/mfb/mfbplygblt.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-#include "miscstruct.h"
-
-/*
- we should eventually special-case fixed-width fonts, although
-its more important for ImageText, which is meant for terminal
-emulators.
-
- this works for fonts with glyphs <= 32 bits wide.
-
- the clipping calculations are done for worst-case fonts.
-we make no assumptions about the heights, widths, or bearings
-of the glyphs. if we knew that the glyphs are all the same height,
-we could clip the tops and bottoms per clipping box, rather
-than per character per clipping box. if we knew that the glyphs'
-left and right bearings were well-behaved, we could clip a single
-character at the start, output until the last unclipped
-character, and then clip the last one. this is all straightforward
-to determine based on max-bounds and min-bounds from the font.
- there is some inefficiency introduced in the per-character
-clipping to make what's going on clearer.
-
- (it is possible, for example, for a font to be defined in which the
-next-to-last character in a font would be clipped out, but the last
-one wouldn't. the code below deals with this.)
-
- PolyText looks at the fg color and the rasterop; mfbValidateGC
-swaps in the right routine after looking at the reduced ratserop
-in the private field of the GC.
-
- the register allocations are provisional; in particualr startmask and
-endmask might not be the right things. pglyph, xoff, pdst, and tmpSrc
-are fairly obvious, though.
-
- to avoid source proliferation, this file is compiled
-three times:
- MFBPOLYGLYPHBLT OPEQ
- mfbPolyGlyphBltWhite |=
- mfbPolyGlyphBltBlack &=~
- mfbPolyGlyphBltInvert ^=
-*/
-
-void
-MFBPOLYGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs (unused in R5) */
-{
- ExtentInfoRec info; /* used by QueryGlyphExtents() */
- BoxRec bbox; /* string's bounding box */
-
- CharInfoPtr pci;
- int xorg, yorg; /* origin of drawable in bitmap */
- int widthDst; /* width of dst in longwords */
-
- /* these keep track of the character origin */
- PixelType *pdstBase;
- /* points to longword with character origin */
- int xchar; /* xorigin of char (mod 32) */
-
- /* these are used for placing the glyph */
- register int xoff; /* x offset of left edge of glyph (mod 32) */
- register PixelType *pdst;
- /* pointer to current longword in dst */
-
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
-
- /* used for putting down glyph */
- register PixelType tmpSrc;
- /* for getting bits from glyph */
- register PixelType startmask;
- register PixelType endmask;
- register int nFirst;/* bits of glyph in current longword */
-
- if (!(pGC->planemask & 1))
- return;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- x += xorg;
- y += yorg;
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xchar = x & PIM;
-
- while(nglyph--)
- {
- pci = *ppci;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- h = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- /* start at top scanline of glyph */
- pdst = pdstBase;
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST)
- {
- pdst++;
- xoff &= PIM;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -pci->metrics.ascent, widthDst);
-
- if ((xoff + w) <= PPW)
- {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getleftbits(pglyph, w, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- } /* glyph crosses longwords boundary */
-
- /* update character origin */
- x += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar -= PPW;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- ppci++;
- } /* while nglyph-- */
- break;
- case rgnPART:
- {
- TEXTPOS *ppos;
- RegionPtr cclip;
- int nbox;
- BoxPtr pbox;
- int xpos; /* x position of char origin */
- int i;
- BoxRec clip;
- int leftEdge, rightEdge;
- int topEdge, bottomEdge;
- int glyphRow; /* first row of glyph not wholly
- clipped out */
- int glyphCol; /* leftmost visible column of glyph */
-#if GETLEFTBITS_ALIGNMENT > 1
- int getWidth; /* bits to get from glyph */
-#endif
-
- if(!(ppos = (TEXTPOS *)xalloc(nglyph * sizeof(TEXTPOS))))
- return;
-
- pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst);
- xpos = x;
- xchar = xpos & PIM;
-
- for (i=0; i<nglyph; i++)
- {
- pci = ppci[i];
-
- ppos[i].xpos = xpos;
- ppos[i].xchar = xchar;
- ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing;
- ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing;
- ppos[i].topEdge = y - pci->metrics.ascent;
- ppos[i].bottomEdge = y + pci->metrics.descent;
- ppos[i].pdstBase = pdstBase;
- ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
-
- xpos += pci->metrics.characterWidth;
- xchar += pci->metrics.characterWidth;
- if (xchar > PLST)
- {
- xchar &= PIM;
- pdstBase++;
- }
- else if (xchar < 0)
- {
- xchar += PPW;
- pdstBase--;
- }
- }
-
- cclip = pGC->pCompositeClip;
- pbox = REGION_RECTS(cclip);
- nbox = REGION_NUM_RECTS(cclip);
-
- for (; --nbox >= 0; pbox++)
- {
- clip.x1 = max(bbox.x1, pbox->x1);
- clip.y1 = max(bbox.y1, pbox->y1);
- clip.x2 = min(bbox.x2, pbox->x2);
- clip.y2 = min(bbox.y2, pbox->y2);
- if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1))
- continue;
-
- for(i=0; i<nglyph; i++)
- {
- pci = ppci[i];
- xchar = ppos[i].xchar;
-
- /* clip the left and right edges */
- if (ppos[i].leftEdge < clip.x1)
- leftEdge = clip.x1;
- else
- leftEdge = ppos[i].leftEdge;
-
- if (ppos[i].rightEdge > clip.x2)
- rightEdge = clip.x2;
- else
- rightEdge = ppos[i].rightEdge;
-
- w = rightEdge - leftEdge;
- if (w <= 0)
- continue;
-
- /* clip the top and bottom edges */
- if (ppos[i].topEdge < clip.y1)
- topEdge = clip.y1;
- else
- topEdge = ppos[i].topEdge;
-
- if (ppos[i].bottomEdge > clip.y2)
- bottomEdge = clip.y2;
- else
- bottomEdge = ppos[i].bottomEdge;
-
- h = bottomEdge - topEdge;
- if (h <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyph = FONTGLYPHBITS(pglyphBase, pci);
- pglyph += (glyphRow * widthGlyph);
-
- pdst = ppos[i].pdstBase;
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
-#if GETLEFTBITS_ALIGNMENT > 1
- getWidth = w + glyphCol;
-#endif
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST)
- {
- xoff &= PIM;
- pdst++;
- }
- else if (xoff < 0)
- {
- xoff += PPW;
- pdst--;
- }
-
- pdst = mfbScanlineDelta(pdst, -(y-topEdge), widthDst);
-
- if ((xoff + w) <= PPW)
- {
- maskpartialbits(xoff, w, startmask);
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- else
- {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- while (h--)
- {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- mfbScanlineInc(pdst, widthDst);
- }
- }
- } /* for each glyph */
- } /* while nbox-- */
- xfree(ppos);
- break;
- }
- default:
- break;
- }
-}
diff --git a/xorg-server/mfb/mfbplyinv.c b/xorg-server/mfb/mfbplyinv.c
deleted file mode 100644
index 19094f828..000000000
--- a/xorg-server/mfb/mfbplyinv.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#define OPEQ MFB_OPEQ_INVERT
-#define MFBFILLPOLY1RECT mfbFillPolyInvert
-#define EQWHOLEWORD MFB_EQWHOLEWORD_INVERT
-#include "./mfbply1rct.c"
diff --git a/xorg-server/mfb/mfbplywhite.c b/xorg-server/mfb/mfbplywhite.c
deleted file mode 100644
index 0045c5a81..000000000
--- a/xorg-server/mfb/mfbplywhite.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#define OPEQ MFB_OPEQ_WHITE
-#define MFBFILLPOLY1RECT mfbFillPolyWhite
-#define EQWHOLEWORD MFB_EQWHOLEWORD_WHITE
-#include "./mfbply1rct.c"
diff --git a/xorg-server/mfb/mfbpntarea.c b/xorg-server/mfb/mfbpntarea.c
deleted file mode 100644
index 2906e660c..000000000
--- a/xorg-server/mfb/mfbpntarea.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-/*
- the solid fillers are called for rectangles and window backgrounds.
- the boxes are already translated.
- maybe this should always take a pixmap instead of a drawable?
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*
- MFBSOLIDFILLAREA OPEQ EQWHOLEOWRD
- mfbSolidWhiteArea |= = ~0
- mfbSolidBlackArea &=~ = 0
- mfbSolidInvertArea ^= ^= ~0
-
-EQWHOLEWORD is used to write whole longwords. it could use OPEQ,
-but *p++ |= ~0 on at least two compilers generates much
-worse code than *p++ = ~0. similarly for *p++ &= ~~0
-and *p++ = 0.
-
-*/
-
-/*ARGSUSED*/
-void
-MFBSOLIDFILLAREA(pDraw, nbox, pbox, alu, nop)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr nop;
-{
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int h; /* height of current box */
- register PixelType *p; /* pointer to bits we're writing */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType startmask;
- register PixelType endmask;/* masks for reggedy bits at either end of line */
- register int nlwExtra;
- /* to get from right of box to left of next span */
- int nlwMiddle; /* number of longwords between sides of boxes */
- PixelType *pbits; /* pointer to start of drawable */
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits);
-
- while (nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
- p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- Duff(h, *p OPEQ startmask; mfbScanlineInc(p, nlwExtra));
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- nlw = nlwMiddle;
- *p OPEQ startmask;
- p++;
- Duff(nlw, *p++ EQWHOLEWORD);
- *p OPEQ endmask;
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (startmask && !endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- nlw = nlwMiddle;
- *p OPEQ startmask;
- p++;
- Duff(nlw, *p++ EQWHOLEWORD);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (!startmask && endmask)
- {
- while (h--)
- {
- nlw = nlwMiddle;
- Duff(nlw, *p++ EQWHOLEWORD);
- *p OPEQ endmask;
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else /* no ragged bits at either end */
- {
- while (h--)
- {
- nlw = nlwMiddle;
- Duff(nlw, *p++ EQWHOLEWORD);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- }
- pbox++;
- }
-}
-
-
-
-/* stipple a list of boxes
-
-you can use the reduced rasterop for stipples. if rrop is
-black, AND the destination with (not stipple pattern). if rrop is
-white OR the destination with the stipple pattern. if rrop is invert,
-XOR the destination with the stipple pattern.
-
- MFBSTIPPLEFILLAREA OPEQ
- mfbStippleWhiteArea |=
- mfbStippleBlackArea &=~
- mfbStippleInveryArea ^=
-*/
-
-/*ARGSUSED*/
-void
-MFBSTIPPLEFILLAREA(pDraw, nbox, pbox, alu, pstipple)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pstipple;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
-
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- register int h; /* height of current box */
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits);
-
- tileHeight = pstipple->drawable.height;
- psrc = (PixelType *)(pstipple->devPrivate.ptr);
-
- while (nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
- iy = pbox->y1 % tileHeight;
- p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p OPEQ (srcpix & startmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p OPEQ (srcpix & startmask);
- p++;
- Duff (nlw, *p++ OPEQ srcpix);
- *p OPEQ (srcpix & endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (startmask && !endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p OPEQ (srcpix & startmask);
- p++;
- Duff(nlw, *p++ OPEQ srcpix);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (!startmask && endmask)
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ OPEQ srcpix);
- *p OPEQ (srcpix & endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else /* no ragged bits at either end */
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ OPEQ srcpix);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- }
- pbox++;
- }
-}
diff --git a/xorg-server/mfb/mfbpolypnt.c b/xorg-server/mfb/mfbpolypnt.c
deleted file mode 100644
index 146cfdce0..000000000
--- a/xorg-server/mfb/mfbpolypnt.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "pixmapstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-void
-mfbPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- register DrawablePtr pDrawable;
- GCPtr pGC;
- int mode; /* Origin or Previous */
- int npt;
- xPoint *pptInit;
-{
-
- register BoxPtr pbox;
- register int nbox;
-
- register PixelType *addrl;
- int nlwidth;
-
- int nptTmp;
- register xPoint *ppt;
-
- register int x;
- register int y;
- register int rop;
- mfbPrivGC *pGCPriv;
-
- if (!(pGC->planemask & 1))
- return;
-
- pGCPriv = (mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- rop = pGCPriv->rop;
-
- mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl);
-
- if ((mode == CoordModePrevious) && (npt > 1))
- {
- for (ppt = pptInit + 1, nptTmp = npt - 1; --nptTmp >= 0; ppt++)
- {
- ppt->x += (ppt-1)->x;
- ppt->y += (ppt-1)->y;
- }
- }
-
- nbox = REGION_NUM_RECTS(pGC->pCompositeClip);
- pbox = REGION_RECTS(pGC->pCompositeClip);
- for (; --nbox >= 0; pbox++)
- {
- if (rop == RROP_BLACK)
- {
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++)
- {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *mfbScanline(addrl, x, y, nlwidth) &= rmask[x & PIM];
- }
- }
- else if (rop == RROP_WHITE)
- {
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++)
- {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *mfbScanline(addrl, x, y, nlwidth) |= mask[x & PIM];
- }
- }
- else if (rop == RROP_INVERT)
- {
- for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++)
- {
- x = ppt->x + pDrawable->x;
- y = ppt->y + pDrawable->y;
- if ((x >= pbox->x1) && (x < pbox->x2) &&
- (y >= pbox->y1) && (y < pbox->y2))
- *mfbScanline(addrl, x, y, nlwidth) ^= mask[x & PIM];
- }
- }
- }
-}
diff --git a/xorg-server/mfb/mfbpushpxl.c b/xorg-server/mfb/mfbpushpxl.c
deleted file mode 100644
index de9699252..000000000
--- a/xorg-server/mfb/mfbpushpxl.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <string.h>
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "miscstruct.h"
-#include "maskbits.h"
-#include "regionstr.h"
-#include "mfb.h"
-
-/* mfbSolidPP is courtesy of xhacks@csri.toronto.edu
-
- For fillStyle==FillSolid, a monochrome PushPixels can be reduced to
- a ROP in the following way: (Note that the ROP is the same as the
- result of ROP(src=0x3,dst=0x5))
-
- src=0011 0000 0011
- dst=0101 0101 0101
- rop fg=0 fg=1
- GXclear 0x0 0000 0100 0100 0
- GXand 0x1 0001 0100 0101 s&d
- GXandReverse 0x2 0010 0100 0110 s&~d
- GXcopy 0x3 0011 0100 0111 s
- GXandInverted 0x4 0100 0101 0100 ~s&d
- GXnoop 0x5 0101 0101 0101 d
- GXxor 0x6 0110 0101 0110 s^d
- GXor 0x7 0111 0101 0111 s|d
- GXnor 0x8 1000 0110 0100 ~s&~d
- GXequiv 0x9 1001 0110 0101 ~s^d
- GXinvert 0xa 1010 0110 0110 ~d
- GXorReverse 0xb 1011 0110 0111 s|~d
- GXcopyInverted 0xc 1100 0111 0100 ~s
- GXorInverted 0xd 1101 0111 0101 ~s|d
- GXnand 0xe 1110 0111 0110 ~s|~d
- GXset 0xf 1111 0111 0111 1
-
-For src=0: newRop = 0x4|(rop>>2)
-For src=1: newRop = 0x4|(rop&3)
-*/
-
-/* mfbSolidPP -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-mfbSolidPP(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- unsigned char alu;
- RegionRec rgnDst;
- DDXPointPtr pptSrc;
- BoxRec srcBox;
- register DDXPointPtr ppt;
- register BoxPtr pbox;
- int i;
-
- if (!(pGC->planemask & 1)) return;
-
- /* compute the reduced rop function */
- alu = pGC->alu;
- if (!(pGC->fgPixel&1)) alu >>= 2;
- alu = (alu & 0x3) | 0x4;
- if (alu == GXnoop) return;
-
- srcBox.x1 = xOrg;
- srcBox.y1 = yOrg;
- srcBox.x2 = xOrg + dx;
- srcBox.y2 = yOrg + dy;
- REGION_INIT(pGC->pScreen, &rgnDst, &srcBox, 1);
-
- /* clip the shape of the dst to the destination composite clip */
- REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, pGC->pCompositeClip);
-
- if (!REGION_NIL(&rgnDst))
- {
- i = REGION_NUM_RECTS(&rgnDst);
- pptSrc = (DDXPointPtr)xalloc(i * sizeof(DDXPointRec));
- if(pptSrc)
- {
- for (pbox = REGION_RECTS(&rgnDst), ppt = pptSrc;
- --i >= 0;
- pbox++, ppt++)
- {
- ppt->x = pbox->x1 - xOrg;
- ppt->y = pbox->y1 - yOrg;
- }
- mfbDoBitblt((DrawablePtr)pBitMap, pDrawable, alu, &rgnDst, pptSrc);
- xfree(pptSrc);
- }
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
-}
-
-#define NPT 128
-
-/* mfbPushPixels -- squeegees the forground color of pGC through pBitMap
- * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may
- * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit
- * is set in the bitmap, the fill style is put onto the drawable using
- * the GC's logical function. The drawable is not changed where the bitmap
- * has a zero bit or outside the area covered by the stencil.
- */
-void
-mfbPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
- GCPtr pGC;
- PixmapPtr pBitMap;
- DrawablePtr pDrawable;
- int dx, dy, xOrg, yOrg;
-{
- int h, dxDivPPW, ibEnd;
- PixelType *pwLineStart;
- register PixelType *pw, *pwEnd;
- register PixelType mask;
- register int ib;
- register PixelType w;
- register int ipt; /* index into above arrays */
- Bool fInBox;
- DDXPointRec pt[NPT];
- int width[NPT];
-
- /* Now scan convert the pixmap and use the result to call fillspans in
- * in the drawable with the original GC */
- ipt = 0;
- dxDivPPW = dx/PPW;
- for(h = 0; h < dy; h++)
- {
-
- pw = (PixelType *)(pointer)
- (((char *)(pBitMap->devPrivate.ptr))+(h * pBitMap->devKind));
- pwLineStart = pw;
- /* Process all words which are fully in the pixmap */
-
- fInBox = FALSE;
- pwEnd = pwLineStart + dxDivPPW;
- while(pw < pwEnd)
- {
- w = *pw;
- mask = endtab[1];
- for(ib = 0; ib < PPW; ib++)
- {
- if(w & mask)
- {
- if(!fInBox)
- {
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- /* start new box */
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- /* end box */
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- pw++;
- }
- ibEnd = dx & PIM;
- if(ibEnd)
- {
- /* Process final partial word on line */
- w = *pw;
- mask = endtab[1];
- for(ib = 0; ib < ibEnd; ib++)
- {
- if(w & mask)
- {
- if(!fInBox)
- {
- /* start new box */
- pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg;
- pt[ipt].y = h + yOrg;
- fInBox = TRUE;
- }
- }
- else
- {
- if(fInBox)
- {
- /* end box */
- width[ipt] = ((pw - pwLineStart) << PWSH) +
- ib + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt,
- width, TRUE);
- ipt = 0;
- }
- fInBox = FALSE;
- }
- }
- mask = SCRRIGHT(mask, 1);
- }
- }
- /* If scanline ended with last bit set, end the box */
- if(fInBox)
- {
- width[ipt] = dx + xOrg - pt[ipt].x;
- if (++ipt >= NPT)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, width, TRUE);
- ipt = 0;
- }
- }
- }
- /* Flush any remaining spans */
- if (ipt)
- {
- (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE);
- }
-}
-
-mfbPushPixelsProc *mfbPushPixelsWeak(void)
-{
- return mfbPushPixels;
-}
diff --git a/xorg-server/mfb/mfbscrclse.c b/xorg-server/mfb/mfbscrclse.c
deleted file mode 100644
index 97ca729fb..000000000
--- a/xorg-server/mfb/mfbscrclse.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "mfb.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-mfbCloseScreen(index, pScreen)
- int index;
- register ScreenPtr pScreen;
-{
- xfree(pScreen->devPrivate);
- return TRUE;
-}
-
diff --git a/xorg-server/mfb/mfbscrinit.c b/xorg-server/mfb/mfbscrinit.c
deleted file mode 100644
index 20ac16037..000000000
--- a/xorg-server/mfb/mfbscrinit.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <string.h>
-
-#include <X11/X.h>
-#include <X11/Xproto.h> /* for xColorItem */
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "mfb.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "migc.h"
-#include "servermd.h"
-
-#ifdef PIXMAP_PER_WINDOW
-static DevPrivateKey frameWindowPrivateKey = &frameWindowPrivateKey;
-DevPrivateKey frameGetWindowPrivateKey(void) { return frameWindowPrivateKey; }
-#endif
-static DevPrivateKey mfbGCPrivateKey = &mfbGCPrivateKey;
-DevPrivateKey mfbGetGCPrivateKey(void) { return mfbGCPrivateKey; }
-static unsigned long mfbGeneration = 0;
-
-static VisualRec visual = {
-/* vid class bpRGB cmpE nplan rMask gMask bMask oRed oGreen oBlue */
- 0, StaticGray, 1, 2, 1, 0, 0, 0, 0, 0, 0
-};
-
-static VisualID VID;
-
-static DepthRec depth = {
-/* depth numVid vids */
- 1, 1, &VID
-};
-
-Bool
-mfbAllocatePrivates(ScreenPtr pScreen, DevPrivateKey *pGCKey)
-{
- if (mfbGeneration != serverGeneration)
- {
- visual.vid = FakeClientID(0);
- VID = visual.vid;
- mfbGeneration = serverGeneration;
- }
- if (pGCKey)
- *pGCKey = mfbGCPrivateKey;
- pScreen->GetWindowPixmap = mfbGetWindowPixmap;
- pScreen->SetWindowPixmap = mfbSetWindowPixmap;
- return dixRequestPrivate(mfbGCPrivateKey, sizeof(mfbPrivGC));
-}
-
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-mfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
-{
- if (!mfbAllocatePrivates(pScreen, NULL))
- return FALSE;
- pScreen->defColormap = (Colormap) FakeClientID(0);
- /* whitePixel, blackPixel */
- pScreen->QueryBestSize = mfbQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = mfbGetImage;
- pScreen->GetSpans = mfbGetSpans;
- pScreen->CreateWindow = mfbCreateWindow;
- pScreen->PositionWindow = mfbPositionWindow;
- pScreen->RealizeWindow = mfbMapWindow;
- pScreen->UnrealizeWindow = mfbUnmapWindow;
- pScreen->CopyWindow = mfbCopyWindow;
- pScreen->CreatePixmap = mfbCreatePixmap;
- pScreen->DestroyPixmap = mfbDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->CreateGC = mfbCreateGC;
- pScreen->CreateColormap = mfbCreateColormap;
- pScreen->DestroyColormap = mfbDestroyColormap;
- pScreen->InstallColormap = mfbInstallColormap;
- pScreen->UninstallColormap = mfbUninstallColormap;
- pScreen->ListInstalledColormaps = mfbListInstalledColormaps;
- pScreen->StoreColors = (StoreColorsProcPtr)NoopDDA;
- pScreen->ResolveColor = mfbResolveColor;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
- if (!miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- 1, 1, &depth, VID, 1, &visual))
- return FALSE;
- return TRUE;
-}
-
-PixmapPtr
-mfbGetWindowPixmap(pWin)
- WindowPtr pWin;
-{
-#ifdef PIXMAP_PER_WINDOW
- return (PixmapPtr)dixLookupPrivate(&pWin->devPrivates,
- frameWindowPrivateKey);
-#else
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- return (* pScreen->GetScreenPixmap)(pScreen);
-#endif
-}
-
-void
-mfbSetWindowPixmap(pWin, pPix)
- WindowPtr pWin;
- PixmapPtr pPix;
-{
-#ifdef PIXMAP_PER_WINDOW
- dixSetPrivate(&pWin->devPrivates, frameWindowPrivateKey, pPix);
-#else
- (* pWin->drawable.pScreen->SetScreenPixmap)(pPix);
-#endif
-}
-
-void mfbFillInScreen(ScreenPtr pScreen)
-{
- pScreen->RealizeWindow = mfbMapWindow;
- pScreen->UnrealizeWindow = mfbUnmapWindow;
- pScreen->DestroyPixmap = mfbDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-}
diff --git a/xorg-server/mfb/mfbseg.c b/xorg-server/mfb/mfbseg.c
deleted file mode 100644
index 3af37d817..000000000
--- a/xorg-server/mfb/mfbseg.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define POLYSEGMENT
-#include "./mfbline.c"
diff --git a/xorg-server/mfb/mfbsetsp.c b/xorg-server/mfb/mfbsetsp.c
deleted file mode 100644
index 24add836c..000000000
--- a/xorg-server/mfb/mfbsetsp.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-
-/* mfbSetScanline -- copies the bits from psrc to the drawable starting at
- * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc
- * starts on the scanline. (I.e., if this scanline passes through multiple
- * boxes, we may not want to start grabbing bits at psrc but at some offset
- * further on.)
- */
-void
-mfbSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst)
- int y;
- int xOrigin; /* where this scanline starts */
- int xStart; /* first bit to use from scanline */
- int xEnd; /* last bit to use from scanline + 1 */
- register PixelType *psrc;
- register int alu; /* raster op */
- PixelType *pdstBase; /* start of the drawable */
- int widthDst; /* width of drawable in words */
-{
- int w; /* width of scanline in bits */
- register PixelType *pdst; /* where to put the bits */
- register PixelType tmpSrc; /* scratch buffer to collect bits in */
- int dstBit; /* offset in bits from beginning of
- * word */
- register int nstart; /* number of bits from first partial */
- register int nend; /* " " last partial word */
- int offSrc;
- PixelType startmask, endmask;
- int nlMiddle, nl;
-
- pdst = mfbScanline(pdstBase, xStart, y, widthDst);
- psrc += (xStart - xOrigin) >> PWSH;
- offSrc = (xStart - xOrigin) & PIM;
- w = xEnd - xStart;
- dstBit = xStart & PIM;
-
- if (dstBit + w <= PPW)
- {
- getandputrop(psrc, offSrc, dstBit, w, pdst, alu)
- }
- else
- {
-
- maskbits(xStart, w, startmask, endmask, nlMiddle);
- if (startmask)
- nstart = PPW - dstBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & PIM;
- else
- nend = 0;
- if (startmask)
- {
- getandputrop(psrc, offSrc, dstBit, nstart, pdst, alu)
- pdst++;
- offSrc += nstart;
- if (offSrc > PLST)
- {
- psrc++;
- offSrc -= PPW;
- }
- }
- nl = nlMiddle;
- while (nl--)
- {
- getbits(psrc, offSrc, PPW, tmpSrc);
- DoRop(*pdst, alu, tmpSrc, *pdst);
- pdst++;
- psrc++;
- }
- if (endmask)
- {
- getandputrop0(psrc, offSrc, nend, pdst, alu);
- }
-
- }
-}
-
-
-
-/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at
- * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines
- * are in increasing Y order.
- * Source bit lines are server scanline padded so that they always begin
- * on a word boundary.
- */
-void
-mfbSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- PixelType *psrc = (PixelType *)(pointer)pcharsrc;
- PixelType *pdstBase; /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- register BoxPtr pbox, pboxLast, pboxTest;
- register DDXPointPtr pptLast;
- int alu;
- RegionPtr prgnDst;
- int xStart, xEnd;
- int yMax;
-
- alu = pGC->alu;
- prgnDst = pGC->pCompositeClip;
-
- pptLast = ppt + nspans;
-
- yMax = pDrawable->y + (int) pDrawable->height;
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- pbox = REGION_RECTS(prgnDst);
- pboxLast = pbox + REGION_NUM_RECTS(prgnDst);
-
- if(fSorted)
- {
- /* scan lines sorted in ascending order. Because they are sorted, we
- * don't have to check each scanline against each clip box. We can be
- * sure that this scanline only has to be clipped to boxes at or after the
- * beginning of this y-band
- */
- pboxTest = pbox;
- while(ppt < pptLast)
- {
- pbox = pboxTest;
- if(ppt->y >= yMax)
- break;
- while(pbox < pboxLast)
- {
- if(pbox->y1 > ppt->y)
- {
- /* scanline is before clip box */
- break;
- }
- else if(pbox->y2 <= ppt->y)
- {
- /* clip box is before scanline */
- pboxTest = ++pbox;
- continue;
- }
- else if(pbox->x1 > ppt->x + *pwidth)
- {
- /* clip box is to right of scanline */
- break;
- }
- else if(pbox->x2 <= ppt->x)
- {
- /* scanline is to right of clip box */
- pbox++;
- continue;
- }
-
- /* at least some of the scanline is in the current clip box */
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(ppt->x + *pwidth, pbox->x2);
- mfbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst);
- if(ppt->x + *pwidth <= pbox->x2)
- {
- /* End of the line, as it were */
- break;
- }
- else
- pbox++;
- }
- /* We've tried this line against every box; it must be outside them
- * all. move on to the next point */
- ppt++;
- psrc += PixmapWidthInPadUnits(*pwidth, 1);
- pwidth++;
- }
- }
- else
- {
- /* scan lines not sorted. We must clip each line against all the boxes */
- while(ppt < pptLast)
- {
- if(ppt->y >= 0 && ppt->y < yMax)
- {
-
- for(pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++)
- {
- if(pbox->y1 > ppt->y)
- {
- /* rest of clip region is above this scanline,
- * skip it */
- break;
- }
- if(pbox->y2 <= ppt->y)
- {
- /* clip box is below scanline */
- pbox++;
- break;
- }
- if(pbox->x1 <= ppt->x + *pwidth &&
- pbox->x2 > ppt->x)
- {
- xStart = max(pbox->x1, ppt->x);
- xEnd = min(pbox->x2, ppt->x + *pwidth);
- mfbSetScanline(ppt->y, ppt->x, xStart, xEnd,
- psrc, alu, pdstBase, widthDst);
- }
-
- }
- }
- psrc += PixmapWidthInPadUnits(*pwidth, 1);
- ppt++;
- pwidth++;
- }
- }
-}
diff --git a/xorg-server/mfb/mfbteblack.c b/xorg-server/mfb/mfbteblack.c
deleted file mode 100644
index 3ea72728d..000000000
--- a/xorg-server/mfb/mfbteblack.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#define OP MFB_OP_BLACK
-#define MFBTEGLYPHBLT mfbTEGlyphBltBlack
-#define CLIPTETEXT mfbImageGlyphBltBlack
-#include "./mfbtegblt.c"
diff --git a/xorg-server/mfb/mfbtegblt.c b/xorg-server/mfb/mfbtegblt.c
deleted file mode 100644
index ff52d8c9e..000000000
--- a/xorg-server/mfb/mfbtegblt.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "mfb.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-/*
- this works for fonts with glyphs <= PPW bits wide.
-
- This should be called only with a terminal-emulator font;
-this means that the FIXED_METRICS flag is set, and that
-glyphbounds == charbounds.
-
- in theory, this goes faster; even if it doesn't, it reduces the
-flicker caused by writing a string over itself with image text (since
-the background gets repainted per character instead of per string.)
-this seems to be important for some converted X10 applications.
-
- Image text looks at the bits in the glyph and the fg and bg in the
-GC. it paints a rectangle, as defined in the protocol dcoument,
-and the paints the characters.
-
- to avoid source proliferation, this file is compiled
-two times:
- MFBTEGLYPHBLT OP
- mfbTEGlyphBltWhite (white text, black bg )
- mfbTEGlyphBltBlack ~ (black text, white bg )
-
-*/
-
-#if defined(NO_3_60_CG4) && defined(FASTPUTBITS) && defined(FASTGETBITS)
-#define FASTCHARS
-#endif
-
-/*
- * this macro "knows" that only characters <= 8 bits wide will
- * fit this case (which is why it is independent of GLYPHPADBYTES)
- */
-
-#if (BITMAP_BIT_ORDER == MSBFirst) && (GLYPHPADBYTES != 4)
-#if GLYPHPADBYTES == 1
-#define ShiftAmnt 24
-#else
-#define ShiftAmnt 16
-#endif
-
-/*
- * XXX XXX XXX There is something horribly, massively wrong here. There are
- * hardcoded shifts by 64 below; these cannot work on any present-day
- * architecture.
- */
-
-/*
- * Note: for BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER, SCRRIGHT() evaluates its
- * first argument more than once. Thus the imbedded char++ have to be moved.
- * (DHD)
- */
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2 << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3 << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4 << ShiftAmnt, xoff4); \
- char2++; char3++; char4++;
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#else /* (BITMAP_BIT_ORDER != MSBFirst) || (GLYPHPADBYTES == 4) */
-
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2++, xoff2) | \
- SCRRIGHT (*char3++, xoff3) | \
- SCRRIGHT (*char4++, xoff4);
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2, xoff2) | \
- SCRRIGHT (*char3, xoff3) | \
- SCRRIGHT (*char4, xoff4); \
- char2++; char3++; char4++;
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#endif /* BITMAP_BIT_ORDER && GLYPHPADBYTES */
-
-
-#if GLYPHPADBYTES == 1
-typedef unsigned char *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 2
-typedef unsigned short *glyphPointer;
-#define USE_LEFTBITS
-#endif
-
-#if GLYPHPADBYTES == 4
-typedef unsigned int *glyphPointer;
-#endif
-
-#ifdef USE_LEFTBITS
-#define GetBits1 getleftbits (char1, widthGlyph, c); \
- c &= glyphMask; \
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
-#define GetBits1 c = *char1++;
-#endif
-
-void
-MFBTEGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
- DrawablePtr pDrawable;
- GC *pGC;
- int x, y;
- unsigned int nglyph;
- CharInfoPtr *ppci; /* array of character info */
- pointer pglyphBase; /* start of array of glyphs */
-{
- FontPtr pfont = pGC->font;
- int widthDst;
- PixelType *pdstBase; /* pointer to longword with top row
- of current glyph */
-
- int h; /* height of glyph and char */
- register int xpos; /* current x */
- int ypos; /* current y */
- int widthGlyph;
-
- int hTmp; /* counter for height */
- register PixelType startmask, endmask;
- int nfirst; /* used if glyphs spans a longword boundary */
- BoxRec bbox; /* for clipping */
- int widthGlyphs;
- register PixelType *dst;
- register PixelType c;
- register int xoff1, xoff2, xoff3, xoff4;
- register glyphPointer char1, char2, char3, char4;
-
-#ifdef USE_LEFTBITS
- register PixelType glyphMask;
- register PixelType tmpSrc;
- register int glyphBytes;
-#endif
-
- if (!(pGC->planemask & 1))
- return;
-
- mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- xpos = x + pDrawable->x;
- ypos = y + pDrawable->y;
-
- widthGlyph = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (widthGlyph * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox))
- {
- case rgnPART:
- /* this is the WRONG thing to do, but it works.
- calling the non-terminal text is easy, but slow, given
- what we know about the font.
-
- the right thing to do is something like:
- for each clip rectangle
- compute at which row the glyph starts to be in it,
- and at which row the glyph ceases to be in it
- compute which is the first glyph inside the left
- edge, and the last one inside the right edge
- draw a fractional first glyph, using only
- the rows we know are in
- draw all the whole glyphs, using the appropriate rows
- draw any pieces of the last glyph, using the right rows
-
- this way, the code would take advantage of knowing that
- all glyphs are the same height and don't overlap.
-
- one day...
- */
- CLIPTETEXT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- pdstBase = mfbScanlineDeltaNoBankSwitch(pdstBase, ypos, widthDst);
- widthGlyphs = widthGlyph * PGSZB;
-
-#ifdef USE_LEFTBITS
- glyphMask = endtab[widthGlyph];
- glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
-#endif
-
- if (nglyph >= PGSZB && widthGlyphs <= PPW)
- {
- while (nglyph >= PGSZB)
- {
- nglyph -= PGSZB;
- xoff1 = xpos & PIM;
- xoff2 = widthGlyph;
- xoff3 = xoff2 + widthGlyph;
- xoff4 = xoff3 + widthGlyph;
- char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- char2 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- char3 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- char4 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
-
- hTmp = h;
- dst = mfbScanlineOffset(pdstBase, (xpos >> PWSH)); /* switch now */
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyphs <= PPW)
- {
- maskpartialbits (xoff1, widthGlyphs, startmask);
-#endif
- while (hTmp--)
- {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-# endif
- FASTPUTBITS(OP(c), xoff1, widthGlyphs, dst);
-#else
- *(dst) = ((*dst) & ~startmask) | (OP(SCRRIGHT(c, xoff1)) & startmask);
-#endif
- mfbScanlineInc(dst, widthDst);
- }
-#ifndef FASTCHARS
- }
- else
- {
- maskPPWbits (xoff1, widthGlyphs, startmask, endmask);
- nfirst = PPW - xoff1;
- while (hTmp--)
- {
- GetBits4
- dst[0] = (dst[0] & ~startmask) |
- (OP(SCRRIGHT(c,xoff1)) & startmask);
- dst[1] = (dst[1] & ~endmask) |
- (OP(SCRLEFT(c,nfirst)) & endmask);
- mfbScanlineInc(dst, widthDst);
- }
- }
-#endif
- xpos += widthGlyphs;
- }
- }
-
- while(nglyph--)
- {
- xoff1 = xpos & PIM;
- char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- hTmp = h;
- dst = mfbScanlineOffset(pdstBase, (xpos >> PWSH));
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyph <= PPW)
- {
- maskpartialbits (xoff1, widthGlyph, startmask);
-#endif
- while (hTmp--)
- {
-#ifdef FASTCHARS
-#ifdef USE_LEFTBITS
- FASTGETBITS (char1,0,widthGlyph,c);
- char1 = (glyphPointer) (((char *) char1) + glyphBytes);
-#else
- c = *char1++;
-#if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyph;
-#endif
-#endif
- FASTPUTBITS (OP(c),xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = ((*dst) & ~startmask) | (OP(SCRRIGHT(c, xoff1)) & startmask);
-#endif
- mfbScanlineInc(dst, widthDst);
- }
-#ifndef FASTCHARS
- }
- else
- {
- maskPPWbits (xoff1, widthGlyph, startmask, endmask);
- nfirst = PPW - xoff1;
- while (hTmp--)
- {
- GetBits1
- dst[0] = (dst[0] & ~startmask) |
- (OP(SCRRIGHT(c,xoff1)) & startmask);
- dst[1] = (dst[1] & ~endmask) |
- (OP(SCRLEFT(c,nfirst)) & endmask);
- mfbScanlineInc(dst, widthDst);
- }
- }
-#endif
- xpos += widthGlyph;
- }
-}
diff --git a/xorg-server/mfb/mfbtewhite.c b/xorg-server/mfb/mfbtewhite.c
deleted file mode 100644
index ff2102dae..000000000
--- a/xorg-server/mfb/mfbtewhite.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#define OP MFB_OP_WHITE
-#define MFBTEGLYPHBLT mfbTEGlyphBltWhite
-#define CLIPTETEXT mfbImageGlyphBltWhite
-#include "./mfbtegblt.c"
diff --git a/xorg-server/mfb/mfbtile.c b/xorg-server/mfb/mfbtile.c
deleted file mode 100644
index 73015f57d..000000000
--- a/xorg-server/mfb/mfbtile.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "windowstr.h"
-#include "regionstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mfb.h"
-#include "maskbits.h"
-
-#include "mergerop.h"
-/*
-
- the boxes are already translated.
-
- NOTE:
- iy = ++iy < tileHeight ? iy : 0
-is equivalent to iy%= tileheight, and saves a division.
-*/
-
-/*
- tile area with a PPW bit wide pixmap
-*/
-void
-MROP_NAME(mfbTileAreaPPW)(pDraw, nbox, pbox, alu, ptile)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
- register PixelType srcpix;
- int nlwidth; /* width in longwords of the drawable */
- int w; /* width of current box */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register int nlw; /* loop version of nlwMiddle */
- register PixelType *p; /* pointer to bits we're writing */
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwExtra; /* to get from right of box to left of next span */
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- psrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--)
- {
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
- iy = pbox->y1 % tileHeight;
- p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth);
-
- if ( ((pbox->x1 & PIM) + w) < PPW)
- {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = nlwidth;
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else
- {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
- nlwExtra = nlwidth - nlwMiddle;
-
- if (startmask && endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK (srcpix,*p,startmask);
- p++;
- while (nlw--)
- {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (startmask && !endmask)
- {
- nlwExtra -= 1;
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--)
- {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else if (!startmask && endmask)
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--)
- {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- mfbScanlineInc(p, nlwExtra);
- }
- }
- else /* no ragged bits at either end */
- {
- while (h--)
- {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--)
- {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- mfbScanlineInc(p, nlwExtra);
- }
- }
- }
- pbox++;
- }
-}
-
-#if (MROP) == 0
-void
-mfbTileAreaPPW (pDraw, nbox, pbox, alu, ptile)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
-{
- void (*f)(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/);
-
- if (alu == GXcopy)
- f = mfbTileAreaPPWCopy;
- else
- f = mfbTileAreaPPWGeneral;
- (*f) (pDraw, nbox, pbox, alu, ptile);
-}
-#endif
diff --git a/xorg-server/mfb/mfbtileC.c b/xorg-server/mfb/mfbtileC.c
deleted file mode 100644
index 0c545fd7d..000000000
--- a/xorg-server/mfb/mfbtileC.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP Mcopy
-#include "./mfbtile.c"
diff --git a/xorg-server/mfb/mfbtileG.c b/xorg-server/mfb/mfbtileG.c
deleted file mode 100644
index 947905d6e..000000000
--- a/xorg-server/mfb/mfbtileG.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define MROP 0
-#include "./mfbtile.c"
diff --git a/xorg-server/mfb/mfbwindow.c b/xorg-server/mfb/mfbwindow.c
deleted file mode 100644
index 37125da45..000000000
--- a/xorg-server/mfb/mfbwindow.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdlib.h>
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "privates.h"
-#include "mfb.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-Bool
-mfbCreateWindow(pWin)
- register WindowPtr pWin;
-{
- return (TRUE);
-}
-
-/* This always returns true, because Xfree can't fail. It might be possible
- * on some devices for Destroy to fail */
-Bool
-mfbDestroyWindow(WindowPtr pWin)
-{
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool mfbMapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* (x, y) is the upper left corner of the window on the screen
- do we really need to pass this? (is it a;ready in pWin->absCorner?)
- we only do the rotation for pixmaps that are 32 bits wide (padded
-or otherwise.)
- mfbChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-
-/*ARGSUSED*/
-Bool
-mfbPositionWindow(pWin, x, y)
- register WindowPtr pWin;
- int x, y;
-{
- /* This is the "wrong" fix to the right problem, but it doesn't really
- * cost very much. When the window is moved, we need to invalidate any
- * RotatedPixmap that exists in any GC currently validated against this
- * window.
- */
- pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-mfbUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- mfbCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-mfbCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionPtr prgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip,
- prgnSrc);
-
- pbox = REGION_RECTS(prgnDst);
- nbox = REGION_NUM_RECTS(prgnDst);
- if(!(pptSrc = (DDXPointPtr )xalloc(nbox * sizeof(DDXPointRec))))
- return;
- ppt = pptSrc;
-
- for (i=nbox; --i >= 0; ppt++, pbox++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- mfbDoBitblt((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot,
- GXcopy, prgnDst, pptSrc);
- xfree(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
diff --git a/xorg-server/mfb/mfbzerarc.c b/xorg-server/mfb/mfbzerarc.c
deleted file mode 100644
index 624e45fee..000000000
--- a/xorg-server/mfb/mfbzerarc.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-
-/* Derived from:
- * "Algorithm for drawing ellipses or hyperbolae with a digital plotter"
- * by M. L. V. Pitteway
- * The Computer Journal, November 1967, Volume 10, Number 3, pp. 282-289
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <limits.h>
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "mfb.h"
-#include "maskbits.h"
-#include "mizerarc.h"
-#include "mi.h"
-
-/*
- * Note: LEFTMOST must be the bit leftmost in the actual screen
- * representation. This depends also on the IMAGE_BYTE_ORDER.
- * LONG2CHARS() takes care of the re-ordering as required. (DHD)
- */
-#if (BITMAP_BIT_ORDER == MSBFirst)
-#define LEFTMOST ((PixelType) LONG2CHARS(((MfbBits)1 << PLST)))
-#else
-#define LEFTMOST ((PixelType) LONG2CHARS(1))
-#endif
-
-#define PixelateWhite(addr,yoff,xoff) \
- *mfbScanlineOffset(addr, (yoff)+((xoff)>>PWSH)) |= \
- SCRRIGHT (LEFTMOST, ((xoff) & PIM))
-#define PixelateBlack(addr,yoff,xoff) \
- *mfbScanlineOffset(addr, (yoff)+((xoff)>>PWSH)) &= \
- ~(SCRRIGHT (LEFTMOST, ((xoff) & PIM)))
-
-#define Pixelate(base,yoff,xoff) \
-{ \
- paddr = mfbScanlineOffset(base, (yoff) + ((xoff)>>PWSH)); \
- pmask = SCRRIGHT(LEFTMOST, (xoff) & PIM); \
- *paddr = (*paddr & ~pmask) | (pixel & pmask); \
-}
-
-#define DoPix(bit,base,yoff,xoff) if (mask & bit) Pixelate(base,yoff,xoff);
-
-static void
-mfbZeroArcSS(
- DrawablePtr pDraw,
- GCPtr pGC,
- xArc *arc)
-{
- miZeroArcRec info;
- Bool do360;
- register int x, y, a, b, d, mask;
- register int k1, k3, dx, dy;
- PixelType *addrl;
- PixelType *yorgl, *yorgol;
- PixelType pixel;
- int nlwidth, yoffset, dyoffset;
- PixelType pmask;
- register PixelType *paddr;
-
- if (((mfbPrivGC *)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey()))->rop ==
- RROP_BLACK)
- pixel = 0;
- else
- pixel = ~0;
-
- mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrl);
- do360 = miZeroArcSetup(arc, &info, TRUE);
- yorgl = addrl + ((info.yorg + pDraw->y) * nlwidth);
- yorgol = addrl + ((info.yorgo + pDraw->y) * nlwidth);
- info.xorg += pDraw->x;
- info.xorgo += pDraw->x;
- MIARCSETUP();
- yoffset = y ? nlwidth : 0;
- dyoffset = 0;
- mask = info.initialMask;
- if (!(arc->width & 1))
- {
- DoPix(2, yorgl, 0, info.xorgo);
- DoPix(8, yorgol, 0, info.xorgo);
- }
- if (!info.end.x || !info.end.y)
- {
- mask = info.end.mask;
- info.end = info.altend;
- }
- if (do360 && (arc->width == arc->height) && !(arc->width & 1))
- {
- int xoffset = nlwidth;
- PixelType *yorghl = mfbScanlineDeltaNoBankSwitch(yorgl, info.h, nlwidth);
- int xorghp = info.xorg + info.h;
- int xorghn = info.xorg - info.h;
-
- if (pixel)
- {
- while (1)
- {
- PixelateWhite(yorgl, yoffset, info.xorg + x);
- PixelateWhite(yorgl, yoffset, info.xorg - x);
- PixelateWhite(yorgol, -yoffset, info.xorg - x);
- PixelateWhite(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- PixelateWhite(yorghl, -xoffset, xorghp - y);
- PixelateWhite(yorghl, -xoffset, xorghn + y);
- PixelateWhite(yorghl, xoffset, xorghn + y);
- PixelateWhite(yorghl, xoffset, xorghp - y);
- xoffset += nlwidth;
- MIARCCIRCLESTEP(yoffset += nlwidth;);
- }
- }
- else
- {
- while (1)
- {
- PixelateBlack(yorgl, yoffset, info.xorg + x);
- PixelateBlack(yorgl, yoffset, info.xorg - x);
- PixelateBlack(yorgol, -yoffset, info.xorg - x);
- PixelateBlack(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- PixelateBlack(yorghl, -xoffset, xorghp - y);
- PixelateBlack(yorghl, -xoffset, xorghn + y);
- PixelateBlack(yorghl, xoffset, xorghn + y);
- PixelateBlack(yorghl, xoffset, xorghp - y);
- xoffset += nlwidth;
- MIARCCIRCLESTEP(yoffset += nlwidth;);
- }
- }
- x = info.w;
- yoffset = info.h * nlwidth;
- }
- else if (do360)
- {
- while (y < info.h || x < info.w)
- {
- MIARCOCTANTSHIFT(dyoffset = nlwidth;);
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorgo - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;);
- }
- }
- else
- {
- while (y < info.h || x < info.w)
- {
- MIARCOCTANTSHIFT(dyoffset = nlwidth;);
- if ((x == info.start.x) || (y == info.start.y))
- {
- mask = info.start.mask;
- info.start = info.altstart;
- }
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- if ((x == info.end.x) || (y == info.end.y))
- {
- mask = info.end.mask;
- info.end = info.altend;
- }
- MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;);
- }
- }
- if ((x == info.start.x) || (y == info.start.y))
- mask = info.start.mask;
- DoPix(1, yorgl, yoffset, info.xorg + x);
- DoPix(4, yorgol, -yoffset, info.xorgo - x);
- if (arc->height & 1)
- {
- DoPix(2, yorgl, yoffset, info.xorgo - x);
- DoPix(8, yorgol, -yoffset, info.xorg + x);
- }
-}
-
-void
-mfbZeroPolyArcSS(pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- BoxRec box;
- int x2, y2;
- RegionPtr cclip;
-
- if (!(pGC->planemask & 1))
- return;
- cclip = pGC->pCompositeClip;
- for (arc = parcs, i = narcs; --i >= 0; arc++)
- {
- if (miCanZeroArc(arc))
- {
- box.x1 = arc->x + pDraw->x;
- box.y1 = arc->y + pDraw->y;
- /*
- * Because box.x2 and box.y2 get truncated to 16 bits, and the
- * RECT_IN_REGION test treats the resulting number as a signed
- * integer, the RECT_IN_REGION test alone can go the wrong way.
- * This can result in a server crash because the rendering
- * routines in this file deal directly with cpu addresses
- * of pixels to be stored, and do not clip or otherwise check
- * that all such addresses are within their respective pixmaps.
- * So we only allow the RECT_IN_REGION test to be used for
- * values that can be expressed correctly in a signed short.
- */
- x2 = box.x1 + (int)arc->width + 1;
- box.x2 = x2;
- y2 = box.y1 + (int)arc->height + 1;
- box.y2 = y2;
- if ( (x2 <= SHRT_MAX) && (y2 <= SHRT_MAX) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- mfbZeroArcSS(pDraw, pGC, arc);
- else
- miZeroPolyArc(pDraw, pGC, 1, arc);
- }
- else
- miPolyArc(pDraw, pGC, 1, arc);
- }
-}