summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Makefile.am3
-rw-r--r--configure.ac2
-rw-r--r--ilbm/Makefile.am34
-rw-r--r--ilbm/README17
-rw-r--r--ilbm/ilbm.h1051
-rw-r--r--ilbm/ilbmbitblt.c483
-rw-r--r--ilbm/ilbmblt.c573
-rw-r--r--ilbm/ilbmbres.c328
-rw-r--r--ilbm/ilbmbresd.c219
-rw-r--r--ilbm/ilbmbstore.c159
-rw-r--r--ilbm/ilbmclip.c246
-rw-r--r--ilbm/ilbmcmap.c128
-rw-r--r--ilbm/ilbmfillarc.c377
-rw-r--r--ilbm/ilbmfillrct.c299
-rw-r--r--ilbm/ilbmfillsp.c1149
-rw-r--r--ilbm/ilbmfont.c82
-rw-r--r--ilbm/ilbmgc.c715
-rw-r--r--ilbm/ilbmgetsp.c170
-rw-r--r--ilbm/ilbmhrzvert.c213
-rw-r--r--ilbm/ilbmimage.c441
-rw-r--r--ilbm/ilbmimggblt.c474
-rw-r--r--ilbm/ilbmline.c705
-rw-r--r--ilbm/ilbmmisc.c99
-rw-r--r--ilbm/ilbmpixmap.c295
-rw-r--r--ilbm/ilbmply1rct.c303
-rw-r--r--ilbm/ilbmplygblt.c469
-rw-r--r--ilbm/ilbmpntarea.c656
-rw-r--r--ilbm/ilbmpntwin.c131
-rw-r--r--ilbm/ilbmpolypnt.c152
-rw-r--r--ilbm/ilbmpushpxl.c263
-rw-r--r--ilbm/ilbmscrinit.c251
-rw-r--r--ilbm/ilbmsetsp.c269
-rw-r--r--ilbm/ilbmtegblt.c599
-rw-r--r--ilbm/ilbmtile.c857
-rw-r--r--ilbm/ilbmwindow.c323
-rw-r--r--ilbm/ilbmzerarc.c214
-rw-r--r--iplan2p4/Makefile.am36
-rw-r--r--iplan2p4/ipl.h1254
-rw-r--r--iplan2p4/iplallpriv.c93
-rw-r--r--iplan2p4/iplbitblt.c388
-rw-r--r--iplan2p4/iplblt.c431
-rw-r--r--iplan2p4/iplbres.c186
-rw-r--r--iplan2p4/iplbresd.c212
-rw-r--r--iplan2p4/iplbstore.c159
-rw-r--r--iplan2p4/iplcmap.c126
-rw-r--r--iplan2p4/iplfillarc.c271
-rw-r--r--iplan2p4/iplfillrct.c281
-rw-r--r--iplan2p4/iplfillsp.c384
-rw-r--r--iplan2p4/iplgc.c786
-rw-r--r--iplan2p4/iplgetsp.c166
-rw-r--r--iplan2p4/iplhrzvert.c128
-rw-r--r--iplan2p4/iplimage.c87
-rw-r--r--iplan2p4/iplline.c758
-rw-r--r--iplan2p4/iplmap.h176
-rw-r--r--iplan2p4/iplmergerop.h146
-rw-r--r--iplan2p4/iplmskbits.c108
-rw-r--r--iplan2p4/iplmskbits.h500
-rw-r--r--iplan2p4/iplpack.c316
-rw-r--r--iplan2p4/iplpack.h10
-rw-r--r--iplan2p4/iplpixmap.c386
-rw-r--r--iplan2p4/iplply1rct.c310
-rw-r--r--iplan2p4/iplpntwin.c341
-rw-r--r--iplan2p4/iplpolypnt.c123
-rw-r--r--iplan2p4/iplrrop.c219
-rw-r--r--iplan2p4/iplrrop.h80
-rw-r--r--iplan2p4/iplscrinit.c233
-rw-r--r--iplan2p4/iplsetsp.c304
-rw-r--r--iplan2p4/iplsolid.c221
-rw-r--r--iplan2p4/ipltegblt.c221
-rw-r--r--iplan2p4/ipltile32.c272
-rw-r--r--iplan2p4/ipltileodd.c869
-rw-r--r--iplan2p4/iplwindow.c343
73 files changed, 6 insertions, 23673 deletions
diff --git a/ChangeLog b/ChangeLog
index a9de0717c..2f9460c6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,6 +20,12 @@
Remove xf8_32wid, it's dead code with no maintainer interest. Also
remove cfb24, since xf8_32wid was the only user.
+ * configure.ac:
+ * Makefile.am:
+ * ilbm/*:
+ * iplan2p4/*:
+ Speed up checkout and autogen by removing disused iplan2p4 and ilbm.
+
2006-01-19 Daniel Stone <daniel@freedesktop.org>
* GL/symlink-mesa.sh:
diff --git a/Makefile.am b/Makefile.am
index b8bb5d538..d8addc7d4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -91,10 +91,7 @@ DIST_SUBDIRS = \
afb \
cfb \
cfb16 \
- cfb24 \
cfb32 \
- ilbm \
- iplan2p4 \
record \
xfixes \
damageext \
diff --git a/configure.ac b/configure.ac
index 9473f92b4..c92336182 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1521,8 +1521,6 @@ mfb/Makefile
cfb/Makefile
cfb16/Makefile
cfb32/Makefile
-ilbm/Makefile
-iplan2p4/Makefile
mi/Makefile
miext/Makefile
miext/damage/Makefile
diff --git a/ilbm/Makefile.am b/ilbm/Makefile.am
deleted file mode 100644
index be1b3ace5..000000000
--- a/ilbm/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-EXTRA_DIST = \
- ilbm.h \
- ilbmbitblt.c \
- ilbmblt.c \
- ilbmbres.c \
- ilbmbresd.c \
- ilbmbstore.c \
- ilbmclip.c \
- ilbmcmap.c \
- ilbmfillarc.c \
- ilbmfillrct.c \
- ilbmfillsp.c \
- ilbmfont.c \
- ilbmgc.c \
- ilbmgetsp.c \
- ilbmhrzvert.c \
- ilbmimage.c \
- ilbmimggblt.c \
- ilbmline.c \
- ilbmmisc.c \
- ilbmpixmap.c \
- ilbmply1rct.c \
- ilbmplygblt.c \
- ilbmpntarea.c \
- ilbmpntwin.c \
- ilbmpolypnt.c \
- ilbmpushpxl.c \
- ilbmscrinit.c \
- ilbmsetsp.c \
- ilbmtegblt.c \
- ilbmtile.c \
- ilbmwindow.c \
- ilbmzerarc.c \
- README
diff --git a/ilbm/README b/ilbm/README
deleted file mode 100644
index 5b43f670c..000000000
--- a/ilbm/README
+++ /dev/null
@@ -1,17 +0,0 @@
-
- ilbm -- Interleaved bitplanes for Amiga
- © Copyright 1995 by Geert Uytterhoeven and Others (read the sources)
-
-All stuff in this directory is based on Xdaniver, which is based on mfb (read
-../afb/Xdaniver.doc).
-
-I made changes to support the interleaved mode of the Linux/68k Amiga Color
-Frame Buffer Device, which uses interleaved bitplanes instead of normal
-bitplanes.
-
-Note: there are still some annoying bugs left in ilbmimage.
-
---
-Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be
-Wavelets, Linux/m68k on Amiga http://www.cs.kuleuven.ac.be/~geert/
-Department of Computer Science -- Katholieke Universiteit Leuven -- Belgium
diff --git a/ilbm/ilbm.h b/ilbm/ilbm.h
deleted file mode 100644
index eba35c200..000000000
--- a/ilbm/ilbm.h
+++ /dev/null
@@ -1,1051 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbm.h,v 3.2 1998/04/05 16:42:23 robin Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbm.h,v 5.31 94/04/17 20:28:15 dpw Exp $ */
-/* Monochrome Frame Buffer definitions
- written by drewry, september 1986
-*/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "miscstruct.h"
-#include "mibstore.h"
-
-extern int ilbmInverseAlu[];
-extern int ilbmScreenPrivateIndex;
-/* warning: PixelType definition duplicated in maskbits.h */
-#ifndef PixelType
-#define PixelType unsigned long
-#endif /* PixelType */
-
-#define AFB_MAX_DEPTH 8
-
-/* ilbmbitblt.c */
-
-extern void ilbmDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern RegionPtr ilbmBitBlt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (*doBitBlt)(),
- unsigned long /*planemask*/
-);
-
-extern RegionPtr ilbmCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern RegionPtr ilbmCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*plane*/
-);
-
-extern void ilbmCopy1ToN(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltC.c */
-
-extern void ilbmDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltCI.c */
-
-extern void ilbmDoBitbltCopyInverted(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltG.c */
-
-extern void ilbmDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltO.c */
-
-extern void ilbmDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbltX.c */
-
-extern void ilbmDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* ilbmbres.c */
-
-extern void ilbmBresS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-/* ilbmbresd.c */
-
-extern void ilbmBresD(
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/,
- unsigned char * /*rrops*/,
- unsigned char * /*bgrrops*/
-);
-/* ilbmbstore.c */
-
-extern void ilbmSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void ilbmRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* ilbmclip.c */
-
-extern RegionPtr ilbmPixmapToRegion(
- PixmapPtr /*pPix*/
-);
-
-/* ilbmcmap.c */
-
-extern Bool ilbmInitializeColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void ilbmResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool ilbmSetVisualTypes(
- int /*depth*/,
- int /*visuals*/,
- int /*bitsPerRGB*/
-);
-
-/* ilbmfillarc.c */
-
-extern void ilbmPolyFillArcSolid(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* ilbmfillrct.c */
-
-extern void ilbmPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-
-/* ilbmply1rct.c */
-extern void ilbmFillPolygonSolid(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*shape*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-
-/* ilbmfillsp.c */
-
-extern void ilbmSolidFS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmOpaqueStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ilbmUnnaturalOpaqueStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-/* ilbmfont.c */
-
-extern Bool ilbmRealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-
-extern Bool ilbmUnrealizeFont(
- ScreenPtr /*pscr*/,
- FontPtr /*pFont*/
-);
-/* ilbmgc.c */
-
-extern Bool ilbmCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void ilbmValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-extern void ilbmDestroyGC(
- GCPtr /*pGC*/
-);
-
-extern void ilbmReduceRop(
- int /*alu*/,
- Pixel /*src*/,
- unsigned long /*planemask*/,
- int /*depth*/,
- unsigned char * /*rrops*/
-);
-
-extern void ilbmReduceOpaqueStipple (
- Pixel /*fg*/,
- Pixel /*bg*/,
- unsigned long /*planemask*/,
- int /*depth*/,
- unsigned char * /*rrops*/
-);
-
-extern void ilbmComputeCompositeClip(
- GCPtr /*pGC*/,
- DrawablePtr /*pDrawable*/
-);
-
-/* ilbmgetsp.c */
-
-extern void ilbmGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* ilbmhrzvert.c */
-
-extern int ilbmHorzS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-
-extern int ilbmVertS(
- PixelType * /*addrl*/,
- int /*nlwidth*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/,
- unsigned char * /*rrops*/
-);
-/* ilbmigbblak.c */
-
-extern void ilbmImageGlyphBlt (
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ilbmigbwht.c */
-
-/* ilbmimage.c */
-
-extern void ilbmPutImage(
- DrawablePtr /*dst*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void ilbmGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* ilbmline.c */
-
-extern void ilbmLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void ilbmLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-/* ilbmmisc.c */
-
-extern void ilbmQueryBestSize(
- int /*class*/,
- unsigned short * /*pwidth*/,
- unsigned short * /*pheight*/,
- ScreenPtr /*pScreen*/
-);
-/* ilbmpntarea.c */
-
-extern void ilbmSolidFillArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- unsigned char * /*rrops*/
-);
-
-extern void ilbmStippleAreaPPW(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- PixmapPtr /*pstipple*/,
- unsigned char * /*rrops*/
-);
-extern void ilbmStippleArea(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- PixmapPtr /*pstipple*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char * /*rrops*/
-);
-/* ilbmplygblt.c */
-
-extern void ilbmPolyGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-
-/* ilbmpixmap.c */
-
-extern PixmapPtr ilbmCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool ilbmDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr ilbmCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void ilbmPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void ilbmXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void ilbmYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void ilbmCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-extern void ilbmPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-/* ilbmpolypnt.c */
-
-extern void ilbmPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* ilbmpushpxl.c */
-
-extern void ilbmPushPixels(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitMap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-/* ilbmscrclse.c */
-
-extern Bool ilbmCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-/* ilbmscrinit.c */
-
-extern Bool ilbmAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*pWinIndex*/,
- int * /*pGCIndex*/
-);
-
-extern Bool ilbmScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr ilbmGetWindowPixmap(
- WindowPtr /*pWin*/
-);
-
-extern void ilbmSetWindowPixmap(
- WindowPtr /*pWin*/,
- PixmapPtr /*pPix*/
-);
-
-/* ilbmseg.c */
-
-extern void ilbmSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void ilbmSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* ilbmsetsp.c */
-
-extern int ilbmSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- PixelType * /*psrc*/,
- int /*alu*/,
- PixelType * /*pdstBase*/,
- int /*widthDst*/,
- int /*sizeDst*/,
- int /*depthDst*/,
- int /*sizeSrc*/
-);
-
-extern void ilbmSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* ilbmtegblt.c */
-
-extern void ilbmTEGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ilbmtileC.c */
-
-extern void ilbmTileAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmTileAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned long /*planemask*/
-);
-
-extern void ilbmTileAreaCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmTileAreaGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned long /*planemask*/
-);
-
-extern void ilbmOpaqueStippleAreaPPWCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmOpaqueStippleAreaPPWGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-
-extern void ilbmOpaqueStippleAreaCopy(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-/* ilbmtileG.c */
-
-extern void ilbmOpaqueStippleAreaGeneral(
- DrawablePtr /*pDraw*/,
- int /*nbox*/,
- BoxPtr /*pbox*/,
- int /*alu*/,
- PixmapPtr /*ptile*/,
- int /*xOff*/,
- int /*yOff*/,
- unsigned char */*rropsOS*/,
- unsigned long /*planemask*/
-);
-
-/* ilbmwindow.c */
-
-extern Bool ilbmCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool ilbmDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool ilbmMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool ilbmPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool ilbmUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void ilbmCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool ilbmChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* ilbmzerarc.c */
-
-extern void ilbmZeroPolyArcSS(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-/*
- private field 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 struct {
- unsigned char rrops[AFB_MAX_DEPTH]; /* reduction of rasterop to 1 of 3 */
- unsigned char rropOS[AFB_MAX_DEPTH]; /* rop for opaque stipple */
-} ilbmPrivGC;
-typedef ilbmPrivGC *ilbmPrivGCPtr;
-
-extern int ilbmGCPrivateIndex; /* index into GC private array */
-extern int ilbmWindowPrivateIndex; /* index into Window private array */
-#ifdef PIXMAP_PER_WINDOW
-extern int frameWindowPrivateIndex; /* index into Window private array */
-#endif
-
-#define ilbmGetGCPrivate(pGC) \
- ((ilbmPrivGC *)((pGC)->devPrivates[ilbmGCPrivateIndex].ptr))
-
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border tile is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
-} ilbmPrivWin;
-
-/* Common macros for extracting drawing information */
-
-#define ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, width, aux, dep, pointer) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type == DRAWABLE_WINDOW) \
- _pPix = (PixmapPtr)(pDrawable)->pScreen->devPrivates[ilbmScreenPrivateIndex].ptr; \
- else \
- _pPix = (PixmapPtr)(pDrawable); \
- (pointer) = (PixelType *)_pPix->devPrivate.ptr; \
- (width) = ((int)_pPix->devKind)/sizeof(PixelType); \
- (dep) = _pPix->drawable.depth; \
- (aux) = (width)*(dep); \
-}
-
-/* ilbm 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.
- *
- * ilbmScanlineFoo - calculate address and do bank switching
- * ilbmScanlineFooNoBankSwitch - calculate address, don't bank switch
- * ilbmScanlineFooSrc - calculate address, switch source bank
- * ilbmScanlineFooDst - calculate address, switch destination bank
- */
-
-/* The NoBankSwitch versions are the same for banked and unbanked cases */
-
-#define ilbmScanlineIncNoBankSwitch(_ptr, _off) _ptr += (_off)
-#define ilbmScanlineOffsetNoBankSwitch(_ptr, _off) ((_ptr)+(_off))
-#define ilbmScanlineDeltaNoBankSwitch(_ptr, _y, _w) \
- ilbmScanlineOffsetNoBankSwitch(_ptr, (_y)*(_w))
-#define ilbmScanlineNoBankSwitch(_ptr, _x, _y, _w) \
- ilbmScanlineOffsetNoBankSwitch(_ptr, (_y)*(_w)+((_x)>>MFB_PWSH))
-
-#ifdef MFB_LINE_BANK
-
-#include "ilbmlinebank.h" /* get macro definitions from this file */
-
-#else /* !MFB_LINE_BANK - unbanked case */
-
-#define ilbmScanlineInc(_ptr, _off) ilbmScanlineIncNoBankSwitch(_ptr, _off)
-#define ilbmScanlineIncSrc(_ptr, _off) ilbmScanlineInc(_ptr, _off)
-#define ilbmScanlineIncDst(_ptr, _off) ilbmScanlineInc(_ptr, _off)
-
-#define ilbmScanlineOffset(_ptr, _off) ilbmScanlineOffsetNoBankSwitch(_ptr, _off)
-#define ilbmScanlineOffsetSrc(_ptr, _off) ilbmScanlineOffset(_ptr, _off)
-#define ilbmScanlineOffsetDst(_ptr, _off) ilbmScanlineOffset(_ptr, _off)
-
-#define ilbmScanlineSrc(_ptr, _x, _y, _w) ilbmScanline(_ptr, _x, _y, _w)
-#define ilbmScanlineDst(_ptr, _x, _y, _w) ilbmScanline(_ptr, _x, _y, _w)
-
-#define ilbmScanlineDeltaSrc(_ptr, _y, _w) ilbmScanlineDelta(_ptr, _y, _w)
-#define ilbmScanlineDeltaDst(_ptr, _y, _w) ilbmScanlineDelta(_ptr, _y, _w)
-
-#endif /* MFB_LINE_BANK */
-
-#define ilbmScanlineDelta(_ptr, _y, _w) \
- ilbmScanlineOffset(_ptr, (_y)*(_w))
-
-#define ilbmScanline(_ptr, _x, _y, _w) \
- ilbmScanlineOffset(_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 _ilbmpos{
- 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 */
-} ilbmTEXTPOS;
-
-/* reduced raster ops for ilbm */
-#define RROP_BLACK GXclear
-#define RROP_WHITE GXset
-#define RROP_NOP GXnoop
-#define RROP_INVERT GXinvert
-#define RROP_COPY GXcopy
-
-/* macros for ilbmbitblt.c, ilbmfillsp.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))
-#define fnSET(src, dst) (~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.
- */
-#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; \
- 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 ilbm/Imakefile. This
- * fixes XBUG 6319.
- *
- * This seems like a good place to point out that ilbm's use of the
- * words black and white is an unfortunate misnomer. In ilbm 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 ~
diff --git a/ilbm/ilbmbitblt.c b/ilbm/ilbmbitblt.c
deleted file mode 100644
index 11a0e07fb..000000000
--- a/ilbm/ilbmbitblt.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmbitblt.c,v 3.2tsi Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmbitblt.c,v 5.25 94/04/17 20:28:16 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-
-#include "miscstruct.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "mi.h"
-
-#include "ilbm.h"
-#include "maskbits.h"
-
-
-static unsigned char ilbmRropsOS[AFB_MAX_DEPTH];
-
-/* 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
-ilbmDoBitblt(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- switch (alu) {
- case GXcopy:
- ilbmDoBitbltCopy(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXxor:
- ilbmDoBitbltXor(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXcopyInverted:
- ilbmDoBitbltCopyInverted(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- case GXor:
- ilbmDoBitbltOr(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- default:
- ilbmDoBitbltGeneral(pSrc, pDst, alu, prgnDst, pptSrc, planemask);
- break;
- }
-}
-
-RegionPtr
-ilbmCopyArea(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- void (*doBitBlt)();
-
- switch (pGC->alu) {
- case GXcopy:
- doBitBlt = ilbmDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = ilbmDoBitbltXor;
- break;
- case GXcopyInverted:
- doBitBlt = ilbmDoBitbltCopyInverted;
- break;
- case GXor:
- doBitBlt = ilbmDoBitbltOr;
- break;
- default:
- doBitBlt = ilbmDoBitbltGeneral;
- break;
- }
-
- return(ilbmBitBlt(pSrcDrawable, pDstDrawable, pGC, srcx, srcy,
- width, height, dstx, dsty, doBitBlt, pGC->planemask));
-}
-
-RegionPtr
-ilbmBitBlt(pSrcDrawable, pDstDrawable, pGC, srcx, srcy, width, height,
- dstx, dsty, doBitBlt, planemask)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- register GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- void (*doBitBlt)();
- unsigned long planemask;
-{
- RegionPtr prgnSrcClip; /* 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)();
-
- 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);
-
- 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)ALLOCATE_LOCAL(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;
- }
-
- (*doBitBlt)(pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc,
- planemask);
-
- DEALLOCATE_LOCAL(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;
-}
-
-RegionPtr
-ilbmCopyPlane(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 = NULL;
- unsigned long old_planemask;
- PixmapPtr pPixmap = NULL;
-
- if (pDstDrawable->depth == 1) {
- old_planemask = pGC->planemask;
- pGC->planemask = plane;
- 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)) {
- unsigned char rop;
-
- ilbmReduceRop(pGC->alu, pGC->fgPixel, 1, 1, &rop);
- alu = pGC->alu;
- pGC->alu = rop;
- 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 = ilbmInverseAlu[alu];
- prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, pGC,
- srcx, srcy, width, height, dstx,
- dsty);
- pGC->alu = alu;
- }
- pGC->planemask = old_planemask;
- } else {
- int free_pixmap = FALSE;
- PixmapPtr pBitmap = (PixmapPtr)pSrcDrawable;
- ScreenPtr pScreen = pSrcDrawable->pScreen;
- GCPtr pGC1;
-
- if (pSrcDrawable == pDstDrawable ||
- pSrcDrawable->type == DRAWABLE_WINDOW || pSrcDrawable->depth != 1) {
- /* Copy a plane from source drawable to a tmp 1-bit deep pixmap */
- /* XXX: Range check width and height */
- pBitmap = (*pScreen->CreatePixmap)(pScreen, width, height, 1);
-
- if (!pBitmap)
- return(NULL);
- pGC1 = GetScratchGC(1, pScreen);
- if (!pGC1) {
- (*pScreen->DestroyPixmap)(pBitmap);
- return(NULL);
- }
- ValidateGC((DrawablePtr)pBitmap, pGC1);
- (void)ilbmBitBlt(pSrcDrawable, (DrawablePtr)pBitmap, pGC1, srcx, srcy,
- width, height, 0, 0, ilbmDoBitbltCopy, plane);
- free_pixmap = TRUE;
- }
-#if 0
- else {
- /* XXX: could cope with N-deep pixmap source case without using tmp
- * src bitmap by setting up a scratch pixmap header and fiddle
- * around with the pbits pointer.
- */
- }
-#endif
- ilbmReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, ilbmRropsOS);
- (void)ilbmBitBlt((DrawablePtr)pBitmap, pDstDrawable, pGC, 0, 0, width,
- height, dstx, dsty, ilbmCopy1ToN, pGC->planemask);
- if (free_pixmap) {
- (*pScreen->DestroyPixmap)(pBitmap);
- FreeScratchGC(pGC1);
- }
-
- if (pGC->fExpose)
- prgnExposed = miHandleExposures(pSrcDrawable, pDstDrawable, pGC, srcx,
- srcy, width, height, dstx, dsty,
- plane);
- }
- return prgnExposed;
-}
-
-void
-ilbmCopy1ToN(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- int numRects = REGION_NUM_RECTS(prgnDst);
- BoxPtr pbox = REGION_RECTS(prgnDst);
- int r;
-
- for (r = 0; r < numRects; r++, pbox++, pptSrc++) {
- int dx = pptSrc->x;
- int dy = pptSrc->y;
-
- if (alu == GXcopy)
- ilbmOpaqueStippleAreaCopy(pDst, 1, pbox, alu, (PixmapPtr)pSrc, dx, dy,
- ilbmRropsOS, planemask);
- else
- ilbmOpaqueStippleAreaGeneral(pDst, 1, pbox, alu, (PixmapPtr)pSrc, dx,
- dy, ilbmRropsOS, planemask);
- }
-}
diff --git a/ilbm/ilbmblt.c b/ilbm/ilbmblt.c
deleted file mode 100644
index 9b11567ca..000000000
--- a/ilbm/ilbmblt.c
+++ /dev/null
@@ -1,573 +0,0 @@
-/* $XFree86$ */
-/*
- * ilbm copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: ilbmblt.c,v 1.11 94/04/17 20:28:16 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.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(ilbmDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- PixelType *psrcBase, *pdstBase; /* start of src and dst bitmaps */
- int widthSrc, widthDst; /* add to get to same position in next line */
- int heightSrc, heightDst;
- int auxSrc, auxDst;
-
- 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 */
-
- /* place to store full source word */
- int nstart; /* number of ragged bits at start of dst */
- int nend; /* number of ragged bits at end of dst */
- int srcStartOver; /* pulling nstart bits from src
- overflows into the next word? */
- int careful;
- int tmpSrc;
- int depthSrc;
- int depthDst;
-
- MROP_INITIALIZE(alu,0);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pSrc, widthSrc, auxSrc, depthSrc,
- psrcBase);
- ilbmGetPixelWidthAuxDepthAndPointer(pDst, widthDst, auxDst, depthDst,
- pdstBase);
-
- /* Special case where depth of dest pixmap is 1 but source pixmap isn't
- * Used for GetImage to copy a plane from a source pixmap to a particular
- * dest pixmap plane.
- * Note: planemask should have only one bit set or several planes from
- * the source will be copied to the same dest plane.
- */
- if (depthDst == 1 && depthDst != depthSrc)
- widthDst = 0;
-
- /* 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;
- auxSrc = -auxSrc;
- auxDst = -auxDst;
-
- if (nbox > 1) {
- /* keep ordering in each band, reverse order of bands */
- pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec)*nbox);
- if (!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec)*nbox);
- if (!pptNew1) {
- DEALLOCATE_LOCAL(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)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if (!pboxNew2 || !pptNew2) {
- if (pptNew2)
- DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2)
- DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1) {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(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--) {
- int d;
- for (d = 0; d < depthSrc; d++) {
- PixelType *psrcB;
- PixelType *pdstB;
-
- if (!(planemask & (1 << d)))
- continue;
-
- psrcB = psrcBase + widthSrc * d; /* @@@ NEXT PLANE @@@ */
- pdstB = pdstBase + widthDst * d; /* @@@ NEXT PLANE @@@ */
-
- w = pbox->x2 - pbox->x1;
- h = pbox->y2 - pbox->y1;
-
- if (ydir == -1) { /* start at last scanline of rectangle */
- psrcLine = ilbmScanlineDeltaSrc(psrcB, -(pptSrc->y+h-1), auxSrc);
- pdstLine = ilbmScanlineDeltaDst(pdstB, -(pbox->y2-1), auxDst);
- } else { /* start at first scanline */
- psrcLine = ilbmScanlineDeltaSrc(psrcB, pptSrc->y, auxSrc);
- pdstLine = ilbmScanlineDeltaDst(pdstB, pbox->y1, auxDst);
- }
- 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);
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#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);
- 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);
- }
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#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);
- }
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#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);
- 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);
- }
- ilbmScanlineIncDst(pdstLine, auxDst);
- ilbmScanlineIncSrc(psrcLine, auxSrc);
- }
- }
-#endif
- }
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2) {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1) {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/ilbm/ilbmbres.c b/ilbm/ilbmbres.c
deleted file mode 100644
index 49058d446..000000000
--- a/ilbm/ilbmbres.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmbres.c,v 1.22 94/04/17 20:28:17 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ilbm.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
-ilbmBresS(addrlbase, nlwidth, auxDst, depthDst, signdx, signdy, axis, x1, y1,
- e, e1, e2, len, rrops)
-PixelType *addrlbase; /* pointer to base of bitmap */
-int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-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 */
-unsigned char *rrops;
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl; /* bitmask long 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;
- int saveE;
- int saveLen;
- int d;
-
- /* point to longword containing first point */
- yinc = signdy * auxDst;
- e = e-e1; /* to make looping easier */
-
- if (!len)
- return;
-
- saveLen = len;
- saveE = e;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlbase, x1, y1, auxDst);
- addrlbase += nlwidth; /* @@@ NEXT PLANE @@@ */
- len = saveLen;
- e = saveE;
- bit = mask[x1 & PIM];
-
- switch (rrops[d]) {
- case 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;
- ilbmScanlineInc(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;
- ilbmScanlineInc(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;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- } else {
- while (len--) {
- *addrl &= ~bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- break;
-
- case 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;
- ilbmScanlineInc(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;
- ilbmScanlineInc(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;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- } else {
- while (len--) {
- *addrl |= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit;addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- break;
-
- case RROP_INVERT:
- if (axis == X_AXIS) {
- if (signdx > 0) {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- ilbmScanlineInc(addrl, yinc);
- e += e3;
- }
- bit = SCRRIGHT(bit,1);
- if (!bit) { bit = leftbit;addrl ++; }
- }
- } else {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- ilbmScanlineInc(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;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- } else {
- while (len--) {
- *addrl ^= bit;
- e += e1;
- if (e >= 0) {
- bit = SCRLEFT(bit,1);
- if (!bit) { bit = rightbit; addrl --; }
- e += e3;
- }
- ilbmScanlineInc(addrl, yinc);
- }
- }
- } /* else Y_AXIS */
- } /* switch */
- } /* for (d = ... ) */
-}
diff --git a/ilbm/ilbmbresd.c b/ilbm/ilbmbresd.c
deleted file mode 100644
index 78eb392a6..000000000
--- a/ilbm/ilbmbresd.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmbresd.c,v 1.10 94/04/17 20:28:18 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ilbm.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
-ilbmBresD(pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrlbase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, len, rrops, bgrrops)
-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 auxDst;
-int depthDst;
-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 */
-unsigned char *rrops;
-unsigned char *bgrrops;
-{
- register int yinc; /* increment to next scanline, in bytes */
- register PixelType *addrl;
- register int e3 = e2-e1;
- register unsigned long 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;
- int fgrop;
- int bgrop;
- int saveE;
- int saveLen;
- int d;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- dashRemaining = pDash[dashIndex] - dashOffset;
- /* point to longword containing first point */
-
- yinc = signdy * auxDst;
- e = e-e1; /* to make looping easier */
-
- saveE = e;
- saveLen = len;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlbase, x1, y1, auxDst);
- addrlbase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- fgrop = rrops[d];
- bgrop = bgrrops[d];
-
- e = saveE;
- len = saveLen;
- bit = mask[x1 & PIM];
-
- rop = fgrop;
- if (!isDoubleDash)
- bgrop = -1;
- if (dashIndex & 1)
- rop = bgrop;
-
- 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) {
- ilbmScanlineInc(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) {
- ilbmScanlineInc(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;
- }
- ilbmScanlineInc(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;
- }
- ilbmScanlineInc(addrl, yinc);
- StepDash
- }
- }
- } /* else Y_AXIS */
- } /* for (d = ...) */
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/ilbm/ilbmbstore.c b/ilbm/ilbmbstore.c
deleted file mode 100644
index 56811792f..000000000
--- a/ilbm/ilbmbstore.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ilbmbstore.c,v 5.7 94/04/17 20:28:18 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/*
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-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 X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-*/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "ilbm.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * ilbmSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * ilbmDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-ilbmSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (numRects--) {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
- ilbmDoBitblt((DrawablePtr)pPixmap->drawable.pScreen->devPrivates[ilbmScreenPrivateIndex].ptr,
- (DrawablePtr)pPixmap,
- GXcopy,
- prgnSave,
- pPtsInit, wBackingBitPlanes (pWin));
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * ilbmRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * ilbmDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-ilbmRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int numRects;
-
- numRects = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (numRects--) {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
- ilbmDoBitblt((DrawablePtr)pPixmap,
- (DrawablePtr)pPixmap->drawable.pScreen->devPrivates[ilbmScreenPrivateIndex].ptr,
- GXcopy,
- prgnRestore,
- pPtsInit, wBackingBitPlanes (pWin));
-
- DEALLOCATE_LOCAL(pPtsInit);
-}
diff --git a/ilbm/ilbmclip.c b/ilbm/ilbmclip.c
deleted file mode 100644
index 704b5a9cd..000000000
--- a/ilbm/ilbmclip.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmclip.c,v 5.6 94/04/17 20:28:19 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "miscstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "regionstr.h"
-#include "gc.h"
-#include "maskbits.h"
-#include "mi.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
-ilbmPixmapToRegion(pPix)
- PixmapPtr pPix;
-{
- register RegionPtr pReg;
- register PixelType *pw, w;
- register int ib;
- int width, h, base, rx1, 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);
-}
diff --git a/ilbm/ilbmcmap.c b/ilbm/ilbmcmap.c
deleted file mode 100644
index e485fb6fe..000000000
--- a/ilbm/ilbmcmap.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmcmap.c,v 3.0 1996/08/18 01:53:46 dawes Exp $ */
-/* $XConsortium: ilbmcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- 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 no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-
-int
-ilbmListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-ilbmInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-ilbmUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-void
-ilbmResolveColor(pred, pgreen, pblue, pVisual)
- unsigned short *pred, *pgreen, *pblue;
- register VisualPtr pVisual;
-{
- miResolveColor(pred, pgreen, pblue, pVisual);
-}
-
-Bool
-ilbmInitializeColormap(pmap)
- register ColormapPtr pmap;
-{
- return miInitializeColormap(pmap);
-}
-
-int
-ilbmExpandDirectColors(pmap, ndef, indefs, outdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *indefs, *outdefs;
-{
- return miExpandDirectColors(pmap, ndef, indefs, outdefs);
-}
-
-Bool
-ilbmCreateDefColormap(pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
-
-Bool
-ilbmSetVisualTypes(depth, visuals, bitsPerRGB)
- int depth;
- int visuals;
- int bitsPerRGB;
-{
- return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
-}
-
-/*
- * Given a list of formats for a screen, create a list
- * of visuals and depths for the screen which correspond to
- * the set which can be used with this version of ilbm.
- */
-
-Bool
-ilbmInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp, defaultVisp,
- sizes, bitsPerRGB)
- VisualPtr *visualp;
- DepthPtr *depthp;
- int *nvisualp, *ndepthp;
- int *rootDepthp;
- VisualID *defaultVisp;
- unsigned long sizes;
- int bitsPerRGB;
-{
- return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
- defaultVisp, sizes, bitsPerRGB, -1);
-}
diff --git a/ilbm/ilbmfillarc.c b/ilbm/ilbmfillarc.c
deleted file mode 100644
index a5ab6c4a2..000000000
--- a/ilbm/ilbmfillarc.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmfillarc.c,v 3.0 1996/08/18 01:53:48 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: ilbmfillarc.c,v 5.14 94/04/17 20:28:20 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "miscstruct.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "mifillarc.h"
-#include "mi.h"
-
-static void
-ilbmFillEllipseSolid(pDraw, arc, rrops)
- DrawablePtr pDraw;
- xArc *arc;
- register unsigned char *rrops;
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- register int slw;
- miFillArcRec info;
- PixelType *addrlt, *addrlb;
- register PixelType *pdst;
- PixelType *addrl;
- register int n;
- register int d;
- int nlwidth;
- register int xpos;
- PixelType startmask, endmask;
- int nlmiddle;
- int depthDst;
- int auxDst;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- addrlt);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt += auxDst * (yorg - y);
- addrlb += auxDst * (yorg + y + dy);
- while (y) {
- addrlt += auxDst;
- addrlb -= auxDst;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- pdst = addrl = ilbmScanlineOffset(addrlt, (xpos >> PWSH));
- if (((xpos & PIM) + slw) < PPW) {
- maskpartialbits(xpos, slw, startmask);
- for (d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~startmask;
- break;
- case RROP_WHITE:
- *pdst |= startmask;
- break;
- case RROP_INVERT:
- *pdst ^= startmask;
- break;
- case RROP_NOP:
- break;
- }
- }
- if (miFillArcLower(slw)) {
- pdst = ilbmScanlineOffset(addrlb, (xpos >> PWSH));
-
- for (d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~startmask;
- break;
- case RROP_WHITE:
- *pdst |= startmask;
- break;
- case RROP_INVERT:
- *pdst ^= startmask;
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- continue;
- }
- maskbits(xpos, slw, startmask, endmask, nlmiddle);
- for (d = 0; d < depthDst; d++, addrl += nlwidth) { /* @@@ NEXT PLANE @@@ */
- n = nlmiddle;
- pdst = addrl;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *pdst++ &= ~startmask;
- while (n--)
- *pdst++ = 0;
- if (endmask)
- *pdst &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *pdst++ |= startmask;
- while (n--)
- *pdst++ = ~0;
- if (endmask)
- *pdst |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *pdst++ ^= startmask;
- while (n--)
- *pdst++ ^= ~0;
- if (endmask)
- *pdst ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- }
- }
- if (!miFillArcLower(slw))
- continue;
- addrl = ilbmScanlineOffset(addrlb, (xpos >> PWSH));
- for (d = 0; d < depthDst; d++, addrl += nlwidth) { /* @@@ NEXT PLANE @@@ */
- n = nlmiddle;
- pdst = addrl;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *pdst++ &= ~startmask;
- while (n--)
- *pdst++ = 0;
- if (endmask)
- *pdst &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *pdst++ |= startmask;
- while (n--)
- *pdst++ = ~0;
- if (endmask)
- *pdst |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *pdst++ ^= startmask;
- while (n--)
- *pdst++ ^= ~0;
- if (endmask)
- *pdst ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- }
- }
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) { \
- width = xr - xl + 1; \
- addrl = ilbmScanlineOffset(addr, (xl >> PWSH)); \
- if (((xl & PIM) + width) < PPW) { \
- maskpartialbits(xl, width, startmask); \
- for (pdst = addrl, d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */ \
- switch (rrops[d]) { \
- case RROP_BLACK: \
- *pdst &= ~startmask; \
- break; \
- case RROP_WHITE: \
- *pdst |= startmask; \
- break; \
- case RROP_INVERT: \
- *pdst ^= startmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
- } \
- } else { \
- maskbits(xl, width, startmask, endmask, nlmiddle); \
- for (d = 0; d < depthDst; d++, addrl += nlwidth) { /* @@@ NEXT PLANE @@@ */ \
- n = nlmiddle; \
- pdst = addrl; \
- switch (rrops[d]) { \
- case RROP_BLACK: \
- if (startmask) \
- *pdst++ &= ~startmask; \
- while (n--) \
- *pdst++ = 0; \
- if (endmask) \
- *pdst &= ~endmask; \
- break; \
- case RROP_WHITE: \
- if (startmask) \
- *pdst++ |= startmask; \
- while (n--) \
- *pdst++ = ~0; \
- if (endmask) \
- *pdst |= endmask; \
- break; \
- case RROP_INVERT: \
- if (startmask) \
- *pdst++ ^= startmask; \
- while (n--) \
- *pdst++ ^= ~0; \
- if (endmask) \
- *pdst ^= endmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
- } \
- } \
- }
-
-#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
-ilbmFillArcSliceSolidCopy(pDraw, pGC, arc, rrops)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
- register unsigned char *rrops;
-{
- PixelType *addrl;
- register PixelType *pdst;
- register int n;
- register int d;
- 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;
- int auxDst;
- int depthDst;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- addrlt);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrlb = addrlt;
- addrlt = ilbmScanlineDeltaNoBankSwitch(addrlt, yorg - y, auxDst);
- addrlb = ilbmScanlineDeltaNoBankSwitch(addrlb, yorg + y + dy, auxDst);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0) {
- ilbmScanlineIncNoBankSwitch(addrlt, auxDst);
- ilbmScanlineIncNoBankSwitch(addrlb, -auxDst);
- 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
-ilbmPolyFillArcSolid(pDraw, pGC, narcs, parcs)
- register DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- ilbmPrivGC *priv;
- register xArc *arc;
- register int i;
- int x2, y2;
- BoxRec box;
- RegionPtr cclip;
- unsigned char *rrops;
-
- priv = (ilbmPrivGC *) pGC->devPrivates[ilbmGCPrivateIndex].ptr;
- rrops = priv->rrops;
- 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 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) ) {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- ilbmFillEllipseSolid(pDraw, arc, rrops);
- else
- ilbmFillArcSliceSolidCopy(pDraw, pGC, arc, rrops);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/ilbm/ilbmfillrct.c b/ilbm/ilbmfillrct.c
deleted file mode 100644
index 604046080..000000000
--- a/ilbm/ilbmfillrct.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmfillrct.c,v 3.0 1996/08/18 01:53:49 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmfillrct.c,v 5.10 94/04/17 20:28:21 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.h"
-#include "maskbits.h"
-
-#define MODEQ(a, b) ((a) %= (b))
-void ilbmPaintOddSize();
-
-/*
- filled rectangles.
- translate the rectangles, clip them, and call the
-helper function in the GC.
-*/
-
-#define NUM_STACK_RECTS 1024
-
-void
-ilbmPolyFillRect(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;
- ilbmPrivGC *priv;
- PixmapPtr ppix;
- unsigned char *rrops;
- unsigned char *rropsOS;
-
- priv = (ilbmPrivGC *)pGC->devPrivates[ilbmGCPrivateIndex].ptr;
- ppix = pGC->pRotatedPixmap;
- prgnClip = pGC->pCompositeClip;
- rrops = priv->rrops;
- rropsOS = priv->rropOS;
-
- 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)ALLOCATE_LOCAL(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) {
- switch (pGC->fillStyle) {
- case FillSolid:
- ilbmSolidFillArea(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, rrops);
- break;
- case FillTiled:
- switch (pGC->alu) {
- case GXcopy:
- if (pGC->pRotatedPixmap)
- ilbmTileAreaPPWCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->pRotatedPixmap, pGC->planemask);
- else
- ilbmTileAreaCopy(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy, pGC->tile.pixmap,
- pGC->patOrg.x, pGC->patOrg.y,
- pGC->planemask);
- break;
-
- default:
- if (pGC->pRotatedPixmap)
- ilbmTileAreaPPWGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->pRotatedPixmap,
- pGC->planemask);
- else
- ilbmTileAreaGeneral(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->tile.pixmap, pGC->patOrg.x,
- pGC->patOrg.y, pGC->planemask);
- break;
- } /* switch (alu) */
- break;
-
- case FillStippled:
- if (pGC->pRotatedPixmap)
- ilbmStippleAreaPPW(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->pRotatedPixmap, rrops);
- else
- ilbmStippleArea(pDrawable, pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->stipple, pGC->patOrg.x,
- pGC->patOrg.y, rrops);
- break;
-
- case FillOpaqueStippled:
- switch (pGC->alu) {
- case GXcopy:
- if (pGC->pRotatedPixmap)
- ilbmOpaqueStippleAreaPPWCopy(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->pRotatedPixmap, rropsOS,
- pGC->planemask);
- else
- ilbmOpaqueStippleAreaCopy(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, GXcopy,
- pGC->stipple, pGC->patOrg.x,
- pGC->patOrg.y, rropsOS,
- pGC->planemask);
- break;
-
- default:
- if (pGC->pRotatedPixmap)
- ilbmOpaqueStippleAreaPPWGeneral(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->pRotatedPixmap,
- rropsOS, pGC->planemask);
- else
- ilbmOpaqueStippleAreaGeneral(pDrawable,
- pboxClipped-pboxClippedBase,
- pboxClippedBase, pGC->alu,
- pGC->stipple, pGC->patOrg.x,
- pGC->patOrg.y, rropsOS,
- pGC->planemask);
- break;
- } /* switch (alu) */
- break;
- }
- }
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/ilbm/ilbmfillsp.c b/ilbm/ilbmfillsp.c
deleted file mode 100644
index 321154330..000000000
--- a/ilbm/ilbmfillsp.c
+++ /dev/null
@@ -1,1149 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmfillsp.c,v 3.0 1996/08/18 01:53:50 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmfillsp.c,v 5.13 94/04/17 20:28:21 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.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 ilbmCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
-*/
-
-
-void
-ilbmSolidFS(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 */
- PixelType *pBase;
- 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;
- int depthDst;
- int auxDst;
- int d;
- unsigned char *rrops;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
- while (n--) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (*pwidth) {
- addrl = addrlBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- 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;
- }
- break;
-
- case RROP_WHITE:
- 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;
- }
- break;
- case RROP_INVERT:
- 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;
- }
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-ilbmStippleFS(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 */
- PixelType *pBase;
- 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;
- int d;
- int depthDst;
- int auxDst;
- unsigned char *rrops;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- pStipple = pGC->pRotatedPixmap;
- tileHeight = pStipple->drawable.height;
- psrc = (PixelType *)(pStipple->devPrivate.ptr);
-
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
-
- while (n--) {
- src = psrc[ppt->y % tileHeight];
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- addrl = addrlBase;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- /* 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);
- }
- break;
- case RROP_WHITE:
- /* 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);
- }
- break;
- case RROP_INVERT:
- /* 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);
- }
- break;
-
- case RROP_NOP:
- break;
- }
- }
- pwidth++;
- ppt++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-ilbmTileFS(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 */
- PixelType *pBase;
- 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;
- int auxDst;
- int depthDst;
- int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- rop = pGC->alu;
-
- switch (rop) {
- case GXcopy:
-#define DoMaskCopyRop(src,dst,mask) ((dst) & ~(mask) | (src) & (mask))
- while (n--) {
- if (*pwidth) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- addrl = addrlBase;
- src = psrc[ppt->y % tileHeight + tileHeight * d];
- 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) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- addrl = addrlBase;
-
- src = psrc[ppt->y % tileHeight + tileHeight * d];
- 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;
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-void
-ilbmOpaqueStippleFS(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 */
- PixelType *pBase;
- 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;
- unsigned char *rropsOS;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- int auxDst;
- int depthDst;
- int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- pTile = pGC->pRotatedPixmap;
- tileHeight = pTile->drawable.height;
- psrc = (PixelType *)(pTile->devPrivate.ptr);
- rop = pGC->alu;
- rropsOS = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rropOS;
-
- switch (rop) {
- case GXcopy:
-#define DoMaskCopyRop(src,dst,mask) ((dst) & ~(mask) | (src) & (mask))
- while (n--) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- if (*pwidth) {
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- src = 0;
- break;
- case RROP_WHITE:
- src = ~0;
- break;
- case RROP_INVERT:
- src = ~psrc[ppt->y % tileHeight];
- break;
- case RROP_COPY:
- src = psrc[ppt->y % tileHeight];
- break;
- case RROP_NOP:
- continue;
- }
-
- addrl = addrlBase;
-
- 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);
- }
- } /* for (d = ...) */
- }
-
- pwidth++;
- ppt++;
- }
- break;
-
- default:
- {
- register DeclareMergeRop ();
-
- InitializeMergeRop(rop,~0);
- while (n--) {
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
- if (*pwidth) {
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- src = 0;
- break;
- case RROP_WHITE:
- src = ~0;
- break;
- case RROP_INVERT:
- src = ~psrc[ppt->y % tileHeight];
- break;
- case RROP_COPY:
- src = psrc[ppt->y % tileHeight];
- break;
- case RROP_NOP:
- continue;
- }
-
- addrl = addrlBase;
-
- 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);
- }
- } /* for (d = ...) */
- }
- pwidth++;
- ppt++;
- } /* while (n) */
- break;
- }
- } /* switch (rop) */
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with tiles that aren't PPW bits wide */
-void
-ilbmUnnaturalTileFS(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 */
- PixelType *pBase;
- 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;
- int auxDst;
- int sizeTile;
- int depthDst;
- register int d;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->tile.pixmap;
- tlwidth = pTile->devKind/PGSZB;
- rop = pGC->alu;
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- sizeTile = tlwidth * tileHeight;
-
- /* 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;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, psrcT += sizeTile, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- if (*pwidth) {
- x = ppt->x;
- pdst = addrlBase;
- 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 (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- getandputrop0(psrc, nstart, PPW, pdst, rop);
- pdst++;
- psrc++;
- }
- if (endmask) {
- getandputrop0(psrc, nstart, nend, pdst, rop);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with stipples that aren't PPW bits wide */
-void
-ilbmUnnaturalStippleFS(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 */
- PixelType *pBase;
- 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;
- unsigned char *rrops;
- register int d;
- int auxDst;
- int depthDst;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- tlwidth = pTile->devKind/PGSZB;
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
-
- /* 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;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- rop = rrops[d];
- if (rop == RROP_NOP)
- continue;
-
- pdst = addrlBase;
- 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++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
-/* Fill spans with OpaqueStipples that aren't PPW bits wide */
-void
-ilbmUnnaturalOpaqueStippleFS(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 */
- PixelType *pBase;
- 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 d;
- register PixelType tmpsrc;
- register PixelType tmpdst;
- register int alu, nstart;
- register unsigned char *rropsOS;
- 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;
- int auxDst;
- int sizeTile;
- int depthDst;
-
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if (!pptFree || !pwidthFree) {
- if (pptFree)
- DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree)
- DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- pTile = pGC->stipple;
- tlwidth = pTile->devKind/PGSZB;
- alu = pGC->alu;
-
- xSrc = pDrawable->x;
- ySrc = pDrawable->y;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBase);
-
- tileWidth = pTile->drawable.width;
- tileHeight = pTile->drawable.height;
- rropsOS = ilbmGetGCPrivate(pGC)->rropOS;
-
- /* 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;
- psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth);
- addrlBase = ilbmScanline(pBase, ppt->x, ppt->y, auxDst);
-
- for (d = 0; d < depthDst; d++, addrlBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(pGC->planemask & (1 << d)))
- continue;
-
- if (*pwidth) {
- x = ppt->x;
- pdst = addrlBase;
- 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;
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), w, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
-
- putbits (tmpsrc, (x & PIM), w, pdst);
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), w, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, (x & PIM), w, pdst);
- } 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) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
- if (alu != GXcopy) {
- getbits (pdst, (x & PIM), nstart, tmpdst);
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- getbits (psrc, nstart, PPW, tmpsrc);
- break;
- case RROP_INVERT:
- getbits (psrc, nstart, PPW, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
- if (alu != GXcopy) {
- tmpdst = *pdst;
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++;*/
- psrc++;
- }
- if (endmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits (psrc, nstart, nend, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits (psrc, nstart, nend, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
- if (alu != GXcopy) {
- tmpdst = *pdst;
- DoRop (tmpsrc, alu, tmpsrc, tmpdst);
- }
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- }
- }
- }
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/ilbm/ilbmfont.c b/ilbm/ilbmfont.c
deleted file mode 100644
index 84ef8e5d1..000000000
--- a/ilbm/ilbmfont.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $XFree86$ */
-/*
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-*/
-/* $XConsortium: ilbmfont.c,v 1.18 94/04/17 20:28:22 keith Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "scrnintstr.h"
-
-/*ARGSUSED*/
-Bool
-ilbmRealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-ilbmUnrealizeFont( pscr, pFont)
- ScreenPtr pscr;
- FontPtr pFont;
-{
- return (TRUE);
-}
diff --git a/ilbm/ilbmgc.c b/ilbm/ilbmgc.c
deleted file mode 100644
index f87f1fc9c..000000000
--- a/ilbm/ilbmgc.c
+++ /dev/null
@@ -1,715 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmgc.c,v 3.0 1996/08/18 01:53:52 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmgc.c,v 5.35 94/04/17 20:28:23 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.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 ilbmFuncs = {
- ilbmValidateGC,
- miChangeGC,
- miCopyGC,
- ilbmDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip
-};
-
-static GCOps ilbmGCOps = {
- ilbmSolidFS,
- ilbmSetSpans,
- ilbmPutImage,
- ilbmCopyArea,
- miCopyPlane,
- ilbmPolyPoint,
- ilbmLineSS,
- ilbmSegmentSS,
- miPolyRectangle,
- ilbmZeroPolyArcSS,
- ilbmFillPolygonSolid,
- ilbmPolyFillRect,
- ilbmPolyFillArcSolid,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- ilbmTEGlyphBlt,
- ilbmPolyGlyphBlt,
- ilbmPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-
-Bool
-ilbmCreateGC(pGC)
- register GCPtr pGC;
-{
- ilbmPrivGC *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 = &ilbmGCOps;
- pGC->funcs = &ilbmFuncs;
-
- /* ilbm wants to translate before scan convesion */
- pGC->miTranslate = 1;
-
- pPriv = (ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr);
- ilbmReduceRop(pGC->alu, pGC->fgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- ilbmReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, pPriv->rropOS);
-
- pGC->fExpose = TRUE;
- pGC->pRotatedPixmap = NullPixmap;
- pGC->freeCompClip = FALSE;
- return TRUE;
-}
-
-/* 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
-ilbmValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- register ilbmPrivGCPtr 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 = ((ilbmPrivGCPtr)(pGC->devPrivates[ilbmGCPrivateIndex].ptr));
-
-
- /*
- 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)))
- ilbmComputeCompositeClip(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 GCPlaneMask:
- case GCFunction:
- case GCForeground:
- new_rrop = TRUE;
- 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))) {
- ilbmCopyRotatePixmap(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))) {
- ilbmCopyRotatePixmap(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) {
- ilbmReduceRop(pGC->alu, pGC->fgPixel, pGC->planemask, pDrawable->depth,
- devPriv->rrops);
- ilbmReduceOpaqueStipple(pGC->fgPixel, pGC->bgPixel, pGC->planemask,
- pGC->depth, devPriv->rropOS);
- new_fill = TRUE;
- }
-
- if (new_line || new_fill || new_text) {
- 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)
- pGC->ops->PolyArc = ilbmZeroPolyArcSS;
- 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 = ilbmSegmentSS;
- pGC->ops->Polylines = ilbmLineSS;
- } 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->PolySegment = ilbmSegmentSD;
- pGC->ops->Polylines = ilbmLineSD;
- } else {
- pGC->ops->PolySegment = miPolySegment;
- pGC->ops->Polylines = miWideDash;
- }
- }
- }
-
- 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->ops->ImageGlyphBlt = ilbmTEGlyphBlt;
- } else {
- pGC->ops->ImageGlyphBlt = ilbmImageGlyphBlt;
- }
-
- /* now do PolyGlyphBlt */
- if (pGC->fillStyle == FillSolid) {
- pGC->ops->PolyGlyphBlt = ilbmPolyGlyphBlt;
- } else {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- }
- }
- }
-
- if (new_fill) {
- /* install a suitable fillspans and pushpixels */
- pGC->ops->PushPixels = ilbmPushPixels;
- pGC->ops->FillPolygon = miFillPolygon;
- pGC->ops->PolyFillArc = miPolyFillArc;
-
- switch (pGC->fillStyle) {
- case FillSolid:
- pGC->ops->FillSpans = ilbmSolidFS;
- pGC->ops->FillPolygon = ilbmFillPolygonSolid;
- pGC->ops->PolyFillArc = ilbmPolyFillArcSolid;
- break;
- case FillTiled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ilbmTileFS;
- else
- pGC->ops->FillSpans = ilbmUnnaturalTileFS;
- break;
- case FillOpaqueStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ilbmOpaqueStippleFS;
- else
- pGC->ops->FillSpans = ilbmUnnaturalOpaqueStippleFS;
- break;
-
- case FillStippled:
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ilbmStippleFS;
- else
- pGC->ops->FillSpans = ilbmUnnaturalStippleFS;
- break;
- }
- } /* end of new_fill */
-}
-
-void
-ilbmDestroyGC(pGC)
- GCPtr pGC;
-{
- if (pGC->pRotatedPixmap)
- (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- if (pGC->freeCompClip)
- REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip);
- miDestroyGCOps(pGC->ops);
-}
-
-/* table to map alu(src, dst) to alu(~src, dst) */
-int ilbmInverseAlu[16] = {
- GXclear,
- GXandInverted,
- GXnor,
- GXcopyInverted,
- GXand,
- GXnoop,
- GXequiv,
- GXorInverted,
- GXandReverse,
- GXxor,
- GXinvert,
- GXnand,
- GXcopy,
- GXor,
- GXorReverse,
- GXset
-};
-
-void
-ilbmReduceOpaqueStipple(fg, bg, planemask, depth, rop)
-register PixelType fg;
-register PixelType bg;
-register unsigned long planemask;
-int depth;
-register unsigned char *rop;
-{
- register int d;
- register Pixel mask = 1;
-
- bg ^= fg;
-
- for (d = 0; d < depth; d++, mask <<= 1) {
- if (!(planemask & mask))
- rop[d] = RROP_NOP;
- else if (!(bg & mask)) {
- /* Both fg and bg have a 0 or 1 in this plane */
- if (fg & mask)
- rop[d] = RROP_WHITE;
- else
- rop[d] = RROP_BLACK;
- } else {
- /* Both fg and bg have different bits on this plane */
- if (fg & mask)
- rop[d] = RROP_COPY;
- else
- rop[d] = RROP_INVERT;
- }
- }
-}
-
-void
-ilbmReduceRop(alu, src, planemask, depth, rop)
- register int alu;
- register Pixel src;
- register unsigned long planemask;
- int depth;
- register unsigned char *rop;
-{
- register int d;
- register Pixel mask = 1;
-
- for (d = 0; d < depth; d++, mask <<= 1) {
- if (!(planemask & mask))
- rop[d] = RROP_NOP;
- else if ((src & mask) == 0) /* src is black */
- switch (alu) {
- case GXclear:
- rop[d] = RROP_BLACK;
- break;
- case GXand:
- rop[d] = RROP_BLACK;
- break;
- case GXandReverse:
- rop[d] = RROP_BLACK;
- break;
- case GXcopy:
- rop[d] = RROP_BLACK;
- break;
- case GXandInverted:
- rop[d] = RROP_NOP;
- break;
- case GXnoop:
- rop[d] = RROP_NOP;
- break;
- case GXxor:
- rop[d] = RROP_NOP;
- break;
- case GXor:
- rop[d] = RROP_NOP;
- break;
- case GXnor:
- rop[d] = RROP_INVERT;
- break;
- case GXequiv:
- rop[d] = RROP_INVERT;
- break;
- case GXinvert:
- rop[d] = RROP_INVERT;
- break;
- case GXorReverse:
- rop[d] = RROP_INVERT;
- break;
- case GXcopyInverted:
- rop[d] = RROP_WHITE;
- break;
- case GXorInverted:
- rop[d] = RROP_WHITE;
- break;
- case GXnand:
- rop[d] = RROP_WHITE;
- break;
- case GXset:
- rop[d] = RROP_WHITE;
- break;
- }
- else /* src is white */
- switch (alu) {
- case GXclear:
- rop[d] = RROP_BLACK;
- break;
- case GXand:
- rop[d] = RROP_NOP;
- break;
- case GXandReverse:
- rop[d] = RROP_INVERT;
- break;
- case GXcopy:
- rop[d] = RROP_WHITE;
- break;
- case GXandInverted:
- rop[d] = RROP_BLACK;
- break;
- case GXnoop:
- rop[d] = RROP_NOP;
- break;
- case GXxor:
- rop[d] = RROP_INVERT;
- break;
- case GXor:
- rop[d] = RROP_WHITE;
- break;
- case GXnor:
- rop[d] = RROP_BLACK;
- break;
- case GXequiv:
- rop[d] = RROP_NOP;
- break;
- case GXinvert:
- rop[d] = RROP_INVERT;
- break;
- case GXorReverse:
- rop[d] = RROP_WHITE;
- break;
- case GXcopyInverted:
- rop[d] = RROP_BLACK;
- break;
- case GXorInverted:
- rop[d] = RROP_NOP;
- break;
- case GXnand:
- rop[d] = RROP_INVERT;
- break;
- case GXset:
- rop[d] = RROP_WHITE;
- break;
- }
- }
-}
-
-void
-ilbmComputeCompositeClip(pGC, pDrawable)
- GCPtr pGC;
- DrawablePtr pDrawable;
-{
- ScreenPtr pScreen = pGC->pScreen;
-
- if (pDrawable->type == DRAWABLE_WINDOW) {
- WindowPtr pWin = (WindowPtr) pDrawable;
- RegionPtr pregWin;
- Bool freeTmpClip, freeCompClip;
-
- if (pGC->subWindowMode == IncludeInferiors) {
- pregWin = NotClippedByChildren(pWin);
- freeTmpClip = TRUE;
- } else {
- pregWin = &pWin->clipList;
- freeTmpClip = FALSE;
- }
- freeCompClip = pGC->freeCompClip;
-
- /*
- * if there is no client clip, we can get by with just keeping the
- * pointer we got, and remembering whether or not should destroy (or
- * maybe re-use) it later. this way, we avoid unnecessary copying of
- * regions. (this wins especially if many clients clip by children
- * and have no client clip.)
- */
- if (pGC->clientClipType == CT_NONE) {
- if (freeCompClip)
- REGION_DESTROY(pScreen, pGC->pCompositeClip);
- pGC->pCompositeClip = pregWin;
- pGC->freeCompClip = freeTmpClip;
- } else {
- /*
- * we need one 'real' region to put into the composite clip. if
- * pregWin the current composite clip are real, we can get rid of
- * one. if pregWin is real and the current composite clip isn't,
- * use pregWin for the composite clip. if the current composite
- * clip is real and pregWin isn't, use the current composite
- * clip. if neither is real, create a new region.
- */
-
- REGION_TRANSLATE(pScreen, pGC->clientClip,
- pDrawable->x + pGC->clipOrg.x,
- pDrawable->y + pGC->clipOrg.y);
-
- if (freeCompClip) {
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip, pregWin,
- pGC->clientClip);
- if (freeTmpClip)
- REGION_DESTROY(pScreen, pregWin);
- } else if (freeTmpClip) {
- REGION_INTERSECT(pScreen, pregWin, pregWin, pGC->clientClip);
- pGC->pCompositeClip = pregWin;
- } else {
- pGC->pCompositeClip = REGION_CREATE(pScreen, NullBox, 0);
- REGION_INTERSECT(pScreen, pGC->pCompositeClip,
- pregWin, pGC->clientClip);
- }
- pGC->freeCompClip = TRUE;
- REGION_TRANSLATE(pScreen, pGC->clientClip,
- -(pDrawable->x + pGC->clipOrg.x),
- -(pDrawable->y + pGC->clipOrg.y));
- }
- } /* end of composite clip for a window */
- else {
- BoxRec pixbounds;
-
- /* XXX should we translate by drawable.x/y here ? */
- pixbounds.x1 = 0;
- pixbounds.y1 = 0;
- pixbounds.x2 = pDrawable->width;
- pixbounds.y2 = pDrawable->height;
-
- if (pGC->freeCompClip) {
- REGION_RESET(pScreen, pGC->pCompositeClip, &pixbounds);
- } else {
- pGC->freeCompClip = TRUE;
- pGC->pCompositeClip = REGION_CREATE(pScreen, &pixbounds, 1);
- }
-
- if (pGC->clientClipType == CT_REGION) {
- REGION_TRANSLATE(pScreen, pGC->pCompositeClip, -pGC->clipOrg.x,
- -pGC->clipOrg.y);
- REGION_INTERSECT(pScreen, pGC->pCompositeClip,
- pGC->pCompositeClip, pGC->clientClip);
- REGION_TRANSLATE(pScreen, pGC->pCompositeClip, pGC->clipOrg.x,
- pGC->clipOrg.y);
- }
- } /* end of composite clip for pixmap */
-} /* end ilbmComputeCompositeClip */
diff --git a/ilbm/ilbmgetsp.c b/ilbm/ilbmgetsp.c
deleted file mode 100644
index 37b8d8537..000000000
--- a/ilbm/ilbmgetsp.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmgetsp.c,v 5.10 94/04/17 20:28:24 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.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
-ilbmGetSpans(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 *)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 */
- int auxSrc;
- int depthSrc;
- register DDXPointPtr pptLast; /* one past last point to get */
- int xEnd; /* last pixel to copy from */
- register int nstart;
- register int d;
- int nend;
- int srcStartOver;
- PixelType startmask, endmask;
- unsigned int srcBit;
- int nlMiddle, nl;
- int w;
-
- pptLast = ppt + nspans;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthSrc, auxSrc, depthSrc,
- psrcBase);
- pdst = pdstStart;
-
- while (ppt < pptLast) {
- /* XXX should this really be << PWSH, or * 8, or * PGSZB? */
- xEnd = min(ppt->x + *pwidth, widthSrc << PWSH);
- pwidth++;
- for (d = 0; d < depthSrc; d++) {
- psrc = ilbmScanline(psrcBase, ppt->x, ppt->y, auxSrc);
- psrcBase += widthSrc; /* @@@ NEXT PLANE @@@ */
- 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/ilbm/ilbmhrzvert.c b/ilbm/ilbmhrzvert.c
deleted file mode 100644
index 9612749cf..000000000
--- a/ilbm/ilbmhrzvert.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmhrzvert.c,v 1.15 94/04/17 20:28:24 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.h"
-#include "maskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-ilbmHorzS(pbase, nlwidth, auxDst, depthDst, x1, y1, len, rrops)
-PixelType *pbase; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-register unsigned char *rrops;
-{
- register PixelType *addrl;
- register PixelType startmask;
- register PixelType endmask;
- register int nlmiddle;
- register int d;
- int saveNLmiddle;
-
- /* force the line to go left to right
- but don't draw the last point
- */
- if (len < 0) {
- x1 += len;
- x1 += 1;
- len = -len;
- }
-
- /* all bits inside same longword */
- if ( ((x1 & PIM) + len) < PPW) {
- maskpartialbits(x1, len, startmask);
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(pbase, x1, y1, auxDst);
- pbase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- *addrl &= ~startmask;
- break;
- case RROP_WHITE:
- *addrl |= startmask;
- break;
- case RROP_INVERT:
- *addrl ^= startmask;
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- } else {
- maskbits(x1, len, startmask, endmask, nlmiddle);
- saveNLmiddle = nlmiddle;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(pbase, x1, y1, auxDst);
- pbase += nlwidth; /* @@@ NEXT PLANE @@@ */
- nlmiddle = saveNLmiddle;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- if (startmask)
- *addrl++ &= ~startmask;
- Duff (nlmiddle, *addrl++ = 0x0);
- if (endmask)
- *addrl &= ~endmask;
- break;
-
- case RROP_WHITE:
- if (startmask)
- *addrl++ |= startmask;
- Duff (nlmiddle, *addrl++ = ~0);
- if (endmask)
- *addrl |= endmask;
- break;
-
- case RROP_INVERT:
- if (startmask)
- *addrl++ ^= startmask;
- Duff (nlmiddle, *addrl++ ^= ~0);
- if (endmask)
- *addrl ^= endmask;
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ... ) */
- }
-}
-
-/* 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.
-*/
-
-ilbmVertS(pbase, nlwidth, auxDst, depthDst, x1, y1, len, rrops)
-PixelType *pbase; /* pointer to base of bitmap */
-register int nlwidth; /* width in longwords of bitmap */
-int auxDst;
-int depthDst;
-int x1, y1; /* initial point */
-register int len; /* length of line */
-unsigned char *rrops;
-{
- register PixelType *addrl;
- register PixelType bitmask;
- int saveLen;
- int d;
-
- if (len < 0) {
- auxDst = -auxDst;
- len = -len;
- }
-
- saveLen = len;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(pbase, x1, y1, auxDst);
- pbase += nlwidth; /* @@@ NEXT PLANE @@@ */
- len = saveLen;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- bitmask = rmask[x1 & PIM];
- Duff(len, *addrl &= bitmask; ilbmScanlineInc(addrl, auxDst) );
- break;
-
- case RROP_WHITE:
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl |= bitmask; ilbmScanlineInc(addrl, auxDst) );
- break;
-
- case RROP_INVERT:
- bitmask = mask[x1 & PIM];
- Duff(len, *addrl ^= bitmask; ilbmScanlineInc(addrl, auxDst) );
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-}
diff --git a/ilbm/ilbmimage.c b/ilbm/ilbmimage.c
deleted file mode 100644
index ddb19ac6a..000000000
--- a/ilbm/ilbmimage.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmimage.c,v 3.0 1996/08/18 01:53:56 dawes Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#include <X11/X.h>
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "ilbm.h"
-#include "maskbits.h"
-#include "servermd.h"
-
-void
-ilbmPutImage(pDraw, pGC, depth, x, y, width, height, leftPad, format, pImage)
- DrawablePtr pDraw;
- GCPtr pGC;
- int depth, x, y, width, height;
- int leftPad;
- int format;
- char *pImage;
-{
- PixmapPtr pPixmap;
-
-#if 1
- fprintf(stderr, "ilbmPutImage()\n");
- fprintf(stderr, "\tdepth = %d, x = %d, y = %d, width = %d, height = %d, "
- "leftPad = %d\n", depth, x, y, width, height, leftPad);
- switch (format) {
- case XYBitmap:
- fprintf(stderr, "\tformat = XYBitmap\n");
- break;
- case XYPixmap:
- fprintf(stderr, "\tformat = XYPixmap\n");
- break;
- case ZPixmap:
- fprintf(stderr, "\tformat = ZPixmap\n");
- break;
- default:
- fprintf(stderr, "\tformat = %d\n");
- break;
- }
-#endif
-
- if ((width == 0) || (height == 0))
- return;
-
- if (format != ZPixmap || depth == 1 || pDraw->depth == 1) {
- if (format == XYBitmap) {
- char *ptmp;
- int realwidth;
- int size;
- int aux;
- int d, yy, xx;
- char *ss, *dd;
-
- realwidth = BitmapBytePad(width+leftPad);
- aux = depth*realwidth;
- size = height*aux;
-
-#if 1
- fprintf(stderr, "\trealwidth = %d, aux = %d, size = %d\n", realwidth,
- aux, size);
-#endif
-
- if (!(ptmp = (char *)ALLOCATE_LOCAL(size)))
- return;
-
- /*
- * Convert from bitplanes to interleaved bitplanes
- */
-
- ss = (char *)pImage;
- for (d = 0; d < depth; d++) {
- dd = ptmp+d*realwidth;
- for (yy = 0; yy < height; yy++) {
- for (xx = 0; xx < realwidth; xx++)
-#if 1
- {
- fprintf(stderr, "*(%d) = *(%d)\n", (&dd[xx])-ptmp,
- ss-(char *)pImage);
-#endif
- dd[xx] = *(ss++);
-#if 1
- }
-#endif
- dd += aux;
- }
- }
-
- pPixmap = GetScratchPixmapHeader(pDraw->pScreen, width+leftPad, height,
- depth, depth,
- BitmapBytePad(width+leftPad),
- (pointer)ptmp);
- if (!pPixmap) {
- DEALLOCATE_LOCAL(ptmp);
- return;
- }
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, pDraw, pGC, leftPad,
- 0, width, height, x, y, 1);
- DEALLOCATE_LOCAL(ptmp);
- } else {
-#if 0
- /* XXX: bit plane order wronge ! */
- pPixmap->drawable.depth = 1;
- pPixmap->drawable.bitsPerPixel = 1;
-
- switch (pGC->alu) {
- case GXcopy:
- doBitBlt = ilbmDoBitbltCopy;
- break;
- case GXxor:
- doBitBlt = ilbmDoBitbltXor;
- break;
- case GXcopyInverted:
- doBitBlt = ilbmDoBitbltCopyInverted;
- break;
- case GXor:
- doBitBlt = ilbmDoBitbltOr;
- break;
- default:
- doBitBlt = ilbmDoBitbltGeneral;
- break;
- }
-
- for (plane = (1L << (pPixmap->drawable.depth - 1)); plane;
- plane >>= 1) {
- (void)ilbmBitBlt((DrawablePtr)pPixmap, pDraw, pGC, leftPad, 0,
- width, height, x, y, doBitBlt, plane);
- /* pDraw->devKind += sizeDst; */
- }
-#else
- char *ptmp;
- int realwidth;
- int size;
- int aux;
- int d, yy, xx;
- char *ss, *dd;
-
- realwidth = BitmapBytePad(width+leftPad);
- aux = depth*realwidth;
- size = height*aux;
-
-#if 1
- fprintf(stderr, "\trealwidth = %d, aux = %d, size = %d\n", realwidth,
- aux, size);
-#endif
-
- if (!(ptmp = (char *)ALLOCATE_LOCAL(size)))
- return;
-
- /*
- * Convert from bitplanes to interleaved bitplanes
- */
-
- ss = (char *)pImage;
- for (d = 0; d < depth; d++) {
- dd = ptmp+d*realwidth;
- for (yy = 0; yy < height; yy++) {
- for (xx = 0; xx < realwidth; xx++)
-#if 1
- {
- fprintf(stderr, "*(%d) = *(%d)\n", (&dd[xx])-ptmp,
- ss-(char *)pImage);
-#endif
- dd[xx] = *(ss++);
-#if 1
- }
-#endif
- dd += aux;
- }
- }
-
- pPixmap = GetScratchPixmapHeader(pDraw->pScreen, width+leftPad, height,
- depth, depth,
- BitmapBytePad(width+leftPad),
- (pointer)ptmp);
- if (!pPixmap) {
- DEALLOCATE_LOCAL(ptmp);
- return;
- }
-
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC, leftPad,
- 0, width, height, x, y);
- DEALLOCATE_LOCAL(ptmp);
-#endif
- }
-
- pGC->fExpose = TRUE;
- FreeScratchPixmapHeader(pPixmap);
- } else {
- /* Chunky to planar conversion required */
-
- PixmapPtr pPixmap;
- ScreenPtr pScreen = pDraw->pScreen;
- int widthSrc;
- int start_srcshift;
- register int b;
- register int dstshift;
- register int shift_step;
- register PixelType dst;
- register PixelType srcbits;
- register PixelType *pdst;
- register PixelType *psrc;
- int start_bit;
- register int nl;
- register int h;
- register int d;
- int auxDst;
- PixelType *pdstBase;
- int widthDst;
- int depthDst;
-
- /* Create a tmp pixmap */
- pPixmap = (pScreen->CreatePixmap)(pScreen, width, height, depth);
- if (!pPixmap)
- return;
-
- ilbmGetPixelWidthAuxDepthAndPointer((DrawablePtr)pPixmap, widthDst,
- auxDst, depthDst, pdstBase);
-
- widthSrc = PixmapWidthInPadUnits(width, depth);
- /* XXX: if depth == 8, use fast chunky to planar assembly function.*/
- if (depth > 4) {
- start_srcshift = 24;
- shift_step = 8;
- } else {
- start_srcshift = 28;
- shift_step = 4;
- }
-
- for (d = 0; d < depth; d++, pdstBase += widthDst) { /* @@@ NEXT PLANE @@@ */
- register PixelType *pdstLine = pdstBase;
- start_bit = start_srcshift + d;
- psrc = (PixelType *)pImage;
- h = height;
-
- while (h--) {
- pdst = pdstLine;
- pdstLine += auxDst;
- dstshift = PPW - 1;
- dst = 0;
- nl = widthSrc;
- while (nl--) {
- srcbits = *psrc++;
- for (b = start_bit; b >= 0; b -= shift_step) {
- dst |= ((srcbits >> b) & 1) << dstshift;
- if (--dstshift < 0) {
- dstshift = PPW - 1;
- *pdst++ = dst;
- dst = 0;
- }
- }
- }
- if (dstshift != PPW - 1)
- *pdst++ = dst;
- }
- } /* for (d = ...) */
-
- pGC->fExpose = FALSE;
- (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, pDraw, pGC, leftPad, 0,
- width, height, x, y);
- pGC->fExpose = TRUE;
- (*pScreen->DestroyPixmap)(pPixmap);
- }
-}
-
-void
-ilbmGetImage(pDrawable, sx, sy, width, height, format, planemask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, width, height;
- unsigned int format;
- unsigned long planemask;
- char *pdstLine;
-{
- BoxRec box;
- DDXPointRec ptSrc;
- RegionRec rgnDst;
- ScreenPtr pScreen;
- PixmapPtr pPixmap;
-
-#if 1
- fprintf(stderr, "ilbmGetImage()\n");
- fprintf(stderr, "\tsx = %d, sy = %d, width = %d, height = %d, "
- "planemask = 0x%08x\n", sx, sy, width, height, planemask);
- switch (format) {
- case XYBitmap:
- fprintf(stderr, "\tformat = XYBitmap\n");
- break;
- case XYPixmap:
- fprintf(stderr, "\tformat = XYPixmap\n");
- break;
- case ZPixmap:
- fprintf(stderr, "\tformat = ZPixmap\n");
- break;
- default:
- fprintf(stderr, "\tformat = %d\n");
- break;
- }
-#endif
-
- if ((width == 0) || (height == 0))
- return;
-
- pScreen = pDrawable->pScreen;
- sx += pDrawable->x;
- sy += pDrawable->y;
-
- if (format == XYPixmap || pDrawable->depth == 1) {
- pPixmap = GetScratchPixmapHeader(pScreen, width, height, 1, 1,
- BitmapBytePad(width), (pointer)pdstLine);
- if (!pPixmap)
- return;
-
- ptSrc.x = sx;
- ptSrc.y = sy;
- box.x1 = 0;
- box.y1 = 0;
- box.x2 = width;
- box.y2 = height;
- REGION_INIT(pScreen, &rgnDst, &box, 1);
-
- pPixmap->drawable.depth = 1;
- pPixmap->drawable.bitsPerPixel = 1;
- /* dix layer only ever calls GetImage with 1 bit set in planemask
- * when format is XYPixmap.
- */
- ilbmDoBitblt(pDrawable, (DrawablePtr)pPixmap, GXcopy, &rgnDst, &ptSrc,
- planemask);
-
- FreeScratchPixmapHeader(pPixmap);
- REGION_UNINIT(pScreen, &rgnDst);
- } else {
- /* Planar to chunky conversion required */
-
- PixelType *psrcBits;
- PixelType *psrcLine;
- PixelType startmask, endmask;
- int depthSrc;
- int widthSrc;
- int auxSrc;
- int sizeDst;
- int widthDst;
- register PixelType *psrc;
- register PixelType *pdst;
- register PixelType dst;
- register PixelType srcbits;
- register int d;
- register int b;
- register int dstshift;
- register int shift_step;
- register int start_endbit;
- int start_startbit;
- register int end_endbit;
- register int start_dstshift;
- register int nl;
- register int h;
- int nlmiddle;
-
- widthDst = PixmapWidthInPadUnits(width, pDrawable->depth);
- sizeDst = widthDst * height;
-
- /* Clear the dest image */
- bzero(pdstLine, sizeDst << 2);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthSrc, auxSrc,
- depthSrc, psrcBits);
-
- psrcBits = ilbmScanline(psrcBits, sx, sy, auxSrc);
-
- start_startbit = PPW - 1 - (sx & PIM);
- if ((sx & PIM) + width < PPW) {
- maskpartialbits(sx, width, startmask);
- nlmiddle = 0;
- endmask = 0;
- start_endbit = PPW - ((sx + width) & PIM);
- } else {
- maskbits(sx, width, startmask, endmask, nlmiddle);
- start_endbit = 0;
- end_endbit = PPW - ((sx + width) & PIM);
- }
- /* ZPixmap images have either 4 or 8 bits per pixel dependent on
- * depth.
- */
- if (depthSrc > 4) {
- start_dstshift = 24;
- shift_step = 8;
- } else {
- start_dstshift = 28;
- shift_step = 4;
- }
-#define SHIFT_BITS(start_bit,end_bit) \
-for (b = (start_bit); b >= (end_bit); b--) { \
- dst |= ((srcbits >> b) & 1) << dstshift; \
- if ((dstshift -= shift_step) < 0) { \
- dstshift = start_dstshift + d; \
- *pdst++ = dst; \
- dst = *pdst; \
- } \
-} \
-
- for (d = 0; d < depthSrc; d++, psrcBits += widthSrc) { /* @@@ NEXT PLANE @@@ */
- psrcLine = psrcBits;
- pdst = (PixelType *)pdstLine;
- h = height;
-
- while (h--) {
- psrc = psrcLine;
- psrcLine += auxSrc;
- dst = *pdst;
- dstshift = start_dstshift + d;
-
- if (startmask) {
- srcbits = *psrc++ & startmask;
- SHIFT_BITS(start_startbit, start_endbit);
- }
-
- nl = nlmiddle;
- while (nl--) {
- srcbits = *psrc++;
- SHIFT_BITS(PPW - 1, 0);
- }
- if (endmask) {
- srcbits = *psrc & endmask;
- SHIFT_BITS(PPW - 1, end_endbit);
- }
-
- if (dstshift != start_dstshift + d)
- *pdst++ = dst;
- } /* while (h--) */
- } /* for (d = ...) */
- }
-}
diff --git a/ilbm/ilbmimggblt.c b/ilbm/ilbmimggblt.c
deleted file mode 100644
index 7fc1f3144..000000000
--- a/ilbm/ilbmimggblt.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmimggblt.c,v 3.0 1996/08/18 01:53:57 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmimggblt.c,v 5.17 94/04/17 20:28:25 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.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.
-
- 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
-ilbmImageGlyphBlt(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 */
-
- register int d;
- int depthDst;
- int auxDst;
- int hSave;
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- unsigned char rrops[AFB_MAX_DEPTH];
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
- unsigned char *pglyphSave;
-
- /* 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 */
- PixelType *pdstSave;
- int oldFill;
- ilbmPrivGC *pPriv = (ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr);
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- 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;
-
- oldFill = pGC->fillStyle;
- pGC->fillStyle = FillSolid;
- ilbmReduceRop (pGC->alu, pGC->bgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- ilbmPolyFillRect(pDrawable, pGC, 1, &backrect);
- pGC->fillStyle = oldFill;
- ilbmReduceRop (pGC->alu, pGC->fgPixel, pGC->planemask, pGC->depth,
- pPriv->rrops);
- ilbmReduceRop (GXcopy, pGC->fgPixel, pGC->planemask, pGC->depth, rrops);
-
- /* the faint-hearted can open their eyes now */
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- xchar = x & PIM;
-
- while (nglyph--) {
- pci = *ppci;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- hSave = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
- /* start at top scanline of glyph */
- pdstSave = ilbmScanlineDelta(pdstBase, -pci->metrics.ascent,
- auxDst);
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST) {
- pdstSave++;
- xoff &= PIM;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- *(pdst+1) |= SCRLEFT(tmpSrc, nFirst) & endmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } /* glyph crosses longwords boundary */
- } /* depth loop */
- /* 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:
- {
- ilbmTEXTPOS *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 */
- int getWidth; /* bits to get from glyph */
-
- if (!(ppos = (ilbmTEXTPOS *)ALLOCATE_LOCAL(nglyph *
- sizeof(ilbmTEXTPOS))))
- return;
-
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- 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;
-
- hSave = bottomEdge - topEdge;
- if (hSave <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- pglyphSave += (glyphRow * widthGlyph);
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
- getWidth = w + glyphCol;
-
- pdstSave = ilbmScanlineDelta(ppos[i].pdstBase, -(y-topEdge),
- auxDst);
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST) {
- xoff &= PIM;
- pdstSave++;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- maskpartialbits(xoff, w, startmask);
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= SCRRIGHT(tmpSrc, xoff) & startmask;
- *(pdst+1) |= SCRLEFT(tmpSrc, nFirst) & endmask;
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- }
- }
- } /* depth */
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
-
- default:
- break;
- }
-}
diff --git a/ilbm/ilbmline.c b/ilbm/ilbmline.c
deleted file mode 100644
index aa13fc114..000000000
--- a/ilbm/ilbmline.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmline.c,v 3.0 1996/08/18 01:53:58 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmline.c,v 5.18 94/04/17 20:28:26 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ilbm.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
-ilbmSegmentSS(pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-ilbmLineSS(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 */
- 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 depthDst;
- int d;
- int auxDst;
- unsigned char *rrops;
-
- /* a bunch of temporaries */
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
-
- cclip = pGC->pCompositeClip;
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- 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)
- ilbmVertS(addrlBase, nlwidth, auxDst, depthDst, x1, y1t,
- y2t-y1t, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- 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)
- ilbmHorzS(addrlBase, nlwidth, auxDst, depthDst, x1t, y1,
- x2t-x1t, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- 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
- ilbmBresS(addrlBase, nlwidth, auxDst, depthDst, signdx, signdy,
- axis, x1, y1, e, e1, e2, len, rrops); /* @@@ NEXT PLANE PASSED @@@ */
- 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;
- ilbmBresS(addrlBase, nlwidth, auxDst, depthDst, signdx,
- signdy, axis, new_x1, new_y1, err, e1, e2, len,
- rrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- 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))) {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--) {
- if ((x2 >= pbox->x1) && (y2 >= pbox->y1) && (x2 < pbox->x2) &&
- (y2 < pbox->y2)) {
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlBase, x2, y2, auxDst);
- addrlBase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- *addrl &= rmask[x2 & PIM];
- break;
- case RROP_WHITE:
- *addrl |= mask[x2 & PIM];
- break;
- case RROP_INVERT:
- *addrl ^= mask[x2 & PIM];
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- break;
- } else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-ilbmSegmentSD(pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-ilbmLineSD(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 *addrlBase; /* address of destination pixmap */
- PixelType *addrl;
- int nlwidth; /* width in longwords of destination pixmap */
- int auxDst;
- int depthDst;
- 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;
- unsigned char *rrops;
- unsigned char bgrrops[AFB_MAX_DEPTH];
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
- int d;
-
- cclip = pGC->pCompositeClip;
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- addrlBase);
-
- /* 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)
- ilbmReduceRop (pGC->alu, pGC->bgPixel, pGC->planemask, pGC->depth,
- bgrrops);
-
- 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;
- ilbmBresD(&dashIndexTmp, pDash, numInDashList, &dashOffsetTmp,
- isDoubleDash, addrlBase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, unclippedlen,
- rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- break;
-#else
- ilbmBresD(&dashIndex, pDash, numInDashList, &dashOffset,
- isDoubleDash, addrlBase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, x1, y1, e, e1, e2, unclippedlen,
- rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- 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;
- ilbmBresD(&dashIndexTmp, pDash, numInDashList, &dashOffsetTmp,
- isDoubleDash, addrlBase, nlwidth, auxDst, depthDst,
- signdx, signdy, axis, new_x1, new_y1, err, e1, e2,
- len, rrops, bgrrops); /* @@@ NEXT PLANE PASSED @@@ */
- }
- 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)) {
- int rop;
-
- for (d = 0; d < depthDst; d++) {
- addrl = ilbmScanline(addrlBase, x2, y2, auxDst);
- addrlBase += nlwidth; /* @@@ NEXT PLANE @@@ */
-
- rop = rrops[d];
- if (dashIndex & 1)
- rop = bgrrops[d];
-
- switch (rop) {
- case RROP_BLACK:
- *addrl &= rmask[x2 & PIM];
- break;
- case RROP_WHITE:
- *addrl |= mask[x2 & PIM];
- break;
-
- case RROP_INVERT:
- *addrl ^= mask[x2 & PIM];
- break;
-
- case RROP_NOP:
- break;
- }
- } /* for (d = ...) */
- break;
- } else
- pbox++;
- }
- }
-#endif
-}
diff --git a/ilbm/ilbmmisc.c b/ilbm/ilbmmisc.c
deleted file mode 100644
index 32b1a4b4c..000000000
--- a/ilbm/ilbmmisc.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmmisc.c,v 5.4 94/04/17 20:28:27 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "cursor.h"
-#include "scrnintstr.h"
-
-#include "ilbm.h"
-
-/*ARGSUSED*/
-void
-ilbmQueryBestSize(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;
- }
-}
diff --git a/ilbm/ilbmpixmap.c b/ilbm/ilbmpixmap.c
deleted file mode 100644
index 33c317155..000000000
--- a/ilbm/ilbmpixmap.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmpixmap.c,v 5.13 94/04/17 20:28:28 dpw Exp $ */
-
-/* pixmap management
- written by drewry, september 1986
-
- on a monchrome device, a pixmap is a bitmap.
-*/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "maskbits.h"
-
-#include "ilbm.h"
-#include "mi.h"
-
-#include "servermd.h"
-
-PixmapPtr
-ilbmCreatePixmap(pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
-
- paddedWidth = BitmapBytePad(width);
- if (paddedWidth > 32767 || height > 32767 || depth > 4)
- return NullPixmap;
- datasize = height * paddedWidth * depth;
- 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;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1);
-#endif
- return(pPixmap);
-}
-
-Bool
-ilbmDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if (--pPixmap->refcnt)
- return(TRUE);
- xfree(pPixmap);
- return(TRUE);
-}
-
-
-PixmapPtr
-ilbmCopyPixmap(pSrc)
- register PixmapPtr pSrc;
-{
- register PixmapPtr pDst;
- int size;
- ScreenPtr pScreen;
-
- size = pSrc->drawable.height * pSrc->devKind * pSrc->drawable.depth;
- pScreen = pSrc->drawable.pScreen;
- pDst = (*pScreen->CreatePixmap)(pScreen, pSrc->drawable.width,
- pSrc->drawable.height, pSrc->drawable.depth);
- 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
-ilbmPadPixmap(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 d;
- 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 (d = 0; d < pPixmap->drawable.depth; d++) {
- 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
-ilbmXRotatePixmap(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 * pPix->drawable.depth;
- 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. ilbmUnnatural<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
-ilbmYRotatePixmap(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;
- int aux;
-
- if (pPix == NullPixmap)
- return;
- height = (int) pPix->drawable.height;
- rh %= height;
- if (rh < 0)
- rh += height;
-
- aux = pPix->devKind*pPix->drawable.depth;
- nbyDown = rh*aux;
- nbyUp = height*aux-nbyDown;
-
- if (!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp)))
- return;
-
- pbase = (char *)pPix->devPrivate.ptr;
- 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 */
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-ilbmCopyRotatePixmap(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) &&
- (pdstPix->drawable.depth == psrcPix->drawable.depth)) {
- memmove((char *)pdstPix->devPrivate.ptr, (char *)psrcPix->devPrivate.ptr,
- psrcPix->drawable.height * psrcPix->devKind *
- psrcPix->drawable.depth);
- 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 = ilbmCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- ilbmPadPixmap(pdstPix);
- if (xrot)
- ilbmXRotatePixmap(pdstPix, xrot);
- if (yrot)
- ilbmYRotatePixmap(pdstPix, yrot);
-}
diff --git a/ilbm/ilbmply1rct.c b/ilbm/ilbmply1rct.c
deleted file mode 100644
index 490551db7..000000000
--- a/ilbm/ilbmply1rct.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmply1rct.c,v 3.0 1996/08/18 01:54:02 dawes Exp $ */
-/*
- * $XConsortium: ilbmply1rct.c,v 1.9 94/04/17 20:28:28 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ilbm.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))
-#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))
-#define intToX(i) ((int)((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
-
-void
-ilbmFillPolygonSolid (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int shape;
- int mode;
- int count;
- DDXPointPtr ptsIn;
-{
- ilbmPrivGCPtr devPriv;
- int nlwidth;
- PixelType *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p, *vertex2p;
- int *endp;
- int x1, x2;
- int dx1, dx2;
- int dy1, dy2;
- int e1, e2;
- int step1, step2;
- int sign1, sign2;
- int h;
- int l, r;
- PixelType mask, bits = ~((PixelType)0);
- int nmiddle;
- register unsigned char *rrops;
- register int n;
- register int d;
- int auxDst;
- int depthDst;
- register PixelType *pdst;
-
- devPriv = (ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr);
-
- if (mode == CoordModePrevious || shape != Convex ||
- REGION_NUM_RECTS(pGC->pCompositeClip) != 1) {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
- origin = *((int *) &pDrawable->x);
- origin -= (origin & 0x8000) << 1;
- extents = &pGC->pCompositeClip->extents;
- vertex1 = *((int *) &extents->x1) - origin;
- vertex2 = *((int *) &extents->x2) - origin - 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;
- }
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- addrl);
- rrops = devPriv->rrops;
- addrl = ilbmScanlineDelta(addrl, y + pDrawable->y, auxDst);
- 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);
- for (pdst = addr, d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- *pdst |= mask;
- break;
- case RROP_INVERT:
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- } else {
- if (c) {
- mask = SCRRIGHT(bits, c);
- for (pdst = addr, d = 0; d < depthDst; d++, pdst += nlwidth) { /* @@@ NEXT PLANE @@@ */
- switch (rrops[d]) {
- case RROP_BLACK:
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- *pdst |= mask;
- break;
- case RROP_INVERT:
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- nmiddle += c - PPW;
- addr++;
- }
- nmiddle >>= PWSH;
- mask = ~SCRRIGHT(bits, r & PIM);
-
- for (d = 0; d < depthDst; d++, addr += nlwidth) { /* @@@ NEXT PLANE @@@ */
- n = nmiddle;
- pdst = addr;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- Duff (n, *pdst++ = 0;)
- if (mask)
- *pdst &= ~mask;
- break;
- case RROP_WHITE:
- Duff (n, *pdst++ = ~0;);
- if (mask)
- *pdst |= mask;
- break;
- case RROP_INVERT:
- Duff (n, *pdst++ ^= ~0;);
- if (mask)
- *pdst ^= mask;
- break;
- case RROP_NOP:
- break;
- }
- }
- }
- if (!--h)
- break;
- ilbmScanlineInc(addrl, auxDst);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- ilbmScanlineInc(addrl, auxDst);
- }
-}
diff --git a/ilbm/ilbmplygblt.c b/ilbm/ilbmplygblt.c
deleted file mode 100644
index 9b60e1100..000000000
--- a/ilbm/ilbmplygblt.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmplygblt.c,v 3.0 1996/08/18 01:54:03 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmimggblt.c,v 5.17 94/04/17 20:28:25 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.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 <= 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.)
-
-*/
-
-void
-ilbmPolyGlyphBlt (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 */
-
- register int d;
- int depthDst;
- int auxDst;
- int hSave;
- int w; /* width of glyph in bits */
- int h; /* height of glyph */
- int widthGlyph; /* width of glyph, in bytes */
- unsigned char *rrops;
- register unsigned char *pglyph;
- /* pointer to current row of glyph */
- unsigned char *pglyphSave;
-
- /* 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 */
- PixelType *pdstSave;
-
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- pdstBase);
-
- QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info);
-
- x += xorg;
- y += yorg;
-
- bbox.x1 = x + info.overallLeft;
- bbox.x2 = x + info.overallRight;
- bbox.y1 = y - info.overallAscent;
- bbox.y2 = y + info.overallDescent;
-
- rrops = ((ilbmPrivGCPtr) pGC->devPrivates[ilbmGCPrivateIndex].ptr)->rrops;
-
- switch (RECT_IN_REGION(pGC->pScreen, pGC->pCompositeClip, &bbox)) {
- case rgnOUT:
- break;
- case rgnIN:
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- xchar = x & PIM;
-
- while (nglyph--) {
- pci = *ppci;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
- hSave = pci->metrics.ascent + pci->metrics.descent;
- widthGlyph = GLYPHWIDTHBYTESPADDED(pci);
- /* start at top scanline of glyph */
- pdstSave = ilbmScanlineDelta(pdstBase, -pci->metrics.ascent,
- auxDst);
-
- /* find correct word in scanline and x offset within it
- for left edge of glyph
- */
- xoff = xchar + pci->metrics.leftSideBearing;
- if (xoff > PLST) {
- pdstSave++;
- xoff &= PIM;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- /* glyph all in one longword */
- maskpartialbits(xoff, w, startmask);
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- } else {
- /* glyph crosses longword boundary */
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) |= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getleftbits(pglyph, w, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) ^= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- } /* glyph crosses longwords boundary */
- } /* depth loop */
- /* 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:
- {
- ilbmTEXTPOS *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 */
- int getWidth; /* bits to get from glyph */
-
- if (!(ppos = (ilbmTEXTPOS *)ALLOCATE_LOCAL(nglyph *
- sizeof(ilbmTEXTPOS))))
- return;
-
- pdstBase = ilbmScanlineNoBankSwitch(pdstBase, x, y, auxDst);
- 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;
-
- hSave = bottomEdge - topEdge;
- if (hSave <= 0)
- continue;
-
- glyphRow = (topEdge - y) + pci->metrics.ascent;
- widthGlyph = ppos[i].widthGlyph;
- pglyphSave = FONTGLYPHBITS(pglyphBase, pci);
- pglyphSave += (glyphRow * widthGlyph);
-
- glyphCol = (leftEdge - ppos[i].xpos) -
- (pci->metrics.leftSideBearing);
- getWidth = w + glyphCol;
-
- pdstSave = ilbmScanlineDelta(ppos[i].pdstBase, -(y-topEdge),
- auxDst);
- xoff = xchar + (leftEdge - ppos[i].xpos);
- if (xoff > PLST) {
- xoff &= PIM;
- pdstSave++;
- } else if (xoff < 0) {
- xoff += PPW;
- pdstSave--;
- }
-
- for (d = 0; d < depthDst; d++) {
- h = hSave;
- pdst = pdstSave;
- pdstSave += widthDst; /* @@@ NEXT PLANE @@@ */
- pglyph = pglyphSave;
-
- if ((xoff + w) <= PPW) {
- maskpartialbits(xoff, w, startmask);
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- } else {
- maskPPWbits(xoff, w, startmask, endmask);
- nFirst = PPW - xoff;
- switch (rrops[d]) {
- case RROP_WHITE:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst |= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) |= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_BLACK:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst &= ~(SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) &= ~(SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc);
- *pdst ^= (SCRRIGHT(tmpSrc, xoff) & startmask);
- *(pdst+1) ^= (SCRLEFT(tmpSrc, nFirst) & endmask);
- pglyph += widthGlyph;
- ilbmScanlineInc(pdst, auxDst);
- }
- break;
- }
- }
- } /* depth */
- } /* for each glyph */
- } /* while nbox-- */
- DEALLOCATE_LOCAL(ppos);
- break;
- }
-
- default:
- break;
- }
-}
diff --git a/ilbm/ilbmpntarea.c b/ilbm/ilbmpntarea.c
deleted file mode 100644
index f61f7fcf9..000000000
--- a/ilbm/ilbmpntarea.c
+++ /dev/null
@@ -1,656 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmpntarea.c,v 5.7 94/04/17 20:28:29 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.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.
-*/
-
-/*ARGSUSED*/
-void
-ilbmSolidFillArea(pDraw, nbox, pbox, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- register unsigned char *rrops;
-{
- 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 */
- PixelType *saveP;
- int saveH;
- int depthDst;
- int auxDst;
- register int d;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst, pbits);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
-
- saveP = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- for (d = 0; d < depthDst; d++) {
- h = saveH;
- p = saveP;
- saveP += nlwidth; /* @@@ NEXT PLANE @@@ */
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- Duff(h, *p &= ~startmask; ilbmScanlineInc(p, nlwExtra));
- break;
- case RROP_WHITE:
- Duff(h, *p |= startmask; ilbmScanlineInc(p, nlwExtra));
- break;
- case RROP_INVERT:
- Duff(h, *p ^= startmask; ilbmScanlineInc(p, nlwExtra));
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ..) */
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++) {
- h = saveH;
- p = saveP;
- saveP += nlwidth; /* @@@ NEXT PLANE @@@ */
- nlwExtra = auxDst - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- *p &= ~startmask;
- p++;
- Duff(nlw, *p++ = 0);
- *p &= ~endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- *p |= startmask;
- p++;
- Duff(nlw, *p++ = ~0);
- *p |= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- *p ^= startmask;
- p++;
- Duff(nlw, *p++ ^= ~0);
- *p ^= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- *p &= ~startmask;
- p++;
- Duff(nlw, *p++ = 0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- *p |= startmask;
- p++;
- Duff(nlw, *p++ = ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- *p ^= startmask;
- p++;
- Duff(nlw, *p++ ^= ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- }
- } else if (!startmask && endmask) {
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = 0);
- *p &= ~endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = ~0);
- *p |= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= ~0);
- *p ^= endmask;
- ilbmScanlineInc(p, nlwExtra);
- }
- case RROP_NOP:
- break;
- }
- } else { /* no ragged bits at either end */
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = 0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ = ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= ~0);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- }
- } /* for (d = 0 ... ) */
- }
- 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.
-*/
-
-/*ARGSUSED*/
-void
-ilbmStippleAreaPPW(pDraw, nbox, pbox, pstipple, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- PixmapPtr pstipple;
- unsigned char *rrops;
-{
- 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 */
- int auxDst;
- int depthDst;
- int d;
- int saveIy;
- register int iy; /* index of current scanline in tile */
- PixelType *pbits; /* pointer to start of drawable */
- PixelType *pBase;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst, pBase);
-
- tileHeight = pstipple->drawable.height;
- psrc = (PixelType *)(pstipple->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveIy = pbox->y1 % tileHeight;
- pbits = pBase;
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
- for (d = 0; d < depthDst; d++) {
- p = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
- pbits += nlwidth; /* @@@ NEXT PLANE @@@ */
- iy = saveIy;
- h = pbox->y2 - pbox->y1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p &= ~(srcpix & startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p |= (srcpix & startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- *p ^= (srcpix & startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++) {
- nlwExtra = auxDst - nlwMiddle;
- p = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
- pbits += nlwidth; /* @@@ NEXT PLANE @@@ */
- iy = saveIy;
- h = pbox->y2 - pbox->y1;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p &= ~(srcpix & startmask);
- p++;
- Duff (nlw, *p++ &= ~srcpix);
- *p &= ~(srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p |= (srcpix & startmask);
- p++;
- Duff (nlw, *p++ |= srcpix);
- *p |= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p ^= (srcpix & startmask);
- p++;
- Duff (nlw, *p++ ^= srcpix);
- *p ^= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p &= ~(srcpix & startmask);
- p++;
- Duff(nlw, *p++ &= ~srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p |= (srcpix & startmask);
- p++;
- Duff(nlw, *p++ |= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- *p ^= (srcpix & startmask);
- p++;
- Duff(nlw, *p++ ^= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else if (!startmask && endmask) {
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ &= ~srcpix);
- *p &= ~(srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ |= srcpix);
- *p |= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= srcpix);
- *p ^= (srcpix & endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } else { /* no ragged bits at either end */
- switch (rrops[d]) {
- case RROP_BLACK:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ &= ~srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_WHITE:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ |= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- case RROP_INVERT:
- while (h--) {
- srcpix = psrc[iy];
- iy = ++iy < tileHeight ? iy : 0;
- nlw = nlwMiddle;
- Duff(nlw, *p++ ^= srcpix);
- ilbmScanlineInc(p, nlwExtra);
- }
- break;
- } /* switch */
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-ilbmStippleArea(pDraw, nbox, pbox, pTile, xOff, yOff, rrops)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- unsigned char *rrops;
-{
- register PixelType *psrc; /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- int auxDst;
- int depthDst;
- int sizeTile;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- register int rop;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst, pBase);
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind/sizeof(PixelType);
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *)pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = ilbmScanline(pBase, pbox->x1, pbox->y1, auxDst);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- rop = rrops[d];
-
- while (width > 0) {
- psrc = pStartTile;
- 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;
- } /* while (width > 0) */
-
- pStartDst += auxDst;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
diff --git a/ilbm/ilbmpntwin.c b/ilbm/ilbmpntwin.c
deleted file mode 100644
index b12a121c8..000000000
--- a/ilbm/ilbmpntwin.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ilbmpntwin.c,v 5.12 94/04/17 20:28:30 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.h"
-#include "maskbits.h"
-#include "mi.h"
-
-void
-ilbmPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register ilbmPrivWin *pPrivWin;
- unsigned char rrops[AFB_MAX_DEPTH];
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- return;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- return;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground) {
- ilbmTileAreaPPWCopy((DrawablePtr)pWin,
- REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBackground, ~0);
- return;
- } else {
- ilbmTileAreaCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pWin->background.pixmap, 0, 0, ~0);
- return;
- }
- break;
- case BackgroundPixel:
- ilbmReduceRop(GXcopy, pWin->background.pixel, ~0,
- pWin->drawable.depth, rrops);
- ilbmSolidFillArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), rrops);
- return;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel) {
- ilbmReduceRop(GXcopy, pWin->border.pixel, ~0, pWin->drawable.depth,
- rrops);
- ilbmSolidFillArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), rrops);
- return;
- } else if (pPrivWin->fastBorder) {
- ilbmTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion), GXcopy,
- pPrivWin->pRotatedBorder, ~0);
- return;
- }
- break;
- }
- miPaintWindow(pWin, pRegion, what);
-}
diff --git a/ilbm/ilbmpolypnt.c b/ilbm/ilbmpolypnt.c
deleted file mode 100644
index 87666d7b6..000000000
--- a/ilbm/ilbmpolypnt.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmpolypnt.c,v 3.0 1996/08/18 01:54:07 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmpolypnt.c,v 5.6 94/04/17 20:28:30 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.h"
-#include "maskbits.h"
-
-void
-ilbmPolyPoint(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 int d;
-
- register PixelType *addrl;
- PixelType *pBase;
- PixelType *pBaseSave;
- int nlwidth;
- int auxDst;
- int depthDst;
-
- int nptTmp;
- register xPoint *ppt;
-
- register int x;
- register int y;
- register unsigned char *rrops;
- ilbmPrivGC *pGCPriv;
-
- pGCPriv = (ilbmPrivGC *) pGC->devPrivates[ilbmGCPrivateIndex].ptr;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, nlwidth, auxDst, depthDst,
- pBaseSave);
-
- rrops = pGCPriv->rrops;
- 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++)
- for (d = 0, pBase = pBaseSave; d < depthDst; d++, pBase += nlwidth) { /* @@@ NEXT PLANE @@@ */
- addrl = pBase;
-
- switch (rrops[d]) {
- case 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))
- *ilbmScanline(addrl, x, y, auxDst) &= rmask[x & PIM];
- }
- break;
-
- case 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))
- *ilbmScanline(addrl, x, y, auxDst) |= mask[x & PIM];
- }
- break;
-
- case 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))
- *ilbmScanline(addrl, x, y, auxDst) ^= mask[x & PIM];
- }
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
-}
diff --git a/ilbm/ilbmpushpxl.c b/ilbm/ilbmpushpxl.c
deleted file mode 100644
index 337172703..000000000
--- a/ilbm/ilbmpushpxl.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmpushpxl.c,v 3.0 1996/08/18 01:54:08 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmpushpxl.c,v 5.6 94/04/17 20:28:31 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "miscstruct.h"
-#include "maskbits.h"
-#include "regionstr.h"
-#include "ilbm.h"
-
-/* ilbmSolidPP 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)
-*/
-
-/* ilbmSolidPP -- 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
-ilbmSolidPP(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)ALLOCATE_LOCAL(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;
- }
- ilbmDoBitblt((DrawablePtr)pBitMap, pDrawable, alu, &rgnDst, pptSrc,
- pGC->planemask);
- DEALLOCATE_LOCAL(pptSrc);
- }
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
-}
-
-#define NPT 128
-
-/* ilbmPushPixels -- 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
-ilbmPushPixels(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 *)
- (((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);
- }
-}
diff --git a/ilbm/ilbmscrinit.c b/ilbm/ilbmscrinit.c
deleted file mode 100644
index 37425d0d6..000000000
--- a/ilbm/ilbmscrinit.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmscrinit.c,v 3.4 1998/07/26 01:53:45 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmscrinit.c,v 5.17 94/04/17 20:28:34 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#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 "ilbm.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "migc.h"
-#include "servermd.h"
-
-#ifdef PIXMAP_PER_WINDOW
-int frameWindowPrivateIndex;
-#endif
-int ilbmWindowPrivateIndex;
-int ilbmGCPrivateIndex;
-int ilbmScreenPrivateIndex;
-
-static unsigned long ilbmGeneration = 0;
-
-BSFuncRec ilbmBSFuncRec = {
- ilbmSaveAreas,
- ilbmRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-Bool
-ilbmCloseScreen(index, pScreen)
- int index;
- ScreenPtr pScreen;
-{
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
- for (d = 0; d < pScreen->numDepths; d++)
- xfree(depths[d].vids);
- xfree(depths);
- xfree(pScreen->visuals);
- xfree(pScreen->devPrivates[ilbmScreenPrivateIndex].ptr);
- return(TRUE);
-}
-
-Bool
-ilbmCreateScreenResources(pScreen)
- ScreenPtr pScreen;
-{
- Bool retval;
-
- pointer oldDevPrivate = pScreen->devPrivate;
-
- pScreen->devPrivate = pScreen->devPrivates[ilbmScreenPrivateIndex].ptr;
- retval = miCreateScreenResources(pScreen);
-
- /* Modify screen's pixmap devKind value stored off devPrivate to
- * be the width of a single plane in longs rather than the width
- * of a chunky screen in longs as incorrectly setup by the mi routine.
- */
- ((PixmapPtr)pScreen->devPrivate)->devKind = BitmapBytePad(pScreen->width);
- pScreen->devPrivates[ilbmScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- return(retval);
-}
-
-Bool
-ilbmAllocatePrivates(pScreen, pWinIndex, pGCIndex)
- ScreenPtr pScreen;
- int *pWinIndex, *pGCIndex;
-{
- if (ilbmGeneration != serverGeneration) {
-#ifdef PIXMAP_PER_WINDOW
- frameWindowPrivateIndex = AllocateWindowPrivateIndex();
-#endif
- ilbmWindowPrivateIndex = AllocateWindowPrivateIndex();
- ilbmGCPrivateIndex = AllocateGCPrivateIndex();
- ilbmGeneration = serverGeneration;
- }
- if (pWinIndex)
- *pWinIndex = ilbmWindowPrivateIndex;
- if (pGCIndex)
- *pGCIndex = ilbmGCPrivateIndex;
-
- ilbmScreenPrivateIndex = AllocateScreenPrivateIndex();
- pScreen->GetWindowPixmap = ilbmGetWindowPixmap;
- pScreen->SetWindowPixmap = ilbmSetWindowPixmap;
- return(AllocateWindowPrivate(pScreen, ilbmWindowPrivateIndex, sizeof(ilbmPrivWin)) &&
- AllocateGCPrivate(pScreen, ilbmGCPrivateIndex, sizeof(ilbmPrivGC)));
-}
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-ilbmScreenInit(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 */
-{
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
- pointer oldDevPrivate;
-
- rootdepth = 0;
- if (!ilbmInitVisuals(&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual, 256, 8)) {
- ErrorF("ilbmInitVisuals: FALSE\n");
- return FALSE;
- }
- if (!ilbmAllocatePrivates(pScreen,(int *)NULL, (int *)NULL)) {
- ErrorF("ilbmAllocatePrivates: FALSE\n");
- return FALSE;
- }
-
- pScreen->defColormap = (Colormap)FakeClientID(0);
- /* whitePixel, blackPixel */
- pScreen->blackPixel = 0;
- pScreen->whitePixel = 0;
- pScreen->QueryBestSize = ilbmQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = ilbmGetImage;
- pScreen->GetSpans = ilbmGetSpans;
- pScreen->CreateWindow = ilbmCreateWindow;
- pScreen->DestroyWindow = ilbmDestroyWindow;
- pScreen->PositionWindow = ilbmPositionWindow;
- pScreen->ChangeWindowAttributes = ilbmChangeWindowAttributes;
- pScreen->RealizeWindow = ilbmMapWindow;
- pScreen->UnrealizeWindow = ilbmUnmapWindow;
- pScreen->PaintWindowBackground = ilbmPaintWindow;
- pScreen->PaintWindowBorder = ilbmPaintWindow;
- pScreen->CopyWindow = ilbmCopyWindow;
- pScreen->CreatePixmap = ilbmCreatePixmap;
- pScreen->DestroyPixmap = ilbmDestroyPixmap;
- pScreen->RealizeFont = ilbmRealizeFont;
- pScreen->UnrealizeFont = ilbmUnrealizeFont;
- pScreen->CreateGC = ilbmCreateGC;
- pScreen->CreateColormap = ilbmInitializeColormap;
- pScreen->DestroyColormap = (void (*)())NoopDDA;
- pScreen->InstallColormap = ilbmInstallColormap;
- pScreen->UninstallColormap = ilbmUninstallColormap;
- pScreen->ListInstalledColormaps = ilbmListInstalledColormaps;
- pScreen->StoreColors = (void (*)())NoopDDA;
- pScreen->ResolveColor = ilbmResolveColor;
- pScreen->BitmapToRegion = ilbmPixmapToRegion;
- oldDevPrivate = pScreen->devPrivate;
- if (!miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, rootdepth,
- ndepths, depths, defaultVisual, nvisuals, visuals)) {
- ErrorF("miScreenInit: FALSE\n");
- return FALSE;
- }
-
- pScreen->CloseScreen = ilbmCloseScreen;
- pScreen->CreateScreenResources = ilbmCreateScreenResources;
- pScreen->BackingStoreFuncs = ilbmBSFuncRec;
-
- pScreen->devPrivates[ilbmScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-
- return TRUE;
-}
-
-PixmapPtr
-ilbmGetWindowPixmap(pWin)
- WindowPtr pWin;
-{
-#ifdef PIXMAP_PER_WINDOW
- return (PixmapPtr)(pWin->devPrivates[frameWindowPrivateIndex].ptr);
-#else
- ScreenPtr pScreen = pWin->drawable.pScreen;
-
- return (* pScreen->GetScreenPixmap)(pScreen);
-#endif
-}
-
-void
-ilbmSetWindowPixmap(pWin, pPix)
- WindowPtr pWin;
- PixmapPtr pPix;
-{
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr = (pointer)pPix;
-#else
- (* pWin->drawable.pScreen->SetScreenPixmap)(pPix);
-#endif
-}
diff --git a/ilbm/ilbmsetsp.c b/ilbm/ilbmsetsp.c
deleted file mode 100644
index 0e2df7028..000000000
--- a/ilbm/ilbmsetsp.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmsetsp.c,v 3.0 1996/08/18 01:54:10 dawes Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmsetsp.c,v 5.8 94/04/17 20:28:34 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.h"
-#include "maskbits.h"
-
-#include "servermd.h"
-
-
-/* ilbmSetScanline -- 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.)
- */
-ilbmSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst, auxDst,
- depthDst, widthSrc)
- 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 auxDst;
- int depthDst;
- int widthSrc; /* 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;
- PixelType *savePsrc = psrc + ((xStart - xOrigin) >> PWSH);
- int nlMiddle, nl;
- int d;
-
- for (d = 0; d < depthDst; d++) {
- pdst = ilbmScanline(pdstBase, xStart, y, auxDst) + widthDst * d; /* @@@ NEXT PLANE @@@ */
- psrc = savePsrc + widthSrc * d; /* @@@ NEXT PLANE @@@ */
- 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
-ilbmSetSpans(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 *)pcharsrc;
- PixelType *pdstBase; /* start of dst bitmap */
- int widthDst; /* width of bitmap in words */
- int auxDst;
- int depthDst;
- int widthSrc;
- 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;
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- 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);
- widthSrc = PixmapWidthInPadUnits(*pwidth, 1);
- ilbmSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu, pdstBase,
- widthDst, auxDst, depthDst, widthSrc);
- 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 += widthSrc * depthDst;
- 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);
- widthSrc = PixmapWidthInPadUnits(*pwidth, 1);
- ilbmSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, auxDst, depthDst,
- widthSrc);
- }
-
- }
- }
- psrc += widthSrc * depthDst;
- ppt++;
- pwidth++;
- }
- }
-}
diff --git a/ilbm/ilbmtegblt.c b/ilbm/ilbmtegblt.c
deleted file mode 100644
index c1c1eac49..000000000
--- a/ilbm/ilbmtegblt.c
+++ /dev/null
@@ -1,599 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmtegblt.c,v 3.0 1996/08/18 01:54:11 dawes Exp $ */
-/* $XConsortium: ilbmtegblt.c,v 5.14 94/04/17 20:28:35 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ilbm.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.
-
-*/
-
-#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
-
-/*
- * 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
-#if PPW == 32
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4++ << ShiftAmnt, xoff4);
-#else /* PPW */
-#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \
- (SCRRIGHT (*char2++ << ShiftAmnt, xoff2) << 32 ) | \
- (SCRRIGHT (*char3++ << ShiftAmnt, xoff3) << 32 ) | \
- (SCRRIGHT (*char4++ << ShiftAmnt, xoff4) << 32 ) | \
- (*char5++ << ShiftAmnt) | \
- SCRRIGHT (*char6++ << ShiftAmnt, xoff6) | \
- SCRRIGHT (*char7++ << ShiftAmnt, xoff7) | \
- SCRRIGHT (*char8++ << ShiftAmnt, xoff8);
-#endif /* PPW */
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#if PPW == 32
-#define GetBits4 c = (*char1++ << ShiftAmnt) | \
- SCRRIGHT (*char2 << ShiftAmnt, xoff2) | \
- SCRRIGHT (*char3 << ShiftAmnt, xoff3) | \
- SCRRIGHT (*char4 << ShiftAmnt, xoff4); \
- char2++; char3++; char4++;
-#else /* PPW == 64 */
-#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \
- (SCRRIGHT (*char2 << ShiftAmnt, xoff2) << 32 ) | \
- (SCRRIGHT (*char3 << ShiftAmnt, xoff3) << 32 ) | \
- (SCRRIGHT (*char4 << ShiftAmnt, xoff4) << 32 ) | \
- (*char5++ << ShiftAmnt) | \
- SCRRIGHT (*char6 << ShiftAmnt, xoff6) | \
- SCRRIGHT (*char7 << ShiftAmnt, xoff7) | \
- SCRRIGHT (*char8 << ShiftAmnt, xoff8); \
- char2++; char3++; char4++; char6++; char7++; char8++;
-#endif /* PPW */
-#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */
-
-#else /* (BITMAP_BIT_ORDER != MSBFirst) || (GLYPHPADBYTES == 4) */
-
-#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER
-#if PPW == 32
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2++, xoff2) | \
- SCRRIGHT (*char3++, xoff3) | \
- SCRRIGHT (*char4++, xoff4);
-#else /* PPW == 64 */
-#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \
- (SCRRIGHT (*char2++, xoff2) << 64 ) | \
- (SCRRIGHT (*char3++, xoff3) << 64 ) | \
- (SCRRIGHT (*char4++, xoff4) << 64 ) | \
- SCRRIGHT (*char5++, xoff5) | \
- SCRRIGHT (*char6++, xoff6) | \
- SCRRIGHT (*char7++, xoff7) | \
- SCRRIGHT (*char8++, xoff8));
-#endif /* PPW */
-#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */
-#if PPW == 32
-#define GetBits4 c = *char1++ | \
- SCRRIGHT (*char2, xoff2) | \
- SCRRIGHT (*char3, xoff3) | \
- SCRRIGHT (*char4, xoff4); \
- char2++; char3++; char4++;
-#else /* PPW == 64 */
-#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \
- (SCRRIGHT (*char2, xoff2) << 64 ) | \
- (SCRRIGHT (*char3, xoff3) << 64 ) | \
- (SCRRIGHT (*char4, xoff4) << 64 ) | \
- SCRRIGHT (*char5, xoff5) | \
- SCRRIGHT (*char6, xoff6) | \
- SCRRIGHT (*char7, xoff7) | \
- SCRRIGHT (*char8, xoff8)); \
- char2++; char3++; char4++; \
- char5++; char6++; char7++; char8++;
-#endif /* PPW */
-#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
-ilbmTEGlyphBlt (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;
- int auxDst;
- int depthDst;
- PixelType *saveDst;
- register PixelType *dst;
- register PixelType c;
- register int d;
- register int xoff1, xoff2, xoff3, xoff4;
- register glyphPointer char1, char2, char3, char4;
- glyphPointer schar1, schar2, schar3, schar4;
-#if PPW == 64
- register int xoff5, xoff6, xoff7, xoff8;
- register glyphPointer char5, char6, char7, char8;
- glyphPointer schar5, schar6, schar7, schar8;
-#endif /* PPW */
-
- unsigned char *rrops;
-#ifdef USE_LEFTBITS
- register PixelType glyphMask;
- register PixelType tmpSrc;
- register int glyphBytes;
-#endif
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDrawable, widthDst, auxDst, depthDst,
- 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);
-
- rrops = ((ilbmPrivGCPtr) pGC->devPrivates[ilbmGCPrivateIndex].ptr)->rropOS;
-
- 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...
- */
- ilbmImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
- case rgnOUT:
- return;
- }
- pdstBase = ilbmScanlineDeltaNoBankSwitch(pdstBase, ypos, auxDst);
- 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;
-#if PPW == 64
- xoff5 = xoff4 + widthGlyph;
- xoff6 = xoff5 + widthGlyph;
- xoff7 = xoff6 + widthGlyph;
- xoff8 = xoff7 + widthGlyph;
-#endif /* PPW */
- schar1 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar2 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar3 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar4 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
-#if PPW == 64
- schar5 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar6 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar7 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
- schar8 = (glyphPointer)FONTGLYPHBITS(pglyphBase,(*ppci++));
-#endif /* PPW */
-
- hTmp = h;
- saveDst = ilbmScanlineOffset(pdstBase, (xpos >> PWSH)); /* switch now */
-
-#ifndef FASTCHARS
- if (xoff1 + widthGlyphs <= PPW) {
- maskpartialbits (xoff1, widthGlyphs, startmask);
-#endif
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
-#ifdef FASTCHARS
- FASTPUTBITS(0, xoff1, widthGlyphs, dst);
-#else
- *(dst) &= ~startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
-#ifdef FASTCHARS
- FASTPUTBITS(~0, xoff1, widthGlyphs, dst);
-#else
- *(dst) |= startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
- /* XXX */
- while (hTmp--) {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-# endif
- FASTPUTBITS(~c, xoff1, widthGlyphs, dst);
-#else
- *(dst) = (*dst) & ~startmask | ~SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
-#ifdef FASTCHARS
-# if BITMAP_BIT_ORDER == MSBFirst
- c >>= PPW - widthGlyphs;
-#endif
- FASTPUTBITS(c, xoff1, widthGlyphs, dst);
-#else
- *(dst) = (*dst) & ~startmask | SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch (rrops[d]) */
- } /* for (d = ... ) */
-#ifndef FASTCHARS
- } else {
- maskPPWbits (xoff1, widthGlyphs, startmask, endmask);
- nfirst = PPW - xoff1;
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- dst[0] &= ~startmask;
- dst[1] &= ~endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- dst[0] |= startmask;
- dst[1] |= endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
- dst[0] = dst[0] & ~startmask |
- ~SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- ~SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- char1 = schar1;
- char2 = schar2;
- char3 = schar3;
- char4 = schar4;
-
- while (hTmp--) {
- GetBits4
- dst[0] = dst[0] & ~startmask |
- SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
-
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ... ) */
- }
-#endif
- xpos += widthGlyphs;
- }
- }
-
- while (nglyph--) {
- xoff1 = xpos & PIM;
- schar1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++));
- hTmp = h;
- saveDst = ilbmScanlineOffset(pdstBase, (xpos >> PWSH));
-
- if (xoff1 + widthGlyph <= PPW) {
- maskpartialbits (xoff1, widthGlyph, startmask);
-
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
- char1 = schar1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- (*dst) &= ~startmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- (*dst) |= startmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- 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 (~c,xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = (*dst) & ~startmask | ~SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- 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 (c,xoff1,widthGlyph,dst);
-#else
- GetBits1
- (*dst) = (*dst) & ~startmask | SCRRIGHT(c, xoff1) & startmask;
-#endif
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- } else {
- maskPPWbits (xoff1, widthGlyph, startmask, endmask);
- nfirst = PPW - xoff1;
-
- for (d = 0; d < depthDst; d++) {
- hTmp = h;
- dst = saveDst;
- saveDst += widthDst; /* @@@ NEXT PLANE @@@ */
- char1 = schar1;
-
- switch (rrops[d]) {
- case RROP_BLACK:
- while (hTmp--) {
- dst[0] &= ~startmask;
- dst[1] &= ~endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_WHITE:
- while (hTmp--) {
- dst[0] |= startmask;
- dst[1] |= endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_INVERT:
- while (hTmp--) {
- GetBits1
- dst[0] = dst[0] & ~startmask |
- ~SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- ~SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_COPY:
- while (hTmp--) {
- GetBits1
- dst[0] = dst[0] & ~startmask |
- SCRRIGHT(c,xoff1) & startmask;
- dst[1] = dst[1] & ~endmask |
- SCRLEFT(c,nfirst) & endmask;
- ilbmScanlineInc(dst, auxDst);
- }
- break;
- case RROP_NOP:
- break;
- } /* switch */
- } /* for (d = ...) */
- }
-
- xpos += widthGlyph;
- }
-}
diff --git a/ilbm/ilbmtile.c b/ilbm/ilbmtile.c
deleted file mode 100644
index b35d00028..000000000
--- a/ilbm/ilbmtile.c
+++ /dev/null
@@ -1,857 +0,0 @@
-/* $XFree86$ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: ilbmtile.c,v 5.8 94/04/17 20:28:36 dpw Exp $ */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#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 "ilbm.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(ilbmTileAreaPPW)(pDraw, nbox, pbox, alu, ptile, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
- unsigned long planemask;
-{
- 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 */
- int auxDst;
- int depthDst;
- int tlwidth;
- register int d;
- 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 */
- PixelType *saveP;
- PixelType *pSaveSrc;
- int saveH;
- int saveIY;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- tlwidth = ptile->devKind/sizeof(PixelType);
- pSaveSrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
- saveIY = pbox->y1 % tileHeight;
- saveP = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
- psrc = pSaveSrc;
-
- if (((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
- for (d = 0; d < depthDst; d++, saveP += nlwidth, psrc += tileHeight) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
-
- while (h--) {
- srcpix = psrc[iy];
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth, psrc += tileHeight) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
- nlwExtra = auxDst - 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);
- ilbmScanlineInc(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++;
- }
- ilbmScanlineInc(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);
- ilbmScanlineInc(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++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-MROP_NAME(ilbmTileArea)(pDraw, nbox, pbox, alu, pTile, xOff, yOff, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- register PixelType tmpsrc, tmpdst;
- int auxDst;
- int depthDst;
- int sizeTile;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pBase);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind/sizeof(PixelType);
- sizeTile = tlwidth * tileHeight;
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = ilbmScanline(pBase, pbox->x1, pbox->y1, auxDst);
-
- for (d = 0; d < depthDst; d++, psrcT += sizeTile, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- while (width > 0) {
- psrc = pStartTile;
- 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;
-
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
-
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- tmpsrc = *psrc;
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
- } 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) {
- tmpsrc = *psrc;
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), nstart, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- getbits (psrc, nstart, PPW, tmpsrc);
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++;*/
- psrc++;
- }
-
- if (endmask) {
- getbits (psrc, nstart, nend, tmpsrc);
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += auxDst;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
-
-void
-MROP_NAME(ilbmOpaqueStippleAreaPPW)(pDraw, nbox, pbox, alu, ptile,
- rropsOS, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr ptile;
- register unsigned char *rropsOS;
- unsigned long planemask;
-{
- 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 */
- int auxDst;
- int depthDst;
- register int d;
- 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 */
- PixelType *saveP;
- int saveH;
- int saveIY;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pbits);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = ptile->drawable.height;
- psrc = (PixelType *)(ptile->devPrivate.ptr);
-
- while (nbox--) {
- w = pbox->x2 - pbox->x1;
- saveH = pbox->y2 - pbox->y1;
- saveIY = pbox->y1 % tileHeight;
- saveP = ilbmScanline(pbits, pbox->x1, pbox->y1, auxDst);
-
- if ( ((pbox->x1 & PIM) + w) < PPW) {
- maskpartialbits(pbox->x1, w, startmask);
- nlwExtra = auxDst;
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
-
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- *p = MROP_MASK(srcpix,*p,startmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } else {
- maskbits(pbox->x1, w, startmask, endmask, nlwMiddle);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- p = saveP;
- h = saveH;
- iy = saveIY;
- nlwExtra = auxDst - nlwMiddle;
-
- if (startmask && endmask) {
- nlwExtra -= 1;
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- 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);
- ilbmScanlineInc(p, nlwExtra);
- }
- } else if (startmask && !endmask) {
- nlwExtra -= 1;
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- *p = MROP_MASK(srcpix,*p,startmask);
- p++;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- } else if (!startmask && endmask) {
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID(srcpix,*p);
- p++;
- }
-
- *p = MROP_MASK(srcpix,*p,endmask);
- ilbmScanlineInc(p, nlwExtra);
- }
- } else { /* no ragged bits at either end */
- while (h--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- srcpix = 0;
- break;
- case RROP_WHITE:
- srcpix = ~0;
- break;
- case RROP_COPY:
- srcpix = psrc[iy];
- break;
- case RROP_INVERT:
- srcpix = ~psrc[iy];
- break;
- }
- iy++;
- if (iy == tileHeight)
- iy = 0;
- nlw = nlwMiddle;
- while (nlw--) {
- *p = MROP_SOLID (srcpix,*p);
- p++;
- }
- ilbmScanlineInc(p, nlwExtra);
- }
- }
- } /* for (d = ...) */
- }
- pbox++;
- }
-}
-
-void
-MROP_NAME(ilbmOpaqueStippleArea)(pDraw, nbox, pbox, alu, pTile, xOff, yOff,
- rropsOS, planemask)
- DrawablePtr pDraw;
- int nbox;
- BoxPtr pbox;
- int alu;
- PixmapPtr pTile;
- int xOff;
- int yOff;
- register unsigned char *rropsOS;
- unsigned long planemask;
-{
- register PixelType *psrc;
- /* pointer to bits in tile, if needed */
- int nlwidth; /* width in longwords of the drawable */
- MROP_DECLARE_REG ()
- register int h; /* height of current box */
- register PixelType *pdst; /* pointer to bits we're writing */
- register PixelType tmpsrc, tmpdst;
- int auxDst;
- int depthDst;
- int tileLine;
- int iline;
- int w, width, x, xSrc, ySrc, srcStartOver, nend;
- int tlwidth, rem, tileWidth, tileHeight, endinc;
- int saveW;
- PixelType *psrcT;
- int d;
- int nstart;
- PixelType startmask;
- PixelType endmask; /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
- int iy;
- PixelType *pBase; /* pointer to start of drawable */
- PixelType *saveP;
- PixelType *pStartDst;
- PixelType *pStartTile;
- int saveH;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- pBase);
-
- MROP_INITIALIZE(alu,~0)
-
- tileHeight = pTile->drawable.height;
- tileWidth = pTile->drawable.width;
- tlwidth = pTile->devKind/sizeof(PixelType);
-
- xSrc = pDraw->x + ((xOff % tileWidth) - tileWidth);
- ySrc = pDraw->y + ((yOff % tileHeight) - tileHeight);
-
- while (nbox--) {
- saveW = pbox->x2 - pbox->x1;
- iline = (pbox->y1 - ySrc) % tileHeight;
- psrcT = (PixelType *) pTile->devPrivate.ptr;
- tileLine = iline * tlwidth;
- saveH = pbox->y2 - pbox->y1;
- saveP = ilbmScanline(pBase, pbox->x1, pbox->y1, auxDst);
-
- for (d = 0; d < depthDst; d++, saveP += nlwidth) { /* @@@ NEXT PLANE @@@ */
- if (!(planemask & (1 << d)))
- continue;
-
- h = saveH;
- pStartDst = saveP;
- pStartTile = psrcT + tileLine;
- iy = iline;
-
- while (h--) {
- x = pbox->x1;
- width = saveW;
- pdst = pStartDst;
- while (width > 0) {
- psrc = pStartTile;
- 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;
-
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits ((psrc+endinc), (rem&PIM), w, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
-
- if ((x & PIM) + w >= PPW)
- pdst++;
- } else if (((x & PIM) + w) < PPW) {
- /* doing < PPW bits is easy, and worth special-casing */
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), w, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), w, pdst);
- } 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) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- tmpsrc = *psrc;
- break;
- case RROP_INVERT:
- tmpsrc = ~*psrc;
- break;
- }
-#if (MROP) != Mcopy
- getbits (pdst, (x & PIM), nstart, tmpdst);
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, (x & PIM), nstart, pdst);
- pdst++;
- if (srcStartOver)
- psrc++;
- }
-
- while (nlMiddle--) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
- case RROP_COPY:
- getbits (psrc, nstart, PPW, tmpsrc);
- break;
- case RROP_INVERT:
- getbits (psrc, nstart, PPW, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- *pdst++ = tmpsrc;
- /*putbits (tmpsrc, 0, PPW, pdst);
- pdst++; */
- psrc++;
- }
-
- if (endmask) {
- switch (rropsOS[d]) {
- case RROP_BLACK:
- tmpsrc = 0;
- break;
- case RROP_WHITE:
- tmpsrc = ~0;
- break;
-
- case RROP_COPY:
- getbits (psrc, nstart, nend, tmpsrc);
- break;
-
- case RROP_INVERT:
- getbits (psrc, nstart, nend, tmpsrc);
- tmpsrc = ~tmpsrc;
- break;
- }
-#if (MROP) != Mcopy
- tmpdst = *pdst;
- tmpsrc = DoMergeRop (tmpsrc, tmpdst);
-#endif
- putbits (tmpsrc, 0, nend, pdst);
- }
- }
- x += w;
- width -= w;
- } /* while (width > 0) */
-
- pStartDst += auxDst;
- if (++iy >= tileHeight) {
- iy = 0;
- pStartTile = psrcT;
- } else
- pStartTile += tlwidth;
-
- } /* while (h) */
- } /* for (d = ... ) */
- pbox++;
- } /* for each box */
-}
diff --git a/ilbm/ilbmwindow.c b/ilbm/ilbmwindow.c
deleted file mode 100644
index be84fcefb..000000000
--- a/ilbm/ilbmwindow.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ilbmwindow.c,v 5.14 94/04/17 20:28:36 dpw Exp $ */
-/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "ilbm.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "maskbits.h"
-
-extern WindowPtr *WindowTable;
-
-Bool
-ilbmCreateWindow(pWin)
- register WindowPtr pWin;
-{
- register ilbmPrivWin *pPrivWin;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
-#ifdef PIXMAP_PER_WINDOW
- pWin->devPrivates[frameWindowPrivateIndex].ptr =
- pWin->pDrawable.pScreen->devPrivates[ilbmScreenPrivateIndex].ptr;
-#endif
-
- return (TRUE);
-}
-
-/* This always returns true, because Xfree can't fail. It might be possible
- * on some devices for Destroy to fail */
-Bool
-ilbmDestroyWindow(pWin)
- WindowPtr pWin;
-{
- register ilbmPrivWin *pPrivWin;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
-
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-ilbmMapWindow(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.)
- ilbmChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-
-/*ARGSUSED*/
-Bool
-ilbmPositionWindow(pWin, x, y)
- WindowPtr pWin;
- int x, y;
-{
- register ilbmPrivWin *pPrivWin;
- int reset = 0;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground) {
- ilbmXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder) {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- ilbmXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- reset = 1;
- }
- if (reset) {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.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
-ilbmUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- ilbmCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-ilbmCopyWindow(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 )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- return;
- ppt = pptSrc;
-
- for (i=nbox; --i >= 0; ppt++, pbox++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- ilbmDoBitblt((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot, GXcopy, prgnDst,
- pptSrc, ~0);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_DESTROY(pWin->drawable.pScreen, prgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivate.
-*/
-Bool
-ilbmChangeWindowAttributes(pWin, mask)
- register WindowPtr pWin;
- register unsigned long mask;
-{
- register unsigned long index;
- register ilbmPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = (ilbmPrivWin *)(pWin->devPrivates[ilbmWindowPrivateIndex].ptr);
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative && pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y)) {
- ilbmXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while (mask) {
- index = lowbit (mask);
- mask &= ~index;
- switch (index) {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- pPrivWin->fastBackground = FALSE;
- else if (pWin->backgroundState == ParentRelative) {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- ilbmXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- ilbmYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- } else if ((pWin->background.pixmap->drawable.width <= PPW) &&
- !(pWin->background.pixmap->drawable.width &
- (pWin->background.pixmap->drawable.width - 1))) {
- ilbmCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x, pWin->drawable.y);
- if (pPrivWin->pRotatedBackground) {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- } else
- pPrivWin->fastBackground = FALSE;
- } else
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if ((pWin->border.pixmap->drawable.width <= PPW) &&
- !(pWin->border.pixmap->drawable.width &
- (pWin->border.pixmap->drawable.width - 1))) {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- ilbmCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x, pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder) {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- } else
- pPrivWin->fastBorder = FALSE;
- } else
- pPrivWin->fastBorder = FALSE;
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- /* Again, we have no failure modes indicated by any of the routines
- * we've called, so we have to assume it worked */
- return (TRUE);
-}
diff --git a/ilbm/ilbmzerarc.c b/ilbm/ilbmzerarc.c
deleted file mode 100644
index ad20d614b..000000000
--- a/ilbm/ilbmzerarc.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/* $XFree86: xc/programs/Xserver/ilbm/ilbmzerarc.c,v 3.0 1996/08/18 01:54:15 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: ilbmzerarc.c,v 5.19 94/04/17 20:28:37 dpw Exp $ */
-
-/* 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
- */
-
-/* Modified jun 95 by Geert Uytterhoeven (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- to use interleaved bitplanes instead of normal bitplanes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "miscstruct.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "ilbm.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((1 << PLST)))
-#else
-#define LEFTMOST ((PixelType) LONG2CHARS(1))
-#endif
-
-#define Pixelate(base,yoff,xoff) \
-{ \
- paddr = ilbmScanlineOffset(base, (yoff) + ((xoff)>>PWSH)); \
- pmask = SCRRIGHT(LEFTMOST, (xoff) & PIM); \
- for (de = 0; de < depthDst; de++, paddr += nlwidth) /* @@@ NEXT PLANE @@@ */ \
- switch (rrops[de]) { \
- case RROP_BLACK: \
- *paddr &= ~pmask; \
- break; \
- case RROP_WHITE: \
- *paddr |= pmask; \
- break; \
- case RROP_INVERT: \
- *paddr ^= pmask; \
- break; \
- case RROP_NOP: \
- break; \
- } \
-}
-
-#define DoPix(bit,base,yoff,xoff) if (mask & bit) Pixelate(base,yoff,xoff);
-
-static void
-ilbmZeroArcSS(pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- miZeroArcRec info;
- Bool do360;
- register int de;
- 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;
- int auxDst, depthDst;
- PixelType pmask;
- register PixelType *paddr;
- register unsigned char *rrops;
-
- rrops = ((ilbmPrivGC *)(pGC->devPrivates[ilbmGCPrivateIndex].ptr))->rrops;
-
- ilbmGetPixelWidthAuxDepthAndPointer(pDraw, nlwidth, auxDst, depthDst,
- addrl);
- do360 = miZeroArcSetup(arc, &info, TRUE);
- yorgl = addrl + ((info.yorg + pDraw->y) * auxDst);
- yorgol = addrl + ((info.yorgo + pDraw->y) * auxDst);
- info.xorg += pDraw->x;
- info.xorgo += pDraw->x;
- MIARCSETUP();
- yoffset = y ? auxDst : 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 = auxDst;
- PixelType *yorghl = ilbmScanlineDeltaNoBankSwitch(yorgl, info.h, auxDst);
- int xorghp = info.xorg + info.h;
- int xorghn = info.xorg - info.h;
-
- while (1) {
- Pixelate(yorgl, yoffset, info.xorg + x);
- Pixelate(yorgl, yoffset, info.xorg - x);
- Pixelate(yorgol, -yoffset, info.xorg - x);
- Pixelate(yorgol, -yoffset, info.xorg + x);
- if (a < 0)
- break;
- Pixelate(yorghl, -xoffset, xorghp - y);
- Pixelate(yorghl, -xoffset, xorghn + y);
- Pixelate(yorghl, xoffset, xorghn + y);
- Pixelate(yorghl, xoffset, xorghp - y);
- xoffset += auxDst;
- MIARCCIRCLESTEP(yoffset += auxDst;);
- }
- x = info.w;
- yoffset = info.h * auxDst;
- } else if (do360) {
- while (y < info.h || x < info.w) {
- MIARCOCTANTSHIFT(dyoffset = auxDst;);
- 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 += auxDst;);
- }
- } else {
- while (y < info.h || x < info.w) {
- MIARCOCTANTSHIFT(dyoffset = auxDst;);
- 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 += auxDst;);
- }
- }
- 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
-ilbmZeroPolyArcSS(pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- BoxRec box;
- RegionPtr cclip;
-
- 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;
- box.x2 = box.x1 + (int)arc->width + 1;
- box.y2 = box.y1 + (int)arc->height + 1;
- if (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN)
- ilbmZeroArcSS(pDraw, pGC, arc);
- else
- miZeroPolyArc(pDraw, pGC, 1, arc);
- } else
- miPolyArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/iplan2p4/Makefile.am b/iplan2p4/Makefile.am
deleted file mode 100644
index 288ad2893..000000000
--- a/iplan2p4/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-EXTRA_DIST = \
- ipl.h \
- iplallpriv.c \
- iplbitblt.c \
- iplblt.c \
- iplbres.c \
- iplbresd.c \
- iplbstore.c \
- iplcmap.c \
- iplfillarc.c \
- iplfillrct.c \
- iplfillsp.c \
- iplgc.c \
- iplgetsp.c \
- iplhrzvert.c \
- iplimage.c \
- iplline.c \
- iplmap.h \
- iplmergerop.h \
- iplmskbits.c \
- iplmskbits.h \
- iplpack.c \
- iplpack.h \
- iplpixmap.c \
- iplply1rct.c \
- iplpntwin.c \
- iplpolypnt.c \
- iplrrop.c \
- iplrrop.h \
- iplscrinit.c \
- iplsetsp.c \
- iplsolid.c \
- ipltegblt.c \
- ipltile32.c \
- ipltileodd.c \
- iplwindow.c
diff --git a/iplan2p4/ipl.h b/iplan2p4/ipl.h
deleted file mode 100644
index 356e43367..000000000
--- a/iplan2p4/ipl.h
+++ /dev/null
@@ -1,1254 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/ipl.h,v 3.5 2001/01/30 22:06:21 tsi Exp $ */
-/* $XConsortium: ipl.h,v 5.37 94/04/17 20:28:38 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- 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 no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "pixmap.h"
-#include "region.h"
-#include "gc.h"
-#include "colormap.h"
-#include "miscstruct.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "mfb.h"
-#undef PixelType
-
-#include "iplmap.h"
-
-/*
- private filed of pixmap
- pixmap.devPrivate = (unsigned int *)pointer_to_bits
- pixmap.devKind = width_of_pixmap_in_bytes
-*/
-
-extern int iplGCPrivateIndex;
-extern int iplWindowPrivateIndex;
-
-/* private field of GC */
-typedef struct {
- unsigned char rop; /* special case rop values */
- /* next two values unused in ipl, included for compatibility with mfb */
- unsigned char ropOpStip; /* rop for opaque stipple */
- /* this value is ropFillArea in mfb, usurped for ipl */
- unsigned char oneRect; /* drawable has one clip rect */
- unsigned long xor, and; /* reduced rop values */
- unsigned short xorg[INTER_PLANES],andg[INTER_PLANES];
- } iplPrivGC;
-
-typedef iplPrivGC *iplPrivGCPtr;
-
-#define iplGetGCPrivate(pGC) ((iplPrivGCPtr)\
- (pGC)->devPrivates[iplGCPrivateIndex].ptr)
-
-#define iplGetCompositeClip(pGC) ((pGC)->pCompositeClip)
-
-/* way to carry RROP info around */
-typedef struct {
- unsigned char rop;
- unsigned long xor, and;
- unsigned short xorg[INTER_PLANES],andg[INTER_PLANES];
-} iplRRopRec, *iplRRopPtr;
-
-/* private field of window */
-typedef struct {
- unsigned char fastBorder; /* non-zero if border is 32 bits wide */
- unsigned char fastBackground;
- unsigned short unused; /* pad for alignment with Sun compiler */
- DDXPointRec oldRotate;
- PixmapPtr pRotatedBackground;
- PixmapPtr pRotatedBorder;
- } iplPrivWin;
-
-#define iplGetWindowPrivate(_pWin) ((iplPrivWin *)\
- (_pWin)->devPrivates[iplWindowPrivateIndex].ptr)
-
-
-/* ipl8bit.c */
-
-extern int iplSetStipple(
- int /*alu*/,
- unsigned long /*fg*/,
- unsigned long /*planemask*/
-);
-
-extern int iplSetOpaqueStipple(
- int /*alu*/,
- unsigned long /*fg*/,
- unsigned long /*bg*/,
- unsigned long /*planemask*/
-);
-
-extern int iplComputeClipMasks32(
- BoxPtr /*pBox*/,
- int /*numRects*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- CARD32 * /*clips*/
-);
-/* ipl8cppl.c */
-
-extern void iplCopyImagePlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern void iplCopyPlane8to1(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-/* ipl8lineCO.c */
-
-extern int ipl8LineSS1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void ipl8LineSS1Rect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void ipl8ClippedLineCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* ipl8lineCP.c */
-
-extern int ipl8LineSS1RectPreviousCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-/* ipl8lineG.c */
-
-extern int ipl8LineSS1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void ipl8ClippedLineGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* ipl8lineX.c */
-
-extern int ipl8LineSS1RectXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/,
- DDXPointPtr /*pptInitOrig*/,
- int * /*x1p*/,
- int * /*y1p*/,
- int * /*x2p*/,
- int * /*y2p*/
-);
-
-extern void ipl8ClippedLineXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x1*/,
- int /*y1*/,
- int /*x2*/,
- int /*y2*/,
- BoxPtr /*boxp*/,
- Bool /*shorten*/
-);
-/* ipl8segC.c */
-
-extern int ipl8SegmentSS1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* ipl8segCS.c */
-
-extern int ipl8SegmentSS1RectShiftCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-
-extern void ipl8SegmentSS1Rect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* ipl8segG.c */
-
-extern int ipl8SegmentSS1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* iplsegX.c */
-
-extern int ipl8SegmentSS1RectXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSegInit*/
-);
-/* iplallpriv.c */
-
-extern Bool iplAllocatePrivates(
- ScreenPtr /*pScreen*/,
- int * /*window_index*/,
- int * /*gc_index*/
-);
-/* iplbitblt.c */
-
-extern RegionPtr iplBitBlt(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- void (* /*doBitBlt*/)(),
- unsigned long /*bitPlane*/
-);
-
-extern void iplDoBitblt(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-
-extern RegionPtr iplCopyArea(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr/*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/
-);
-
-extern void iplCopyPlane1to8(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- int /*rop*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/,
- unsigned long /*bitPlane*/
-);
-
-extern RegionPtr iplCopyPlane(
- DrawablePtr /*pSrcDrawable*/,
- DrawablePtr /*pDstDrawable*/,
- GCPtr /*pGC*/,
- int /*srcx*/,
- int /*srcy*/,
- int /*width*/,
- int /*height*/,
- int /*dstx*/,
- int /*dsty*/,
- unsigned long /*bitPlane*/
-);
-/* iplbltC.c */
-
-extern void iplDoBitbltCopy(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbltG.c */
-
-extern void iplDoBitbltGeneral(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbltO.c */
-
-extern void iplDoBitbltOr(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbltX.c */
-
-extern void iplDoBitbltXor(
- DrawablePtr /*pSrc*/,
- DrawablePtr /*pDst*/,
- int /*alu*/,
- RegionPtr /*prgnDst*/,
- DDXPointPtr /*pptSrc*/,
- unsigned long /*planemask*/
-);
-/* iplbres.c */
-
-extern void iplBresS(
- int /*rop*/,
- unsigned short * /*and*/,
- unsigned short * /*xor*/,
- unsigned short * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* iplbresd.c */
-
-extern void iplBresD(
- iplRRopPtr /*rrops*/,
- int * /*pdashIndex*/,
- unsigned char * /*pDash*/,
- int /*numInDashList*/,
- int * /*pdashOffset*/,
- int /*isDoubleDash*/,
- unsigned short * /*addrl*/,
- int /*nlwidth*/,
- int /*signdx*/,
- int /*signdy*/,
- int /*axis*/,
- int /*x1*/,
- int /*y1*/,
- int /*e*/,
- int /*e1*/,
- int /*e2*/,
- int /*len*/
-);
-/* iplbstore.c */
-
-extern void iplSaveAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnSave*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-
-extern void iplRestoreAreas(
- PixmapPtr /*pPixmap*/,
- RegionPtr /*prgnRestore*/,
- int /*xorg*/,
- int /*yorg*/,
- WindowPtr /*pWin*/
-);
-/* iplcmap.c */
-
-extern int iplListInstalledColormaps(
- ScreenPtr /*pScreen*/,
- Colormap * /*pmaps*/
-);
-
-extern void iplInstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void iplUninstallColormap(
- ColormapPtr /*pmap*/
-);
-
-extern void iplResolveColor(
- unsigned short * /*pred*/,
- unsigned short * /*pgreen*/,
- unsigned short * /*pblue*/,
- VisualPtr /*pVisual*/
-);
-
-extern Bool iplInitializeColormap(
- ColormapPtr /*pmap*/
-);
-
-extern int iplExpandDirectColors(
- ColormapPtr /*pmap*/,
- int /*ndef*/,
- xColorItem * /*indefs*/,
- xColorItem * /*outdefs*/
-);
-
-extern Bool iplCreateDefColormap(
- ScreenPtr /*pScreen*/
-);
-
-extern Bool iplSetVisualTypes(
- int /*depth*/,
- int /*visuals*/,
- int /*bitsPerRGB*/
-);
-
-extern Bool iplInitVisuals(
- VisualPtr * /*visualp*/,
- DepthPtr * /*depthp*/,
- int * /*nvisualp*/,
- int * /*ndepthp*/,
- int * /*rootDepthp*/,
- VisualID * /*defaultVisp*/,
- unsigned long /*sizes*/,
- int /*bitsPerRGB*/
-);
-/* iplfillarcC.c */
-
-extern void iplPolyFillArcSolidCopy(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplfillarcG.c */
-
-extern void iplPolyFillArcSolidGeneral(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplfillrct.c */
-
-extern void iplFillBoxTileOdd(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- BoxPtr /*rects*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/
-);
-
-extern void iplFillRectTileOdd(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplPolyFillRect(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nrectFill*/,
- xRectangle * /*prectInit*/
-);
-/* iplfillsp.c */
-
-extern void iplUnnaturalTileFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void iplUnnaturalStippleFS(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ipl8Stipple32FS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-
-extern void ipl8OpaqueStipple32FS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplgc.c */
-
-extern GCOpsPtr iplMatchCommon(
- GCPtr /*pGC*/,
- iplPrivGCPtr /*devPriv*/
-);
-
-extern Bool iplCreateGC(
- GCPtr /*pGC*/
-);
-
-extern void iplValidateGC(
- GCPtr /*pGC*/,
- unsigned long /*changes*/,
- DrawablePtr /*pDrawable*/
-);
-
-/* iplgetsp.c */
-
-extern void iplGetSpans(
- DrawablePtr /*pDrawable*/,
- int /*wMax*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- char * /*pdstStart*/
-);
-/* iplglblt8.c */
-
-extern void iplPolyGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* iplglrop8.c */
-
-extern void iplPolyGlyphRop8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* iplhrzvert.c */
-
-extern int iplHorzS(
- int /*rop*/,
- unsigned short * /*and*/,
- unsigned short * /*xor*/,
- unsigned short * /*addrg*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-
-extern int iplVertS(
- int /*rop*/,
- unsigned short * /*and*/,
- unsigned short * /*xor*/,
- unsigned short * /*addrg*/,
- int /*nlwidth*/,
- int /*x1*/,
- int /*y1*/,
- int /*len*/
-);
-/* ipligblt8.c */
-
-extern void iplImageGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* iplimage.c */
-
-extern void iplPutImage(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*depth*/,
- int /*x*/,
- int /*y*/,
- int /*w*/,
- int /*h*/,
- int /*leftPad*/,
- int /*format*/,
- char * /*pImage*/
-);
-
-extern void iplGetImage(
- DrawablePtr /*pDrawable*/,
- int /*sx*/,
- int /*sy*/,
- int /*w*/,
- int /*h*/,
- unsigned int /*format*/,
- unsigned long /*planeMask*/,
- char * /*pdstLine*/
-);
-/* iplline.c */
-
-extern void iplLineSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-
-extern void iplLineSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- DDXPointPtr /*pptInit*/
-);
-/* iplmskbits.c */
-/* iplpixmap.c */
-
-extern PixmapPtr iplCreatePixmap(
- ScreenPtr /*pScreen*/,
- int /*width*/,
- int /*height*/,
- int /*depth*/
-);
-
-extern Bool iplDestroyPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern PixmapPtr iplCopyPixmap(
- PixmapPtr /*pSrc*/
-);
-
-extern void iplPadPixmap(
- PixmapPtr /*pPixmap*/
-);
-
-extern void iplXRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rw*/
-);
-
-extern void iplYRotatePixmap(
- PixmapPtr /*pPix*/,
- int /*rh*/
-);
-
-extern void iplCopyRotatePixmap(
- PixmapPtr /*psrcPix*/,
- PixmapPtr * /*ppdstPix*/,
- int /*xrot*/,
- int /*yrot*/
-);
-/* iplply1rctC.c */
-
-extern void iplFillPoly1RectCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* iplply1rctG.c */
-
-extern void iplFillPoly1RectGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*shape*/,
- int /*mode*/,
- int /*count*/,
- DDXPointPtr /*ptsIn*/
-);
-/* iplpntwin.c */
-
-extern void iplPaintWindow(
- WindowPtr /*pWin*/,
- RegionPtr /*pRegion*/,
- int /*what*/
-);
-
-extern void iplFillBoxSolid(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- unsigned long /*pixel*/
-);
-
-extern void iplFillBoxTile32(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/
-);
-/* iplpolypnt.c */
-
-extern void iplPolyPoint(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*mode*/,
- int /*npt*/,
- xPoint * /*pptInit*/
-);
-/* iplpush8.c */
-
-extern void iplPushPixels8(
- GCPtr /*pGC*/,
- PixmapPtr /*pBitmap*/,
- DrawablePtr /*pDrawable*/,
- int /*dx*/,
- int /*dy*/,
- int /*xOrg*/,
- int /*yOrg*/
-);
-/* iplrctstp8.c */
-
-extern void ipl8FillRectOpaqueStippled32(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void ipl8FillRectTransparentStippled32(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void ipl8FillRectStippledUnnatural(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-/* iplrrop.c */
-
-extern int iplReduceRasterOp(
- int /*rop*/,
- unsigned long /*fg*/,
- unsigned long /*pm*/,
- unsigned short * /*andp*/,
- unsigned short * /*xorp*/
-);
-/* iplscrinit.c */
-
-extern Bool iplCloseScreen(
- int /*index*/,
- ScreenPtr /*pScreen*/
-);
-
-extern Bool iplSetupScreen(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern int iplFinishScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern Bool iplScreenInit(
- ScreenPtr /*pScreen*/,
- pointer /*pbits*/,
- int /*xsize*/,
- int /*ysize*/,
- int /*dpix*/,
- int /*dpiy*/,
- int /*width*/
-);
-
-extern PixmapPtr iplGetScreenPixmap(
- ScreenPtr /*pScreen*/
-);
-
-extern void iplSetScreenPixmap(
- PixmapPtr /*pPix*/
-);
-
-/* iplseg.c */
-
-extern void iplSegmentSS(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-
-extern void iplSegmentSD(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nseg*/,
- xSegment * /*pSeg*/
-);
-/* iplsetsp.c */
-
-extern int iplSetScanline(
- int /*y*/,
- int /*xOrigin*/,
- int /*xStart*/,
- int /*xEnd*/,
- unsigned int * /*psrc*/,
- int /*alu*/,
- unsigned short * /*pdstBase*/,
- int /*widthDst*/,
- unsigned long /*planemask*/
-);
-
-extern void iplSetSpans(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- char * /*psrc*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- int /*nspans*/,
- int /*fSorted*/
-);
-/* iplsolidC.c */
-
-extern void iplFillRectSolidCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplSolidSpansCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplsolidG.c */
-
-extern void iplFillRectSolidGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplSolidSpansGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplsolidX.c */
-
-extern void iplFillRectSolidXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplSolidSpansXor(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* iplteblt8.c */
-
-extern void iplTEGlyphBlt8(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*xInit*/,
- int /*yInit*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ipltegblt.c */
-
-extern void iplTEGlyphBlt(
- DrawablePtr /*pDrawable*/,
- GCPtr/*pGC*/,
- int /*x*/,
- int /*y*/,
- unsigned int /*nglyph*/,
- CharInfoPtr * /*ppci*/,
- pointer /*pglyphBase*/
-);
-/* ipltile32C.c */
-
-extern void iplFillRectTile32Copy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplTile32FSCopy(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* ipltile32G.c */
-
-extern void iplFillRectTile32General(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nBox*/,
- BoxPtr /*pBox*/
-);
-
-extern void iplTile32FSGeneral(
- DrawablePtr /*pDrawable*/,
- GCPtr /*pGC*/,
- int /*nInit*/,
- DDXPointPtr /*pptInit*/,
- int * /*pwidthInit*/,
- int /*fSorted*/
-);
-/* ipltileoddC.c */
-
-extern void iplFillBoxTileOddCopy(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTileOddCopy(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillBoxTile32sCopy(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTile32sCopy(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-/* ipltileoddG.c */
-
-extern void iplFillBoxTileOddGeneral(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTileOddGeneral(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillBoxTile32sGeneral(
- DrawablePtr /*pDrawable*/,
- int /*nBox*/,
- BoxPtr /*pBox*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-
-extern void iplFillSpanTile32sGeneral(
- DrawablePtr /*pDrawable*/,
- int /*n*/,
- DDXPointPtr /*ppt*/,
- int * /*pwidth*/,
- PixmapPtr /*tile*/,
- int /*xrot*/,
- int /*yrot*/,
- int /*alu*/,
- unsigned long /*planemask*/
-);
-/* iplwindow.c */
-
-extern Bool iplCreateWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool iplDestroyWindow(
- WindowPtr /*pWin*/
-);
-
-extern Bool iplMapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern Bool iplPositionWindow(
- WindowPtr /*pWin*/,
- int /*x*/,
- int /*y*/
-);
-
-extern Bool iplUnmapWindow(
- WindowPtr /*pWindow*/
-);
-
-extern void iplCopyWindow(
- WindowPtr /*pWin*/,
- DDXPointRec /*ptOldOrg*/,
- RegionPtr /*prgnSrc*/
-);
-
-extern Bool iplChangeWindowAttributes(
- WindowPtr /*pWin*/,
- unsigned long /*mask*/
-);
-/* iplzerarcC.c */
-
-extern void iplZeroPolyArcSS8Copy(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplzerarcG.c */
-
-extern void iplZeroPolyArcSS8General(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-/* iplzerarcX.c */
-
-extern void iplZeroPolyArcSS8Xor(
- DrawablePtr /*pDraw*/,
- GCPtr /*pGC*/,
- int /*narcs*/,
- xArc * /*parcs*/
-);
-
-/* Common macros for extracting drawing information */
-
-#if (!defined(SINGLEDEPTH) && PSZ != 8) || defined(FORCE_SEPARATE_PRIVATE)
-
-#define CFB_NEED_SCREEN_PRIVATE
-
-extern int iplScreenPrivateIndex;
-#endif
-
-#define iplGetWindowPixmap(d) \
- ((* ((DrawablePtr)(d))->pScreen->GetWindowPixmap)((WindowPtr)(d)))
-
-#define iplGetTypedWidth(pDrawable,wtype) (\
- (((pDrawable)->type != DRAWABLE_PIXMAP) ? \
- (int) (iplGetWindowPixmap(pDrawable)->devKind) : \
- (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (wtype))
-
-#define iplGetByteWidth(pDrawable) iplGetTypedWidth(pDrawable, unsigned char)
-
-#define iplGetPixelWidth(pDrawable) iplGetTypedWidth(pDrawable, PixelType)
-
-#define iplGetLongWidth(pDrawable) iplGetTypedWidth(pDrawable, unsigned long)
-
-#define iplGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix; \
- if ((pDrawable)->type != DRAWABLE_PIXMAP) \
- _pPix = iplGetWindowPixmap(pDrawable); \
- else \
- _pPix = (PixmapPtr) (pDrawable); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define iplGetByteWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char)
-
-#define iplGetLongWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned long, unsigned long)
-
-#define iplGetPixelWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-#define iplGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\
- PixmapPtr _pPix = iplGetWindowPixmap((DrawablePtr) (pWin)); \
- (pointer) = (ptype *) _pPix->devPrivate.ptr; \
- (width) = ((int) _pPix->devKind) / sizeof (wtype); \
-}
-
-#define iplGetWindowLongWidthAndPointer(pWin, width, pointer) \
- iplGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned long, unsigned long)
-
-#define iplGetWindowByteWidthAndPointer(pWin, width, pointer) \
- iplGetWindowTypedWidthAndPointer(pWin, width, pointer, unsigned char, unsigned char)
-
-#define iplGetWindowPixelWidthAndPointer(pDrawable, width, pointer) \
- iplGetWindowTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType)
-
-/* Macros which handle a coordinate in a single register */
-
-/* Most compilers will convert divide by 65536 into a shift, if signed
- * shifts exist. If your machine does arithmetic shifts and your compiler
- * can't get it right, add to this line.
- */
-
-/* mips compiler - what a joke - it CSEs the 65536 constant into a reg
- * forcing as to use div instead of shift. Let's be explicit.
- */
-
-#if defined(mips) || defined(sparc) || defined(__alpha) || defined(__alpha__)
-#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))
-#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))
-#define intToX(i) ((int) ((short) (i)))
-#define intToY(i) (GetHighWord(i))
-#endif
diff --git a/iplan2p4/iplallpriv.c b/iplan2p4/iplallpriv.c
deleted file mode 100644
index 23a13dbd1..000000000
--- a/iplan2p4/iplallpriv.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* $XFree86$ */
-/*
- * $XConsortium: iplallpriv.c,v 1.5 94/04/17 20:28:42 dpw Exp $
- *
-Copyright (c) 1991 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "ipl.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mibstore.h"
-
-int iplWindowPrivateIndex;
-int iplGCPrivateIndex;
-#ifdef CFB_NEED_SCREEN_PRIVATE
-int iplScreenPrivateIndex;
-#endif
-
-extern RegionPtr (*iplPuntCopyPlane)();
-
-Bool
-iplAllocatePrivates(pScreen, window_index, gc_index)
- ScreenPtr pScreen;
- int *window_index, *gc_index;
-{
- if (!window_index || !gc_index ||
- *window_index == -1 && *gc_index == -1)
- {
- if (!mfbAllocatePrivates(pScreen,
- &iplWindowPrivateIndex, &iplGCPrivateIndex))
- return FALSE;
- if (window_index)
- *window_index = iplWindowPrivateIndex;
- if (gc_index)
- *gc_index = iplGCPrivateIndex;
- }
- else
- {
- iplWindowPrivateIndex = *window_index;
- iplGCPrivateIndex = *gc_index;
- }
- if (!AllocateWindowPrivate(pScreen, iplWindowPrivateIndex,
- sizeof(iplPrivWin)) ||
- !AllocateGCPrivate(pScreen, iplGCPrivateIndex, sizeof(iplPrivGC)))
- return FALSE;
-
- iplPuntCopyPlane = miCopyPlane;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- iplScreenPrivateIndex = AllocateScreenPrivateIndex ();
- if (iplScreenPrivateIndex == -1)
- return FALSE;
-#endif
- return TRUE;
-}
diff --git a/iplan2p4/iplbitblt.c b/iplan2p4/iplbitblt.c
deleted file mode 100644
index 4bf64437e..000000000
--- a/iplan2p4/iplbitblt.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplbitblt.c,v 3.1tsi Exp $ */
-/*
- * ipl copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: iplbitblt.c,v 5.51 94/05/27 11:00:56 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "ipl.h"
-#include "fastblt.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "iplmskbits.h"
-
-RegionPtr
-iplBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, doBitBlt, bitPlane)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- void (*doBitBlt)();
- unsigned long bitPlane;
-{
- RegionPtr prgnSrcClip; /* 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 */
-
- 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);
- }
-
- srcx += pSrcDrawable->x;
- srcy += pSrcDrawable->y;
-
- /* clip the source */
-
- if (pSrcDrawable->type == DRAWABLE_PIXMAP)
- {
- if ((pSrcDrawable == pDstDrawable) &&
- (pGC->clientClipType == CT_NONE))
- {
- prgnSrcClip = iplGetCompositeClip(pGC);
- }
- 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 = iplGetCompositeClip(pGC);
- }
- 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 */
-
- /* XXX because CopyPlane uses this routine for 8-to-1 bit
- * copies, this next line *must* also correctly fetch the
- * composite clip from an mfb gc
- */
-
- cclip = iplGetCompositeClip(pGC);
- 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,
- iplGetCompositeClip(pGC));
- }
-
- /* Do bit blitting */
- numRects = REGION_NUM_RECTS(&rgnDst);
- if (numRects && width && height)
- {
- if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(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;
- }
-
- (*doBitBlt) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc, pGC->planemask, bitPlane);
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- prgnExposed = NULL;
- if (pGC->fExpose)
- {
- extern RegionPtr miHandleExposures();
-
- /* 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, bitPlane);
- }
- REGION_UNINIT(pGC->pScreen, &rgnDst);
- if (freeSrcClip)
- REGION_DESTROY(pGC->pScreen, prgnSrcClip);
- return prgnExposed;
-}
-
-
-void
-iplDoBitblt (pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- void (*blt)() = iplDoBitbltGeneral;
- if ((planemask & INTER_PMSK) == INTER_PMSK) {
- switch (alu) {
- case GXcopy:
- blt = iplDoBitbltCopy;
- break;
- case GXxor:
- blt = iplDoBitbltXor;
- break;
- case GXor:
- blt = iplDoBitbltOr;
- break;
- }
- }
- (*blt) (pSrc, pDst, alu, prgnDst, pptSrc, planemask);
-}
-
-RegionPtr
-iplCopyArea(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty)
- register DrawablePtr pSrcDrawable;
- register DrawablePtr pDstDrawable;
- GC *pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
-{
- void (*doBitBlt) ();
-
- doBitBlt = iplDoBitbltCopy;
- if (pGC->alu != GXcopy || (pGC->planemask & INTER_PMSK) != INTER_PMSK)
- {
- doBitBlt = iplDoBitbltGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- switch (pGC->alu) {
- case GXxor:
- doBitBlt = iplDoBitbltXor;
- break;
- case GXor:
- doBitBlt = iplDoBitbltOr;
- break;
- }
- }
- }
- return iplBitBlt (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, doBitBlt, 0L);
-}
-
-/* shared among all different ipl depths through linker magic */
-RegionPtr (*iplPuntCopyPlane)();
-
-RegionPtr iplCopyPlane(pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane)
- DrawablePtr pSrcDrawable;
- DrawablePtr pDstDrawable;
- GCPtr pGC;
- int srcx, srcy;
- int width, height;
- int dstx, dsty;
- unsigned long bitPlane;
-{
- RegionPtr ret;
- extern RegionPtr miHandleExposures();
- void (*doBitBlt)();
-
- ret = (*iplPuntCopyPlane) (pSrcDrawable, pDstDrawable,
- pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
- return ret;
-}
diff --git a/iplan2p4/iplblt.c b/iplan2p4/iplblt.c
deleted file mode 100644
index 85bcece13..000000000
--- a/iplan2p4/iplblt.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/* $XFree86$ */
-/*
- * ipl copy area
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-Author: Keith Packard
-
-*/
-/* $XConsortium: iplblt.c,v 1.13 94/04/17 20:28:44 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "ipl.h"
-#include "fastblt.h"
-#include "iplmergerop.h"
-#include "iplmskbits.h"
-
-void
-INTER_MROP_NAME(iplDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc, planemask)
- DrawablePtr pSrc, pDst;
- int alu;
- RegionPtr prgnDst;
- DDXPointPtr pptSrc;
- unsigned long planemask;
-{
- INTER_DECLAREG(*psrcBase);
- INTER_DECLAREG(*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 */
-
- INTER_DECLAREG(*psrcLine);
- INTER_DECLAREG(*pdstLine); /* pointers to line with current src and dst */
- INTER_DECLAREG(*psrc); /* pointer to current src group */
- INTER_DECLAREG(*pdst); /* pointer to current dst group */
-
- INTER_MROP_DECLARE_REG()
-
- /* following used for looping through a line */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask); /* masks for writing ends of dst */
- int ngMiddle; /* whole groups in dst */
- int xoffSrc, xoffDst;
- register int leftShift, rightShift;
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(bits1);
- INTER_DECLAREGP(bits2);
- register int ng; /* temp copy of ngMiddle */
-
- /* place to store full source word */
- int nstart; /* number of ragged bits at start of dst */
- int nend; /* number of ragged bits at end of dst */
- int srcStartOver; /* pulling nstart bits from src
- overflows into the next word? */
- int careful;
- int tmpSrc;
-
- INTER_MROP_INITIALIZE(alu,planemask);
-
- iplGetGroupWidthAndPointer (pSrc, widthSrc, psrcBase)
-
- iplGetGroupWidthAndPointer (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)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- if(!pboxNew1)
- return;
- pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pptNew1)
- {
- DEALLOCATE_LOCAL(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)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox);
- pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox);
- if(!pboxNew2 || !pptNew2)
- {
- if (pptNew2) DEALLOCATE_LOCAL(pptNew2);
- if (pboxNew2) DEALLOCATE_LOCAL(pboxNew2);
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(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 = psrcBase + ((pptSrc->y+h-1) * -widthSrc);
- pdstLine = pdstBase + ((pbox->y2-1) * -widthDst);
- }
- else /* start at first scanline */
- {
- psrcLine = psrcBase + (pptSrc->y * widthSrc);
- pdstLine = pdstBase + (pbox->y1 * widthDst);
- }
- if ((pbox->x1 & INTER_PIM) + w <= INTER_PPG)
- {
- INTER_maskpartialbits (pbox->x1, w, endmask);
- startmask = 0;
- ngMiddle = 0;
- }
- else
- {
- INTER_maskbits(pbox->x1, w, startmask, endmask, ngMiddle);
- }
-
- if (xdir == 1)
- {
- xoffSrc = pptSrc->x & INTER_PIM;
- xoffDst = pbox->x1 & INTER_PIM;
- pdstLine += (pbox->x1 >> INTER_PGSH) * INTER_PLANES;
- psrcLine += (pptSrc->x >> INTER_PGSH) * INTER_PLANES;
- ng = xoffSrc - xoffDst;
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- if (startmask)
- {
- INTER_MROP_MASK(psrc, pdst, startmask, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- }
- ng = ngMiddle;
-
- DuffL(ng, label1,
- INTER_MROP_SOLID(psrc, pdst, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- )
- if (endmask)
- INTER_MROP_MASK(psrc, pdst, endmask, pdst);
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = xoffSrc - xoffDst;
- rightShift = (INTER_PIM+1) - leftShift;
- }
- else
- {
- rightShift = xoffDst - xoffSrc;
- leftShift = (INTER_PIM+1) - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- INTER_CLR(bits);
- if (xoffSrc > xoffDst) {
- INTER_COPY(psrc, bits);
- INTER_NEXT_GROUP(psrc);
- }
- if (startmask)
- {
- INTER_GETLRC(leftShift, rightShift, psrc, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- }
- ng = ngMiddle;
- DuffL (ng,label2,
- INTER_GETLRC(leftShift, rightShift, psrc, bits, bits1);
- INTER_MROP_SOLID(bits1, pdst, pdst);
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(pdst);
- )
- if (endmask)
- {
- if ((endmask << rightShift) & 0xffff) {
- INTER_GETLRC(leftShift, rightShift, psrc, bits,
- bits1);
- }
- else {
- INTER_SCRLEFT(leftShift, bits, bits1);
- }
- INTER_MROP_MASK(bits1, pdst, endmask, pdst);
- }
- }
- }
- }
- else /* xdir == -1 */
- {
- xoffSrc = (pptSrc->x + w - 1) & INTER_PIM;
- xoffDst = (pbox->x2 - 1) & INTER_PIM;
- pdstLine += (((pbox->x2-1) >> INTER_PGSH) + 1) * INTER_PLANES;
- psrcLine += (((pptSrc->x+w - 1) >> INTER_PGSH) + 1) * INTER_PLANES;
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- if (endmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_MROP_MASK(psrc, pdst, endmask, pdst);
- }
- ng = ngMiddle;
-
- DuffL(ng,label3,
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_MROP_SOLID(psrc, pdst, pdst);
- )
-
- if (startmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_MROP_MASK(psrc, pdst, startmask, pdst);
- }
- }
- }
- else
- {
- if (xoffDst > xoffSrc)
- {
- rightShift = xoffDst - xoffSrc;
- leftShift = (INTER_PIM + 1) - rightShift;
- }
- else
- {
- leftShift = xoffSrc - xoffDst;
- rightShift = (INTER_PIM + 1) - leftShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- pdstLine += widthDst;
- psrcLine += widthSrc;
- INTER_CLR(bits);
- if (xoffDst > xoffSrc) {
- INTER_PREV_GROUP(psrc);
- INTER_COPY(psrc, bits);
- }
- if (endmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_GETRLC(rightShift, leftShift, psrc, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, endmask, pdst);
- }
- ng = ngMiddle;
- DuffL (ng, label4,
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- INTER_GETRLC(rightShift, leftShift, psrc, bits, bits1);
- INTER_MROP_SOLID(bits1, pdst, pdst);
- )
- if (startmask)
- {
- INTER_PREV_GROUP(psrc);
- INTER_PREV_GROUP(pdst);
- if ((startmask >> leftShift) & 0xffff) {
- INTER_GETRLC(rightShift, leftShift, psrc, bits,
- bits1);
- }
- else {
- INTER_SCRRIGHT(rightShift, bits, bits1);
- }
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- }
- }
- }
- }
- pbox++;
- pptSrc++;
- }
- if (pboxNew2)
- {
- DEALLOCATE_LOCAL(pptNew2);
- DEALLOCATE_LOCAL(pboxNew2);
- }
- if (pboxNew1)
- {
- DEALLOCATE_LOCAL(pptNew1);
- DEALLOCATE_LOCAL(pboxNew1);
- }
-}
diff --git a/iplan2p4/iplbres.c b/iplan2p4/iplbres.c
deleted file mode 100644
index 4fa9a3256..000000000
--- a/iplan2p4/iplbres.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: iplbres.c,v 1.15 94/04/17 20:28:45 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ipl.h"
-#include "servermd.h"
-#include "miline.h"
-
-#include "iplmskbits.h"
-
-/* Solid bresenham line */
-/* NOTES
- e2 is used less often than e1, so it's not in a register
-*/
-
-void
-iplBresS(rop, andp, xorp, addrg, ngwidth, signdx, signdy, axis, x1, y1, e, e1,
- e2, len)
- int rop;
- INTER_DECLARERRAX(andp);
- INTER_DECLARERRAX(xorp);
- INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
- int ngwidth; /* width in longwords of bitmap */
- register int signdx;
- int 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 e3 = e2-e1;
- INTER_DECLAREG(bit);
- INTER_DECLAREG(leftbit);
- INTER_DECLAREG(rightbit);
-
- /* point to longword containing first point */
- addrg = addrg + y1 * ngwidth + (x1 >> INTER_PGSH) * INTER_PLANES;
-
- if (signdy < 0)
- ngwidth = -ngwidth;
- e = e-e1; /* to make looping easier */
-
- leftbit = iplmask[0];
- rightbit = iplmask[INTER_PPG-1];
- bit = iplmask[x1 & INTER_PIM];
-
- if (axis == X_AXIS)
- {
- if (signdx > 0)
- {
- while (len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- bit = bit >> 1;
- e += e1;
- if (e >= 0)
- {
- addrg += ngwidth;
- e += e3;
- }
- if (!bit)
- {
- bit = leftbit;
- addrg += INTER_PLANES;
- }
- }
- }
- else
- {
- while (len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- e += e1;
- bit = bit << 1;
- if (e >= 0)
- {
- addrg += ngwidth;
- e += e3;
- }
- if (!bit)
- {
- bit = rightbit;
- addrg -= INTER_PLANES;
- }
- }
- }
- } /* if X_AXIS */
- else
- {
- if (signdx > 0)
- {
- while(len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- e += e1;
- if (e >= 0)
- {
- bit = bit >> 1;
- if (!bit)
- {
- bit = leftbit;
- addrg += INTER_PLANES;
- }
- e += e3;
- }
- addrg += ngwidth;
- }
- }
- else
- {
- while(len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, bit, addrg);
- e += e1;
- if (e >= 0)
- {
- bit = bit << 1;
- if (!bit)
- {
- bit = rightbit;
- addrg -= INTER_PLANES;
- }
- e += e3;
- }
- addrg += ngwidth;
- }
- }
- } /* else Y_AXIS */
-}
diff --git a/iplan2p4/iplbresd.c b/iplan2p4/iplbresd.c
deleted file mode 100644
index 61b154135..000000000
--- a/iplan2p4/iplbresd.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: iplbresd.c,v 1.16 94/04/17 20:28:45 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "misc.h"
-#include "ipl.h"
-#include "miline.h"
-#include "iplmskbits.h"
-
-/* Dashed bresenham line */
-
-void
-iplBresD(rrops,
- pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash,
- addrg, ngwidth,
- signdx, signdy, axis, x1, y1, e, e1, e2, len)
- iplRRopPtr rrops;
- int *pdashIndex; /* current dash */
- unsigned char *pDash; /* dash list */
- int numInDashList; /* total length of dash list */
- int *pdashOffset; /* offset into current dash */
- int isDoubleDash;
- INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
- int ngwidth; /* width in groups 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 e3 = e2-e1;
- int dashIndex;
- int dashOffset;
- int dashRemaining;
- INTER_DECLARERRAX(xorFg);
- INTER_DECLARERRAX(andFg);
- INTER_DECLARERRAX(xorBg);
- INTER_DECLARERRAX(andBg);
- int thisDash;
-
- dashOffset = *pdashOffset;
- dashIndex = *pdashIndex;
- xorFg = rrops[0].xorg;
- andFg = rrops[0].andg;
- xorBg = rrops[1].xorg;
- andBg = rrops[1].andg;
- dashRemaining = pDash[dashIndex] - dashOffset;
- if ((thisDash = dashRemaining) >= len)
- {
- thisDash = len;
- dashRemaining -= len;
- }
- e = e-e1; /* to make looping easier */
-
-#define BresStep(minor,major) {if ((e += e1) >= 0) { e += e3; minor; } major;}
-
-#define NextDash {\
- dashIndex++; \
- if (dashIndex == numInDashList) \
- dashIndex = 0; \
- dashRemaining = pDash[dashIndex]; \
- if ((thisDash = dashRemaining) >= len) \
- { \
- dashRemaining -= len; \
- thisDash = len; \
- } \
-}
-
- {
- INTER_DECLAREG(startbit);
- INTER_DECLAREG(bit);
-
- /* point to longword containing first point */
- addrg = addrg + (y1 * ngwidth) + (x1 >> INTER_PGSH) * INTER_PLANES;
- signdy = signdy * ngwidth;
- signdx = signdx * INTER_PLANES;
-
- if (signdx > 0)
- startbit = iplmask[0];
- else
- startbit = iplmask[INTER_PPG-1];
- bit = iplmask[x1 & INTER_PIM];
-
-#define X_Loop(store) while(thisDash--) {\
- store; \
- BresStep(addrg += signdy, \
- if (signdx > 0) \
- bit >>= 1; \
- else \
- bit <<= 1; \
- if (!bit) \
- { \
- bit = startbit; \
- addrg += signdx; \
- }) \
- }
-#define Y_Loop(store) while(thisDash--) {\
- store; \
- BresStep(if (signdx > 0) \
- bit >>= 1; \
- else \
- bit <<= 1; \
- if (!bit) \
- { \
- bit = startbit; \
- addrg += signdx; \
- }, \
- addrg += signdy) \
- }
-
- if (axis == X_AXIS)
- {
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
- X_Loop(
- INTER_DoMaskRRop(addrg, andBg, xorBg, bit, addrg);
- )
- } else {
- X_Loop(;)
- }
- } else {
- X_Loop(INTER_DoMaskRRop(addrg, andFg, xorFg, bit, addrg));
- }
- if (!len)
- break;
- NextDash
- }
- } /* if X_AXIS */
- else
- {
- for (;;)
- {
- len -= thisDash;
- if (dashIndex & 1) {
- if (isDoubleDash) {
- Y_Loop(
- INTER_DoMaskRRop(addrg, andBg, xorBg, bit, addrg);
- )
- } else {
- Y_Loop(;)
- }
- } else {
- Y_Loop(INTER_DoMaskRRop(addrg, andFg, xorFg, bit, addrg));
- }
- if (!len)
- break;
- NextDash
- }
- } /* else Y_AXIS */
- }
- *pdashIndex = dashIndex;
- *pdashOffset = pDash[dashIndex] - dashRemaining;
-}
diff --git a/iplan2p4/iplbstore.c b/iplan2p4/iplbstore.c
deleted file mode 100644
index d2fc23513..000000000
--- a/iplan2p4/iplbstore.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $XFree86$ */
-
-/*-
- * iplbstore.c --
- * Functions required by the backing-store implementation in MI.
- *
- * Copyright (c) 1987 by the Regents of the University of California
- *
- * 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. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef lint
-static char rcsid[] =
-"$XConsortium: iplbstore.c,v 5.8 93/12/13 17:21:51 dpw Exp $ SPRITE (Berkeley)";
-#endif
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#include "ipl.h"
-#include <X11/X.h>
-#include "mibstore.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "windowstr.h"
-
-/*-
- *-----------------------------------------------------------------------
- * iplSaveAreas --
- * Function called by miSaveAreas to actually fetch the areas to be
- * saved into the backing pixmap. This is very simple to do, since
- * iplDoBitblt is designed for this very thing. The region to save is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the screen
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the screen into the pixmap.
- *
- *-----------------------------------------------------------------------
- */
-void
-iplSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnSave; /* Region to save (pixmap-relative) */
- int xorg; /* X origin of region */
- int yorg; /* Y origin of region */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int i;
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- PixmapPtr pScrPix;
-
- i = REGION_NUM_RECTS(prgnSave);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnSave);
- pPt = pPtsInit;
- while (--i >= 0) {
- pPt->x = pBox->x1 + xorg;
- pPt->y = pBox->y1 + yorg;
- pPt++;
- pBox++;
- }
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScrPix = (PixmapPtr) pScreen->devPrivates[iplScreenPrivateIndex].ptr;
-#else
- pScrPix = (PixmapPtr) pScreen->devPrivate;
-#endif
-
- iplDoBitbltCopy((DrawablePtr) pScrPix, (DrawablePtr)pPixmap,
- GXcopy, prgnSave, pPtsInit, ~0L);
-
- DEALLOCATE_LOCAL (pPtsInit);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * iplRestoreAreas --
- * Function called by miRestoreAreas to actually fetch the areas to be
- * restored from the backing pixmap. This is very simple to do, since
- * iplDoBitblt is designed for this very thing. The region to restore is
- * already destination-relative and we're given the offset to the
- * window origin, so we have only to create an array of points of the
- * u.l. corners of the boxes in the region translated to the pixmap
- * coordinate system and fetch the screen pixmap out of its devPrivate
- * field....
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Data are copied from the pixmap into the screen.
- *
- *-----------------------------------------------------------------------
- */
-void
-iplRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)
- PixmapPtr pPixmap; /* Backing pixmap */
- RegionPtr prgnRestore; /* Region to restore (screen-relative)*/
- int xorg; /* X origin of window */
- int yorg; /* Y origin of window */
- WindowPtr pWin;
-{
- register DDXPointPtr pPt;
- DDXPointPtr pPtsInit;
- register BoxPtr pBox;
- register int i;
- ScreenPtr pScreen = pPixmap->drawable.pScreen;
- PixmapPtr pScrPix;
-
- i = REGION_NUM_RECTS(prgnRestore);
- pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i*sizeof(DDXPointRec));
- if (!pPtsInit)
- return;
-
- pBox = REGION_RECTS(prgnRestore);
- pPt = pPtsInit;
- while (--i >= 0) {
- pPt->x = pBox->x1 - xorg;
- pPt->y = pBox->y1 - yorg;
- pPt++;
- pBox++;
- }
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScrPix = (PixmapPtr) pScreen->devPrivates[iplScreenPrivateIndex].ptr;
-#else
- pScrPix = (PixmapPtr) pScreen->devPrivate;
-#endif
-
- iplDoBitbltCopy((DrawablePtr)pPixmap, (DrawablePtr) pScrPix,
- GXcopy, prgnRestore, pPtsInit, ~0L);
-
- DEALLOCATE_LOCAL (pPtsInit);
-}
diff --git a/iplan2p4/iplcmap.c b/iplan2p4/iplcmap.c
deleted file mode 100644
index 0f3cdca14..000000000
--- a/iplan2p4/iplcmap.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplcmap.c,v 3.0 1996/08/18 01:54:40 dawes Exp $ */
-/* $XConsortium: iplcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- 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 no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "scrnintstr.h"
-#include "colormapst.h"
-#include "resource.h"
-#include "micmap.h"
-
-int
-iplListInstalledColormaps(pScreen, pmaps)
- ScreenPtr pScreen;
- Colormap *pmaps;
-{
- return miListInstalledColormaps(pScreen, pmaps);
-}
-
-
-void
-iplInstallColormap(pmap)
- ColormapPtr pmap;
-{
- miInstallColormap(pmap);
-}
-
-void
-iplUninstallColormap(pmap)
- ColormapPtr pmap;
-{
- miUninstallColormap(pmap);
-}
-
-void
-iplResolveColor(pred, pgreen, pblue, pVisual)
- unsigned short *pred, *pgreen, *pblue;
- register VisualPtr pVisual;
-{
- miResolveColor(pred, pgreen, pblue, pVisual);
-}
-
-Bool
-iplInitializeColormap(pmap)
- register ColormapPtr pmap;
-{
- return miInitializeColormap(pmap);
-}
-
-int
-iplExpandDirectColors (pmap, ndef, indefs, outdefs)
- ColormapPtr pmap;
- int ndef;
- xColorItem *indefs, *outdefs;
-{
- return miExpandDirectColors(pmap, ndef, indefs, outdefs);
-}
-
-Bool
-iplCreateDefColormap(pScreen)
- ScreenPtr pScreen;
-{
- return miCreateDefColormap(pScreen);
-}
-
-Bool
-iplSetVisualTypes (depth, visuals, bitsPerRGB)
- int depth;
- int visuals;
-{
- return miSetVisualTypes(depth, visuals, bitsPerRGB, -1);
-}
-
-/*
- * Given a list of formats for a screen, create a list
- * of visuals and depths for the screen which coorespond to
- * the set which can be used with this version of ipl.
- */
-
-Bool
-iplInitVisuals (visualp, depthp, nvisualp, ndepthp, rootDepthp, defaultVisp, sizes, bitsPerRGB)
- VisualPtr *visualp;
- DepthPtr *depthp;
- int *nvisualp, *ndepthp;
- int *rootDepthp;
- VisualID *defaultVisp;
- unsigned long sizes;
- int bitsPerRGB;
-{
- return miInitVisuals(visualp, depthp, nvisualp, ndepthp, rootDepthp,
- defaultVisp, sizes, bitsPerRGB, -1);
-}
diff --git a/iplan2p4/iplfillarc.c b/iplan2p4/iplfillarc.c
deleted file mode 100644
index f62ff9f9e..000000000
--- a/iplan2p4/iplfillarc.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/* $XFree86$ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: iplfillarc.c,v 5.15 94/04/17 20:28:47 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xprotostr.h>
-#include "miscstruct.h"
-#include "gcstruct.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "ipl.h"
-#include "mifillarc.h"
-#include "iplrrop.h"
-#include "mi.h"
-#include "iplmskbits.h"
-
-static void
-INTER_RROP_NAME(iplFillEllipseSolid) (pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- int x, y, e;
- int yk, xk, ym, xm, dx, dy, xorg, yorg;
- miFillArcRec info;
- INTER_DECLAREG(*addrgt);
- INTER_DECLAREG(*addrgb);
- INTER_DECLAREG(*addrg);
- register int n;
- int ngwidth;
- INTER_RROP_DECLARE
- register int xpos;
- register int slw;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- int nlmiddle;
-
- iplGetGroupWidthAndPointer (pDraw, ngwidth, addrgt);
-
- INTER_RROP_FETCH_GC(pGC);
- miFillArcSetup(arc, &info);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrgb = addrgt;
- addrgt += ngwidth * (yorg - y);
- addrgb += ngwidth * (yorg + y + dy);
- while (y)
- {
- addrgt += ngwidth;
- addrgb -= ngwidth;
- MIFILLARCSTEP(slw);
- if (!slw)
- continue;
- xpos = xorg - x;
- addrg = addrgt + (xpos >> INTER_PGSH) * INTER_PLANES;
- if (((xpos & INTER_PIM) + slw) <= INTER_PPG)
- {
- INTER_maskpartialbits(xpos, slw, startmask);
- INTER_RROP_SOLID_MASK(addrg,startmask);
- if (miFillArcLower(slw))
- {
- addrg = addrgb + (xpos >> INTER_PGSH) * INTER_PLANES;
- INTER_RROP_SOLID_MASK(addrg, startmask);
- }
- continue;
- }
- INTER_maskbits(xpos, slw, startmask, endmask, nlmiddle);
- if (startmask)
- {
- INTER_RROP_SOLID_MASK(addrg, startmask);
- INTER_NEXT_GROUP(addrg);
- }
- n = nlmiddle;
- INTER_RROP_SPAN(addrg,n)
-
- if (endmask)
- INTER_RROP_SOLID_MASK(addrg, endmask);
- if (!miFillArcLower(slw))
- continue;
- addrg = addrgb + (xpos >> INTER_PGSH) * INTER_PLANES;
- if (startmask)
- {
- INTER_RROP_SOLID_MASK(addrg, startmask);
- INTER_NEXT_GROUP(addrg);
- }
- n = nlmiddle;
- INTER_RROP_SPAN(addrg, n);
- if (endmask)
- INTER_RROP_SOLID_MASK(addrg, endmask);
- }
-}
-
-#define FILLSPAN(xl,xr,addr) \
- if (xr >= xl) \
- { \
- n = xr - xl + 1; \
- addrg = addr + (xl >> INTER_PGSH) * INTER_PLANES; \
- if (((xl & INTER_PIM) + n) <= INTER_PPG) \
- { \
- INTER_maskpartialbits(xl, n, startmask); \
- INTER_RROP_SOLID_MASK(addrg, startmask); \
- } \
- else \
- { \
- INTER_maskbits(xl, n, startmask, endmask, n); \
- if (startmask) \
- { \
- INTER_RROP_SOLID_MASK(addrg, startmask); \
- INTER_NEXT_GROUP(addrg); \
- } \
- while (n--) \
- { \
- INTER_RROP_SOLID(addrg); \
- INTER_NEXT_GROUP(addrg); \
- } \
- if (endmask) \
- INTER_RROP_SOLID_MASK(addrg, 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
-INTER_RROP_NAME(iplFillArcSliceSolid)(pDraw, pGC, arc)
- DrawablePtr pDraw;
- GCPtr pGC;
- xArc *arc;
-{
- int yk, xk, ym, xm, dx, dy, xorg, yorg, slw;
- register int x, y, e;
- miFillArcRec info;
- miArcSliceRec slice;
- int xl, xr, xc;
- INTER_DECLAREG(*addrgt);
- INTER_DECLAREG(*addrgb);
- INTER_DECLAREG(*addrg);
- register int n;
- int ngwidth;
- INTER_RROP_DECLARE
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
-
- iplGetGroupWidthAndPointer (pDraw, ngwidth, addrgt);
-
- INTER_RROP_FETCH_GC(pGC);
- miFillArcSetup(arc, &info);
- miFillArcSliceSetup(arc, &slice, pGC);
- MIFILLARCSETUP();
- xorg += pDraw->x;
- yorg += pDraw->y;
- addrgb = addrgt;
- addrgt += ngwidth * (yorg - y);
- addrgb += ngwidth * (yorg + y + dy);
- slice.edge1.x += pDraw->x;
- slice.edge2.x += pDraw->x;
- while (y > 0)
- {
- addrgt += ngwidth;
- addrgb -= ngwidth;
- MIFILLARCSTEP(slw);
- MIARCSLICESTEP(slice.edge1);
- MIARCSLICESTEP(slice.edge2);
- if (miFillSliceUpper(slice))
- {
- MIARCSLICEUPPER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_top, addrgt);
- }
- if (miFillSliceLower(slice))
- {
- MIARCSLICELOWER(xl, xr, slice, slw);
- FILLSLICESPANS(slice.flip_bot, addrgb);
- }
- }
-}
-
-void
-INTER_RROP_NAME(iplPolyFillArcSolid) (pDraw, pGC, narcs, parcs)
- DrawablePtr pDraw;
- GCPtr pGC;
- int narcs;
- xArc *parcs;
-{
- register xArc *arc;
- register int i;
- int x2, y2;
- BoxRec box;
- RegionPtr cclip;
-
- cclip = iplGetCompositeClip(pGC);
- 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 <= MAXSHORT) && (y2 <= MAXSHORT) &&
- (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) )
- {
- if ((arc->angle2 >= FULLCIRCLE) ||
- (arc->angle2 <= -FULLCIRCLE))
- INTER_RROP_NAME(iplFillEllipseSolid)(pDraw, pGC, arc);
- else
- INTER_RROP_NAME(iplFillArcSliceSolid)(pDraw, pGC, arc);
- continue;
- }
- }
- miPolyFillArc(pDraw, pGC, 1, arc);
- }
-}
diff --git a/iplan2p4/iplfillrct.c b/iplan2p4/iplfillrct.c
deleted file mode 100644
index a3301457b..000000000
--- a/iplan2p4/iplfillrct.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplfillrct.c,v 3.0 1996/08/18 01:54:42 dawes Exp $ */
-/*
- * Fill rectangles.
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-*/
-
-/* $XConsortium: iplfillrct.c,v 5.18 94/04/17 20:28:47 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-#include "iplmskbits.h"
-#include "mergerop.h"
-
-
-void
-iplFillBoxTileOdd (pDrawable, n, rects, tile, xrot, yrot)
- DrawablePtr pDrawable;
- int n;
- BoxPtr rects;
- PixmapPtr tile;
- int xrot, yrot;
-{
- if (tile->drawable.width & INTER_PIM)
- iplFillBoxTileOddCopy (pDrawable, n, rects, tile, xrot, yrot, GXcopy, ~0L);
- else
- iplFillBoxTile32sCopy (pDrawable, n, rects, tile, xrot, yrot, GXcopy, ~0L);
-}
-
-void
-iplFillRectTileOdd (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- int xrot, yrot;
- void (*fill)();
-
- xrot = pDrawable->x + pGC->patOrg.x;
- yrot = pDrawable->y + pGC->patOrg.y;
- if (pGC->tile.pixmap->drawable.width & INTER_PIM)
- {
- fill = iplFillBoxTileOddGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillBoxTileOddCopy;
- }
- }
- else
- {
- fill = iplFillBoxTile32sGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillBoxTile32sCopy;
- }
- }
- (*fill) (pDrawable, nBox, pBox, pGC->tile.pixmap, xrot, yrot, pGC->alu, pGC->planemask);
-}
-
-#define NUM_STACK_RECTS 1024
-
-void
-iplPolyFillRect(pDrawable, pGC, nrectFill, prectInit)
- DrawablePtr pDrawable;
- register 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];
- iplPrivGC *priv;
- int numRects;
- void (*BoxFill)();
- int n;
- int xorg, yorg;
-
- priv = iplGetGCPrivate(pGC);
- prgnClip = pGC->pCompositeClip;
-
- BoxFill = 0;
- switch (pGC->fillStyle)
- {
- case FillSolid:
- switch (priv->rop) {
- case GXcopy:
- BoxFill = iplFillRectSolidCopy;
- break;
- case GXxor:
- BoxFill = iplFillRectSolidXor;
- break;
- default:
- BoxFill = iplFillRectSolidGeneral;
- break;
- }
- break;
- case FillTiled:
- if (!pGC->pRotatedPixmap)
- BoxFill = iplFillRectTileOdd;
- else
- {
- if (pGC->alu == GXcopy && (pGC->planemask & INTER_PMSK) == INTER_PMSK)
- BoxFill = iplFillRectTile32Copy;
- else
- BoxFill = iplFillRectTile32General;
- }
- break;
- }
- prect = prectInit;
- xorg = pDrawable->x;
- yorg = pDrawable->y;
- if (xorg || yorg)
- {
- prect = prectInit;
- n = nrectFill;
- while(n--)
- {
- prect->x += xorg;
- prect->y += yorg;
- prect++;
- }
- }
-
- prect = prectInit;
-
- numRects = REGION_NUM_RECTS(prgnClip) * nrectFill;
- if (numRects > NUM_STACK_RECTS)
- {
- pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(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)
- (*BoxFill) (pDrawable, pGC,
- pboxClipped-pboxClippedBase, pboxClippedBase);
- if (pboxClippedBase != stackRects)
- DEALLOCATE_LOCAL(pboxClippedBase);
-}
diff --git a/iplan2p4/iplfillsp.c b/iplan2p4/iplfillsp.c
deleted file mode 100644
index 863d369af..000000000
--- a/iplan2p4/iplfillsp.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/* $XFree86$ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- 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 no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* $XConsortium: iplfillsp.c,v 5.24 94/04/17 20:28:48 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-
-#include "mergerop.h"
-
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#include "iplmskbits.h"
-
-/* scanline filling for color frame buffer
- written by drewry, oct 1986 modified by smarks
- changes for compatibility with Little-endian systems Jul 1987; MIT:yba.
-
- 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 iplCreateGC().)
-
- the number of new scnalines created by clipping ==
-MaxRectsPerBand * nSpans.
-
- FillSolid is overloaded to be used for OpaqueStipple as well,
-if fgPixel == bgPixel.
-Note that for solids, PrivGC.rop == PrivGC.ropOpStip
-
-
- FillTiled is overloaded to be used for OpaqueStipple, if
-fgPixel != bgPixel. based on the fill style, it uses
-{RotatedTile, gc.alu} or {RotatedStipple, PrivGC.ropOpStip}
-*/
-
-#ifdef notdef
-#include <stdio.h>
-static
-dumpspans(n, ppt, pwidth)
- int n;
- DDXPointPtr ppt;
- int *pwidth;
-{
- fprintf(stderr,"%d spans\n", n);
- while (n--) {
- fprintf(stderr, "[%d,%d] %d\n", ppt->x, ppt->y, *pwidth);
- ppt++;
- pwidth++;
- }
- fprintf(stderr, "\n");
-}
-#endif
-
-/* Fill spans with tiles that aren't 32 bits wide */
-void
-iplUnnaturalTileFS(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 n; /* number of spans to fill */
- register DDXPointPtr ppt; /* pointer to list of start points */
- register int *pwidth; /* pointer to list of n widths */
- void (*fill)();
- int xrot, yrot;
-
- if (!(pGC->planemask))
- return;
-
- if (pGC->tile.pixmap->drawable.width & INTER_PIM)
- {
- fill = iplFillSpanTileOddGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillSpanTileOddCopy;
- }
- }
- else
- {
- fill = iplFillSpanTile32sGeneral;
- if ((pGC->planemask & INTER_PMSK) == INTER_PMSK)
- {
- if (pGC->alu == GXcopy)
- fill = iplFillSpanTile32sCopy;
- }
- }
- n = nInit * miFindMaxBand( iplGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidth = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- ppt = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!ppt || !pwidth)
- {
- if (ppt) DEALLOCATE_LOCAL(ppt);
- if (pwidth) DEALLOCATE_LOCAL(pwidth);
- return;
- }
- n = miClipSpans( iplGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- xrot = pDrawable->x + pGC->patOrg.x;
- yrot = pDrawable->y + pGC->patOrg.y;
-
- (*fill) (pDrawable, n, ppt, pwidth, pGC->tile.pixmap, xrot, yrot, pGC->alu, pGC->planemask);
-
- DEALLOCATE_LOCAL(ppt);
- DEALLOCATE_LOCAL(pwidth);
-}
-
-/* Fill spans with stipples that aren't 32 bits wide */
-void
-iplUnnaturalStippleFS(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 */
- INTER_DECLAREG(*addrgBase); /* pointer to start of bitmap */
- int ngwidth; /* width in groups of bitmap */
- INTER_DECLAREG(*pdst); /* pointer to current group in bitmap */
- PixmapPtr pStipple; /* pointer to stipple we want to fill with */
- register int w;
- int width, x, xrem, xSrc, ySrc;
- INTER_DECLAREGP(tmpSrc);
- INTER_DECLAREGP(tmpDst1);
- INTER_DECLAREGP(tmpDst2);
- int stwidth, stippleWidth;
- unsigned long *psrcS;
- int rop, stiprop;
- int stippleHeight;
- int *pwidthFree; /* copies of the pointers to free */
- DDXPointPtr pptFree;
- INTER_DECLARERRAXP(bgfill);
- INTER_DECLARERRAXP(fgfill);
-
- if (!(pGC->planemask))
- return;
-
- n = nInit * miFindMaxBand( iplGetCompositeClip(pGC) );
- if ( n == 0 )
- return;
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( iplGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
- rop = pGC->alu;
- if (pGC->fillStyle == FillStippled) {
- switch (rop) {
- case GXand:
- case GXcopy:
- case GXnoop:
- case GXor:
- stiprop = rop;
- break;
- default:
- stiprop = rop;
- rop = GXcopy;
- }
- }
- INTER_PFILL(pGC->fgPixel, fgfill);
- INTER_PFILL(pGC->bgPixel, bgfill);
-
- /*
- * OK, so what's going on here? We have two Drawables:
- *
- * The Stipple:
- * Depth = 1
- * Width = stippleWidth
- * Words per scanline = stwidth
- * Pointer to pixels = pStipple->devPrivate.ptr
- */
- pStipple = pGC->stipple;
-
- stwidth = pStipple->devKind / MFB_PGSZB;
- stippleWidth = pStipple->drawable.width;
- stippleHeight = pStipple->drawable.height;
-
- /*
- * The Target:
- * Depth = INTER_PLANES
- * Width = determined from *pwidth
- * Groups per scanline = ngwidth
- * Pointer to pixels = addrgBase
- */
-
- iplGetGroupWidthAndPointer (pDrawable, ngwidth, addrgBase)
-
- /* 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 xrem always stay within the stipple bounds.
- */
- modulus (pGC->patOrg.x, stippleWidth, xSrc);
- xSrc += pDrawable->x - stippleWidth;
- modulus (pGC->patOrg.y, stippleHeight, ySrc);
- ySrc += pDrawable->y - stippleHeight;
-
- while (n--)
- {
- iline = (ppt->y - ySrc) % stippleHeight;
- x = ppt->x;
- pdst = addrgBase + (ppt->y * ngwidth);
- psrcS = (unsigned long *) pStipple->devPrivate.ptr + (iline * stwidth);
-
- if (*pwidth)
- {
- width = *pwidth;
- while(width > 0)
- {
- int xtemp, tmpx;
- register unsigned long *ptemp;
- INTER_DECLAREG(*pdsttmp);
- /*
- * Do a stripe through the stipple & destination w pixels
- * wide. w is not more than:
- * - the width of the destination
- * - the width of the stipple
- * - the distance between x and the next word
- * boundary in the destination
- * - the distance between x and the next word
- * boundary in the stipple
- */
-
- /* width of dest/stipple */
- xrem = (x - xSrc) % stippleWidth;
- w = min((stippleWidth - xrem), width);
- /* dist to word bound in dest */
- w = min(w, INTER_PPG - (x & INTER_PIM));
- /* dist to word bound in stip */
- w = min(w, MFB_PPW - (x & MFB_PIM));
-
- xtemp = (xrem & MFB_PIM);
- ptemp = (unsigned long *)(psrcS + (xrem >> MFB_PWSH));
- tmpx = x & INTER_PIM;
- pdsttmp = pdst + (x >> INTER_PGSH) * INTER_PLANES;
- switch ( pGC->fillStyle ) {
- case FillOpaqueStippled:
- INTER_getstipplepixelsb(ptemp,xtemp,w,bgfill,fgfill,
- tmpDst1);
- INTER_putbitsrop(tmpDst1, tmpx, w, pdsttmp,
- pGC->planemask, rop);
- break;
- case FillStippled:
- /* Fill tmpSrc with the source pixels */
- INTER_getbits(pdsttmp, tmpx, w, tmpSrc);
- INTER_getstipplepixels(ptemp, xtemp, w, 0, tmpSrc,
- tmpDst1);
- if (rop != stiprop) {
- INTER_putbitsrop(fgfill, 0, w, tmpSrc, pGC->planemask, stiprop);
- } else {
- INTER_COPY(fgfill, tmpSrc);
- }
- INTER_getstipplepixels(ptemp, xtemp, w, 1, tmpSrc, tmpDst2);
- INTER_OR(tmpDst1,tmpDst2,tmpDst2);
- INTER_putbitsrop(tmpDst2, tmpx, w, pdsttmp,
- pGC->planemask, rop);
- }
- x += w;
- width -= w;
- }
- }
- ppt++;
- pwidth++;
- }
-
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
-
diff --git a/iplan2p4/iplgc.c b/iplan2p4/iplgc.c
deleted file mode 100644
index 1cbcb7522..000000000
--- a/iplan2p4/iplgc.c
+++ /dev/null
@@ -1,786 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplgc.c,v 3.0 1996/08/18 01:54:45 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* $XConsortium: iplgc.c,v 5.62 94/04/17 20:28:49 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ipl.h"
-#include <X11/fonts/fontstruct.h>
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "region.h"
-
-#include "mistruct.h"
-#include "mibstore.h"
-#include "migc.h"
-
-#include "iplmskbits.h"
-
-# ifdef WriteBitGroup
-# define useTEGlyphBlt iplImageGlyphBlt8
-# else
-# define useTEGlyphBlt iplTEGlyphBlt
-# endif
-
-#ifdef WriteBitGroup
-# define useImageGlyphBlt iplImageGlyphBlt8
-# define usePolyGlyphBlt iplPolyGlyphBlt8
-#else
-# define useImageGlyphBlt miImageGlyphBlt
-# define usePolyGlyphBlt miPolyGlyphBlt
-#endif
-
-#ifdef FOUR_BIT_CODE
-# define usePushPixels iplPushPixels8
-#else
-# define usePushPixels mfbPushPixels
-#endif
-
-#ifdef PIXEL_ADDR
-# define ZeroPolyArc iplZeroPolyArcSS8Copy
-#else
-# define ZeroPolyArc miZeroPolyArc
-#endif
-
-GCFuncs iplGCFuncs = {
- iplValidateGC,
- miChangeGC,
- miCopyGC,
- miDestroyGC,
- miChangeClip,
- miDestroyClip,
- miCopyClip,
-};
-
-GCOps iplTEOps1Rect = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
-#ifdef PIXEL_ADDR
- ipl8LineSS1Rect,
- ipl8SegmentSS1Rect,
-#else
- iplLineSS,
- iplSegmentSS,
-#endif
- miPolyRectangle,
- ZeroPolyArc,
- iplFillPoly1RectCopy,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useTEGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps iplNonTEOps1Rect = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
-#ifdef PIXEL_ADDR
- ipl8LineSS1Rect,
- ipl8SegmentSS1Rect,
-#else
- iplLineSS,
- iplSegmentSS,
-#endif
- miPolyRectangle,
- ZeroPolyArc,
- iplFillPoly1RectCopy,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useImageGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps iplTEOps = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
- iplLineSS,
- iplSegmentSS,
- miPolyRectangle,
- ZeroPolyArc,
- miFillPolygon,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useTEGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps iplNonTEOps = {
- iplSolidSpansCopy,
- iplSetSpans,
- iplPutImage,
- iplCopyArea,
- iplCopyPlane,
- iplPolyPoint,
- iplLineSS,
- iplSegmentSS,
- miPolyRectangle,
-#ifdef PIXEL_ADDR
- iplZeroPolyArcSS8Copy,
-#else
- miZeroPolyArc,
-#endif
- miFillPolygon,
- iplPolyFillRect,
- iplPolyFillArcSolidCopy,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- useImageGlyphBlt,
- usePolyGlyphBlt,
- usePushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};
-
-GCOps *
-iplMatchCommon (pGC, devPriv)
- GCPtr pGC;
- iplPrivGCPtr devPriv;
-{
- if (pGC->lineWidth != 0)
- return 0;
- if (pGC->lineStyle != LineSolid)
- return 0;
- if (pGC->fillStyle != FillSolid)
- return 0;
- if (devPriv->rop != GXcopy)
- return 0;
- if (pGC->font &&
- FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) <= 32 &&
- FONTMINBOUNDS(pGC->font,characterWidth) >= 0)
- {
- if (TERMINALFONT(pGC->font)
-#ifdef FOUR_BIT_CODE
- && FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB
-#endif
- )
-#ifdef NO_ONE_RECT
- return &iplTEOps1Rect;
-#else
- if (devPriv->oneRect)
- return &iplTEOps1Rect;
- else
- return &iplTEOps;
-#endif
- else
-#ifdef NO_ONE_RECT
- return &iplNonTEOps1Rect;
-#else
- if (devPriv->oneRect)
- return &iplNonTEOps1Rect;
- else
- return &iplNonTEOps;
-#endif
- }
- return 0;
-}
-
-Bool
-iplCreateGC(pGC)
- register GCPtr pGC;
-{
- iplPrivGC *pPriv;
-
- if (PixmapWidthPaddingInfo[pGC->depth].padPixelsLog2 == LOG2_BITMAP_PAD)
- return (mfbCreateGC(pGC));
- 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 color frame buffer, they don't change
- */
-
- pGC->ops = &iplNonTEOps;
- pGC->funcs = &iplGCFuncs;
-
- /* ipl wants to translate before scan conversion */
- pGC->miTranslate = 1;
-
- pPriv = iplGetGCPrivate(pGC);
- pPriv->rop = pGC->alu;
- pPriv->oneRect = FALSE;
- pGC->fExpose = TRUE;
- pGC->freeCompClip = FALSE;
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- return TRUE;
-}
-
-/* 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
-*/
-
-void
-iplValidateGC(pGC, changes, pDrawable)
- register GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- int mask; /* stateChanges */
- int index; /* used for stepping through bitfields */
- int new_rrop;
- int new_line, new_text, new_fillspans, new_fillarea;
- int new_rotate;
- int xrot, yrot;
- /* flags for changing the proc vector */
- iplPrivGCPtr devPriv;
- int oneRect;
-
- new_rotate = pGC->lastWinOrg.x != pDrawable->x ||
- pGC->lastWinOrg.y != pDrawable->y;
-
- pGC->lastWinOrg.x = pDrawable->x;
- pGC->lastWinOrg.y = pDrawable->y;
- devPriv = iplGetGCPrivate(pGC);
-
- new_rrop = FALSE;
- new_line = FALSE;
- new_text = FALSE;
- new_fillspans = FALSE;
- new_fillarea = FALSE;
-
- /*
- * 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);
-#ifdef NO_ONE_RECT
- devPriv->oneRect = FALSE;
-#else
- oneRect = REGION_NUM_RECTS(pGC->pCompositeClip) == 1;
- if (oneRect != devPriv->oneRect)
- new_line = TRUE;
- devPriv->oneRect = oneRect;
-#endif
- }
-
- 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:
- new_rrop = TRUE;
- new_text = TRUE;
- break;
- case GCBackground:
- break;
- case GCLineStyle:
- case GCLineWidth:
- new_line = TRUE;
- break;
- case GCJoinStyle:
- case GCCapStyle:
- break;
- case GCFillStyle:
- new_text = TRUE;
- new_fillspans = TRUE;
- new_line = TRUE;
- new_fillarea = TRUE;
- break;
- case GCFillRule:
- break;
- case GCTile:
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- break;
-
- case GCStipple:
- if (pGC->stipple)
- {
- int width = pGC->stipple->drawable.width;
- PixmapPtr nstipple;
-
- if ((width <= INTER_PGSZ) && !(width & (width - 1)) &&
- (nstipple = iplCopyPixmap(pGC->stipple)))
- {
- iplPadPixmap(nstipple);
- (*pGC->pScreen->DestroyPixmap)(pGC->stipple);
- pGC->stipple = nstipple;
- }
- }
- new_fillspans = TRUE;
- new_fillarea = 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;
- }
- }
-
- /*
- * If the drawable has changed, ensure suitable
- * entries are in the proc vector.
- */
- if (pDrawable->serialNumber != (pGC->serialNumber & (DRAWABLE_SERIAL_BITS))) {
- new_fillspans = TRUE; /* deal with FillSpans later */
- }
-
- if (new_rotate || new_fillspans)
- {
- Bool new_pix = FALSE;
-
- xrot = pGC->patOrg.x + pDrawable->x;
- yrot = pGC->patOrg.y + pDrawable->y;
-
- switch (pGC->fillStyle)
- {
- case FillTiled:
- if (!pGC->tileIsPixel)
- {
- int width = pGC->tile.pixmap->drawable.width;
-
- if ((width <= INTER_PGSZ) && !(width & (width - 1)))
- {
- iplCopyRotatePixmap(pGC->tile.pixmap,
- &pGC->pRotatedPixmap,
- xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
-#ifdef FOUR_BIT_CODE
- case FillStippled:
- case FillOpaqueStippled:
- {
- int width = pGC->stipple->drawable.width;
-
- if ((width <= INTER_PGSZ) && !(width & (width - 1)))
- {
- mfbCopyRotatePixmap(pGC->stipple,
- &pGC->pRotatedPixmap, xrot, yrot);
- new_pix = TRUE;
- }
- }
- break;
-#endif
- }
- if (!new_pix && pGC->pRotatedPixmap)
- {
- (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap);
- pGC->pRotatedPixmap = (PixmapPtr) NULL;
- }
- }
-
- if (new_rrop)
- {
- int old_rrop;
-
- old_rrop = devPriv->rop;
- devPriv->rop = iplReduceRasterOp(pGC->alu, pGC->fgPixel,
- pGC->planemask, devPriv->andg, devPriv->xorg);
- if (old_rrop == devPriv->rop)
- new_rrop = FALSE;
- else
- {
-#ifdef PIXEL_ADDR
- new_line = TRUE;
-#endif
-#ifdef WriteBitGroup
- new_text = TRUE;
-#endif
- new_fillspans = TRUE;
- new_fillarea = TRUE;
- }
- }
-
- if (new_rrop || new_fillspans || new_text || new_fillarea || new_line)
- {
- GCOps *newops;
-
- if (newops = iplMatchCommon (pGC, devPriv))
- {
- if (pGC->ops->devPrivate.val)
- miDestroyGCOps (pGC->ops);
- pGC->ops = newops;
- new_rrop = new_line = new_fillspans = new_text = new_fillarea = 0;
- }
- else
- {
- if (!pGC->ops->devPrivate.val)
- {
- pGC->ops = miCreateGCOps (pGC->ops);
- pGC->ops->devPrivate.val = 1;
- }
- }
- }
-
- /* deal with the changes we've collected */
- if (new_line)
- {
- pGC->ops->FillPolygon = miFillPolygon;
-#ifdef NO_ONE_RECT
- if (pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillPolygon = iplFillPoly1RectCopy;
- break;
- default:
- pGC->ops->FillPolygon = iplFillPoly1RectGeneral;
- break;
- }
- }
-#else
- if (devPriv->oneRect && pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillPolygon = iplFillPoly1RectCopy;
- break;
- default:
- pGC->ops->FillPolygon = iplFillPoly1RectGeneral;
- break;
- }
- }
-#endif
- if (pGC->lineWidth == 0)
- {
-#ifdef PIXEL_ADDR
- if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid))
- {
- switch (devPriv->rop)
- {
- case GXxor:
- pGC->ops->PolyArc = iplZeroPolyArcSS8Xor;
- break;
- case GXcopy:
- pGC->ops->PolyArc = iplZeroPolyArcSS8Copy;
- break;
- default:
- pGC->ops->PolyArc = iplZeroPolyArcSS8General;
- break;
- }
- }
- else
-#endif
- pGC->ops->PolyArc = miZeroPolyArc;
- }
- else
- pGC->ops->PolyArc = miPolyArc;
- pGC->ops->PolySegment = miPolySegment;
- switch (pGC->lineStyle)
- {
- case LineSolid:
- if(pGC->lineWidth == 0)
- {
- if (pGC->fillStyle == FillSolid)
- {
-#if defined(PIXEL_ADDR) && !defined(NO_ONE_RECT)
- if (devPriv->oneRect &&
- ((pDrawable->x >= pGC->pScreen->width - 32768) &&
- (pDrawable->y >= pGC->pScreen->height - 32768)))
- {
- pGC->ops->Polylines = ipl8LineSS1Rect;
- pGC->ops->PolySegment = ipl8SegmentSS1Rect;
- } else
-#endif
-#ifdef NO_ONE_RECT
- {
- pGC->ops->Polylines = ipl8LineSS1Rect;
- pGC->ops->PolySegment = ipl8SegmentSS1Rect;
- }
-#else
- {
- pGC->ops->Polylines = iplLineSS;
- pGC->ops->PolySegment = iplSegmentSS;
- }
-#endif
- }
- else
- pGC->ops->Polylines = miZeroLine;
- }
- else
- pGC->ops->Polylines = miWideLine;
- break;
- case LineOnOffDash:
- case LineDoubleDash:
- if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)
- {
- pGC->ops->Polylines = iplLineSD;
- pGC->ops->PolySegment = iplSegmentSD;
- } else
- pGC->ops->Polylines = miWideDash;
- break;
- }
- }
-
- if (new_text && (pGC->font))
- {
- if (FONTMAXBOUNDS(pGC->font,rightSideBearing) -
- FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||
- FONTMINBOUNDS(pGC->font,characterWidth) < 0)
- {
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- else
- {
-#ifdef WriteBitGroup
- if (pGC->fillStyle == FillSolid)
- {
- if (devPriv->rop == GXcopy)
- pGC->ops->PolyGlyphBlt = iplPolyGlyphBlt8;
- else
-#ifdef FOUR_BIT_CODE
- pGC->ops->PolyGlyphBlt = iplPolyGlyphRop8;
-#else
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
-#endif
- }
- else
-#endif
- pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;
- /* special case ImageGlyphBlt for terminal emulator fonts */
-#if !defined(WriteBitGroup)
- if (TERMINALFONT(pGC->font) &&
- (pGC->planemask & INTER_PMSK) == INTER_PMSK
-#ifdef FOUR_BIT_CODE
- && FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB
-#endif
- )
- {
- pGC->ops->ImageGlyphBlt = useTEGlyphBlt;
- }
- else
-#endif
- {
-#ifdef WriteBitGroup
- if (devPriv->rop == GXcopy &&
- pGC->fillStyle == FillSolid &&
- (pGC->planemask & INTER_PMSK) == INTER_PMSK)
- pGC->ops->ImageGlyphBlt = iplImageGlyphBlt8;
- else
-#endif
- pGC->ops->ImageGlyphBlt = miImageGlyphBlt;
- }
- }
- }
-
-
- if (new_fillspans) {
- switch (pGC->fillStyle) {
- case FillSolid:
- switch (devPriv->rop) {
- case GXcopy:
- pGC->ops->FillSpans = iplSolidSpansCopy;
- break;
- case GXxor:
- pGC->ops->FillSpans = iplSolidSpansXor;
- break;
- default:
- pGC->ops->FillSpans = iplSolidSpansGeneral;
- break;
- }
- break;
- case FillTiled:
- if (pGC->pRotatedPixmap)
- {
- if (pGC->alu == GXcopy && (pGC->planemask & INTER_PMSK) == INTER_PMSK)
- pGC->ops->FillSpans = iplTile32FSCopy;
- else
- pGC->ops->FillSpans = iplTile32FSGeneral;
- }
- else
- pGC->ops->FillSpans = iplUnnaturalTileFS;
- break;
- case FillStippled:
-#ifdef FOUR_BIT_CODE
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ipl8Stipple32FS;
- else
-#endif
- pGC->ops->FillSpans = iplUnnaturalStippleFS;
- break;
- case FillOpaqueStippled:
-#ifdef FOUR_BIT_CODE
- if (pGC->pRotatedPixmap)
- pGC->ops->FillSpans = ipl8OpaqueStipple32FS;
- else
-#endif
- pGC->ops->FillSpans = iplUnnaturalStippleFS;
- break;
- default:
- FatalError("iplValidateGC: illegal fillStyle\n");
- }
- } /* end of new_fillspans */
-
- if (new_fillarea) {
-#ifndef FOUR_BIT_CODE
- pGC->ops->PolyFillRect = miPolyFillRect;
- if (pGC->fillStyle == FillSolid || pGC->fillStyle == FillTiled)
- {
- pGC->ops->PolyFillRect = iplPolyFillRect;
- }
-#endif
-#ifdef FOUR_BIT_CODE
- pGC->ops->PushPixels = mfbPushPixels;
- if (pGC->fillStyle == FillSolid && devPriv->rop == GXcopy)
- pGC->ops->PushPixels = iplPushPixels8;
-#endif
- pGC->ops->PolyFillArc = miPolyFillArc;
- if (pGC->fillStyle == FillSolid)
- {
- switch (devPriv->rop)
- {
- case GXcopy:
- pGC->ops->PolyFillArc = iplPolyFillArcSolidCopy;
- break;
- default:
- pGC->ops->PolyFillArc = iplPolyFillArcSolidGeneral;
- break;
- }
- }
- }
-}
diff --git a/iplan2p4/iplgetsp.c b/iplan2p4/iplgetsp.c
deleted file mode 100644
index c325ad1fe..000000000
--- a/iplan2p4/iplgetsp.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: iplgetsp.c,v 5.14 94/04/17 20:28:50 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-#include "misc.h"
-#include "region.h"
-#include "gc.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ipl.h"
-#include "iplmskbits.h"
-#include "iplpack.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.
- */
-void
-iplGetSpans(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 */
-{
- unsigned long *pdst = (unsigned long *)pchardstStart;
- INTER_DECLAREG(*psrc); /* where to get the bits */
- INTER_DECLAREGP(tmpSrc); /* scratch buffer for bits */
- INTER_DECLAREG(*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;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- int nlMiddle, nl, srcBit;
- int w,longs;
- INTER_DECLAREG(*tmppdst);
- INTER_DECLAREG(*ipdst);
-
- switch (pDrawable->bitsPerPixel) {
- case 1:
- mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart);
- return;
- case INTER_PLANES:
- break;
- default:
- FatalError("iplGetSpans: invalid depth\n");
- }
-
- longs = NUM_LONGS(INTER_PLANES, 0, wMax);
- tmppdst = (unsigned short *)
- ALLOCATE_LOCAL(NUM_TEMP_BYTES(INTER_PLANES, longs));
- iplGetGroupWidthAndPointer (pDrawable, widthSrc, psrcBase)
-
- pptLast = ppt + nspans;
- while(ppt < pptLast)
- {
- xEnd = min(ppt->x + *pwidth, (widthSrc / INTER_PLANES) << INTER_PGSH);
- psrc = psrcBase + ppt->y * widthSrc +
- (ppt->x >> INTER_PGSH) * INTER_PLANES;
- w = xEnd - ppt->x;
- srcBit = ppt->x & INTER_PIM;
- ipdst = tmppdst;
-
- if (srcBit + w <= INTER_PPG)
- {
- INTER_getbits(psrc, srcBit, w, tmpSrc);
- INTER_putbits(tmpSrc, 0, w, ipdst, ~((unsigned long)0));
- }
- else
- {
- INTER_maskbits(ppt->x, w, startmask, endmask, nlMiddle);
- nstart = 0;
- if (startmask)
- {
- nstart = INTER_PPG - srcBit;
- INTER_getbits(psrc, srcBit, nstart, tmpSrc);
- INTER_putbits(tmpSrc, 0, nstart, ipdst, ~((unsigned long)0));
- if(srcBit + nstart >= INTER_PPG)
- INTER_NEXT_GROUP(psrc);
- }
- nl = nlMiddle;
- while (nl--)
- {
- INTER_putbits(psrc, nstart, INTER_PPG, ipdst, ~((unsigned long)0));
- INTER_NEXT_GROUP(psrc);
- INTER_NEXT_GROUP(ipdst);
- }
- if (endmask)
- {
- nend = xEnd & INTER_PIM;
- INTER_getbits(psrc, 0, nend, tmpSrc);
- INTER_putbits(tmpSrc, nstart, nend, ipdst, ~((unsigned long)0));
- }
- }
- longs=(w * INTER_PLANES + 31)/32;
- iplPackLine(INTER_PLANES, longs, tmppdst, pdst);
- pdst+=longs;
- ppt++;
- pwidth++;
- }
- DEALLOCATE_LOCAL(tmppdst);
-}
diff --git a/iplan2p4/iplhrzvert.c b/iplan2p4/iplhrzvert.c
deleted file mode 100644
index 45faaa1cb..000000000
--- a/iplan2p4/iplhrzvert.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: iplhrzvert.c,v 1.8 94/04/17 20:28:51 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#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 "ipl.h"
-
-#include "iplmskbits.h"
-
-/* horizontal solid line
- abs(len) > 1
-*/
-iplHorzS(rop, andp, xorp, addrg, ngwidth, x1, y1, len)
-register int rop;
-INTER_DECLARERRAX(andp);
-INTER_DECLARERRAX(xorp);
-INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
-int ngwidth; /* width in groups of bitmap */
-int x1; /* initial point */
-int y1;
-int len; /* length of line */
-{
- register int ngmiddle;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
-
- addrg = addrg + y1 * ngwidth + (x1 >> INTER_PGSH) * INTER_PLANES;
- /* all bits inside same group */
- if ( ((x1 & INTER_PIM) + len) < INTER_PPG)
- {
- INTER_maskpartialbits(x1, len, startmask);
- INTER_DoMaskRRop(addrg, andp, xorp, startmask, addrg);
- }
- else
- {
- INTER_maskbits(x1, len, startmask, endmask, ngmiddle);
- if (startmask)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, startmask, addrg);
- addrg += INTER_PLANES;
- }
- while (ngmiddle--)
- {
- INTER_DoRRop(addrg, andp, xorp, addrg);
- addrg += INTER_PLANES;
- }
- if (endmask)
- INTER_DoMaskRRop(addrg, andp, xorp, endmask, addrg);
- }
-}
-
-/* vertical solid line */
-
-iplVertS(rop, andp, xorp, addrg, ngwidth, x1, y1, len)
-int rop;
-INTER_DECLARERRAX(andp);
-INTER_DECLARERRAX(xorp);
-INTER_DECLAREG(*addrg); /* pointer to base of bitmap */
-register int ngwidth; /* width in groups of bitmap */
-int x1, y1; /* initial point */
-register int len; /* length of line */
-{
- addrg = addrg + (y1 * ngwidth) + (x1 >> INTER_PGSH) * INTER_PLANES;
- while (len--)
- {
- INTER_DoMaskRRop(addrg, andp, xorp, iplmask[x1 & INTER_PIM], addrg);
- addrg += ngwidth;
- }
-}
diff --git a/iplan2p4/iplimage.c b/iplan2p4/iplimage.c
deleted file mode 100644
index 5b72b885f..000000000
--- a/iplan2p4/iplimage.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $XFree86$ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: iplimage.c,v 1.18 94/04/17 20:28:52 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "gcstruct.h"
-#include "ipl.h"
-#include "servermd.h"
-
-void
-iplPutImage(pDraw, pGC, depth, x, y, w, h, leftPad, format, pImage)
- DrawablePtr pDraw;
- GCPtr pGC;
- int depth, x, y, w, h;
- int leftPad;
- int format;
- char *pImage;
-{
- miPutImage(pDraw, pGC, depth, x, y, w, h, leftPad, format, pImage);
-}
-
-void
-iplGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine)
- DrawablePtr pDrawable;
- int sx, sy, w, h;
- unsigned int format;
- unsigned long planeMask;
- char *pdstLine;
-{
- miGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-}
diff --git a/iplan2p4/iplline.c b/iplan2p4/iplline.c
deleted file mode 100644
index 19d078cb2..000000000
--- a/iplan2p4/iplline.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplline.c,v 3.0 1996/08/18 01:54:50 dawes Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-/* $XConsortium: iplline.c,v 1.23 94/04/17 20:28:53 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ipl.h"
-#include "miline.h"
-
-#include "iplmskbits.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
-iplSegmentSS (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-iplLineSS (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 */
-
- INTER_DECLAREG(*addrg); /* address of destination pixmap */
- int ngwidth; /* width in groups 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 */
- int tmp;
- register int y1, y2;
- register int x1, x2;
- RegionPtr cclip;
- iplPrivGCPtr devPriv;
- INTER_DECLARERRAX(xor);
- INTER_DECLARERRAX(and);
- int alu;
-
- devPriv = iplGetGCPrivate(pGC);
- cclip = pGC->pCompositeClip;
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwidth, addrg)
-
- alu = devPriv->rop;
- xor = devPriv->xorg;
- and = devPriv->andg;
- 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)
- {
- iplVertS (alu, and, xor,
- addrg, ngwidth,
- 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))
- {
- /* 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)
- {
- iplHorzS (alu, and, xor,
- addrg, ngwidth,
- 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
- iplBresS (alu, and, xor,
- addrg, ngwidth,
- 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;
- iplBresS(alu, and, xor,
- addrg, ngwidth,
- 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)))
- {
- nbox = nboxInit;
- pbox = pboxInit;
- while (nbox--)
- {
- if ((x2 >= pbox->x1) &&
- (y2 >= pbox->y1) &&
- (x2 < pbox->x2) &&
- (y2 < pbox->y2))
- {
- INTER_DECLAREG(mask);
- INTER_DECLAREGP(temp);
-
- mask = iplmask[x2 & INTER_PIM];
- addrg += (y2 * ngwidth) + (x2 >> INTER_PGSH) * INTER_PLANES;
-
- INTER_DoRRop(addrg, and, xor, temp);
- INTER_COPYM(temp, addrg, mask, addrg);
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
-
-/*
- * Draw dashed 1-pixel lines.
- */
-
-void
-#ifdef POLYSEGMENT
-iplSegmentSD (pDrawable, pGC, nseg, pSeg)
- DrawablePtr pDrawable;
- register GCPtr pGC;
- int nseg;
- register xSegment *pSeg;
-#else
-iplLineSD( 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 */
-
- INTER_DECLAREG(*addrg); /* address of destination pixmap */
- int ngwidth; /* width in groups 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;
- iplRRopRec rrops[2];
- unsigned char *pDash;
- int dashOffset;
- int numInDashList;
- int dashIndex;
- int isDoubleDash;
- int dashIndexTmp, dashOffsetTmp;
- int unclippedlen;
- iplPrivGCPtr devPriv;
-
- devPriv = iplGetGCPrivate(pGC);
- cclip = pGC->pCompositeClip;
- rrops[0].rop = devPriv->rop;
- INTER_COPY(devPriv->andg, rrops[0].andg)
- INTER_COPY(devPriv->xorg, rrops[0].xorg)
-#if 0
- if (pGC->alu == GXcopy)
- {
- rrops[1].rop = GXcopy;
- rrops[1].and = 0;
- rrops[1].xor = PFILL (pGC->bgPixel);
- }
- else
-#endif
- {
- rrops[1].rop = iplReduceRasterOp (pGC->alu,
- pGC->bgPixel, pGC->planemask,
- rrops[1].andg, rrops[1].xorg);
- }
- pboxInit = REGION_RECTS(cclip);
- nboxInit = REGION_NUM_RECTS(cclip);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwidth, addrg)
-
- /* 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);
-
- 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;
- iplBresD (rrops,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrg, ngwidth,
- signdx, signdy, axis, x1, y1,
- e, e1, e2, unclippedlen);
- break;
-#else
- iplBresD (rrops,
- &dashIndex, pDash, numInDashList,
- &dashOffset, isDoubleDash,
- addrg, ngwidth,
- 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;
- int dashIndexTmp, dashOffsetTmp;
-
- 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;
- iplBresD (rrops,
- &dashIndexTmp, pDash, numInDashList,
- &dashOffsetTmp, isDoubleDash,
- addrg, ngwidth,
- 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))
- {
- INTER_DECLAREG(mask);
- int pix;
-
- pix = 0;
- if (dashIndex & 1)
- pix = 1;
- mask = iplmask[x2 & INTER_PIM];
- addrg += (y2 * ngwidth) + (x2 >> INTER_PGSH) * INTER_PLANES;
- INTER_DoMaskRRop(addrg, rrops[pix].andg, rrops[pix].xorg,
- mask, addrg);
- break;
- }
- else
- pbox++;
- }
- }
-#endif
-}
diff --git a/iplan2p4/iplmap.h b/iplan2p4/iplmap.h
deleted file mode 100644
index cc065aa82..000000000
--- a/iplan2p4/iplmap.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplmap.h,v 3.1 1998/04/05 16:42:26 robin Exp $ */
-/*
- * $XConsortium: iplmap.h,v 1.9 94/04/17 20:28:54 dpw Exp $
- *
-Copyright (c) 1991 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/*
- * Map names around so that multiple depths can be supported simultaneously
- */
-
-/* a losing vendor cpp dumps core if we define NAME in terms of CATNAME */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if INTER_PLANES == 2
-#define NAME(subname) ipl2p2##subname
-#elif INTER_PLANES == 4
-#define NAME(subname) ipl2p4##subname
-#elif INTER_PLANES == 8
-#define NAME(subname) ipl2p8##subname
-#endif
-
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define CATNAME(prefix,subname) prefix##subname
-#else
-#define CATNAME(prefix,subname) prefix/**/subname
-#endif
-
-#define iplScreenPrivateIndex NAME(ScreenPrivateIndex)
-#define QuartetBitsTable NAME(QuartetBitsTable)
-#define QuartetPixelMaskTable NAME(QuartetPixelMaskTable)
-#define iplAllocatePrivates NAME(AllocatePrivates)
-#define iplBSFuncRec NAME(BSFuncRec)
-#define iplBitBlt NAME(BitBlt)
-#define iplBresD NAME(BresD)
-#define iplBresS NAME(BresS)
-#define iplChangeWindowAttributes NAME(ChangeWindowAttributes)
-#define iplCloseScreen NAME(CloseScreen)
-#define iplCopyArea NAME(CopyArea)
-#define iplCopyImagePlane NAME(CopyImagePlane)
-#define iplCopyPixmap NAME(CopyPixmap)
-#define iplCopyPlane NAME(CopyPlane)
-#define iplCopyRotatePixmap NAME(CopyRotatePixmap)
-#define iplCopyWindow NAME(CopyWindow)
-#define iplCreateGC NAME(CreateGC)
-#define iplCreatePixmap NAME(CreatePixmap)
-#define iplCreateWindow NAME(CreateWindow)
-#define iplCreateScreenResources NAME(CreateScreenResoures)
-#define iplDestroyPixmap NAME(DestroyPixmap)
-#define iplDestroyWindow NAME(DestroyWindow)
-#define iplDoBitblt NAME(DoBitblt)
-#define iplDoBitbltCopy NAME(DoBitbltCopy)
-#define iplDoBitbltGeneral NAME(DoBitbltGeneral)
-#define iplDoBitbltOr NAME(DoBitbltOr)
-#define iplDoBitbltXor NAME(DoBitbltXor)
-#define iplFillBoxSolid NAME(FillBoxSolid)
-#define iplFillBoxTile32 NAME(FillBoxTile32)
-#define iplFillBoxTile32sCopy NAME(FillBoxTile32sCopy)
-#define iplFillBoxTile32sGeneral NAME(FillBoxTile32sGeneral)
-#define iplFillBoxTileOdd NAME(FillBoxTileOdd)
-#define iplFillBoxTileOddCopy NAME(FillBoxTileOddCopy)
-#define iplFillBoxTileOddGeneral NAME(FillBoxTileOddGeneral)
-#define iplFillPoly1RectCopy NAME(FillPoly1RectCopy)
-#define iplFillPoly1RectGeneral NAME(FillPoly1RectGeneral)
-#define iplFillRectSolidCopy NAME(FillRectSolidCopy)
-#define iplFillRectSolidGeneral NAME(FillRectSolidGeneral)
-#define iplFillRectSolidXor NAME(FillRectSolidXor)
-#define iplFillRectTile32Copy NAME(FillRectTile32Copy)
-#define iplFillRectTile32General NAME(FillRectTile32General)
-#define iplFillRectTileOdd NAME(FillRectTileOdd)
-#define iplFillSpanTile32sCopy NAME(FillSpanTile32sCopy)
-#define iplFillSpanTile32sGeneral NAME(FillSpanTile32sGeneral)
-#define iplFillSpanTileOddCopy NAME(FillSpanTileOddCopy)
-#define iplFillSpanTileOddGeneral NAME(FillSpanTileOddGeneral)
-#define iplFinishScreenInit NAME(FinishScreenInit)
-#define iplGCFuncs NAME(GCFuncs)
-#define iplGetImage NAME(GetImage)
-#define iplGetScreenPixmap NAME(GetScreenPixmap)
-#define iplGetSpans NAME(GetSpans)
-#define iplHorzS NAME(HorzS)
-#define iplImageGlyphBlt8 NAME(ImageGlyphBlt8)
-#define iplLineSD NAME(LineSD)
-#define iplLineSS NAME(LineSS)
-#define iplMapWindow NAME(MapWindow)
-#define iplMatchCommon NAME(MatchCommon)
-#define iplNonTEOps NAME(NonTEOps)
-#define iplNonTEOps1Rect NAME(NonTEOps1Rect)
-#define iplPadPixmap NAME(PadPixmap)
-#define iplPaintWindow NAME(PaintWindow)
-#define iplPolyGlyphBlt8 NAME(PolyGlyphBlt8)
-#define iplPolyGlyphRop8 NAME(PolyGlyphRop8)
-#define iplPolyFillArcSolidCopy NAME(PolyFillArcSolidCopy)
-#define iplPolyFillArcSolidGeneral NAME(PolyFillArcSolidGeneral)
-#define iplPolyFillRect NAME(PolyFillRect)
-#define iplPolyPoint NAME(PolyPoint)
-#define iplPositionWindow NAME(PositionWindow)
-#define iplPutImage NAME(PutImage)
-#define iplReduceRasterOp NAME(ReduceRasterOp)
-#define iplRestoreAreas NAME(RestoreAreas)
-#define iplSaveAreas NAME(SaveAreas)
-#define iplScreenInit NAME(ScreenInit)
-#define iplSegmentSD NAME(SegmentSD)
-#define iplSegmentSS NAME(SegmentSS)
-#define iplSetScanline NAME(SetScanline)
-#define iplSetScreenPixmap NAME(SetScreenPixmap)
-#define iplSetSpans NAME(SetSpans)
-#define iplSetupScreen NAME(SetupScreen)
-#define iplSolidSpansCopy NAME(SolidSpansCopy)
-#define iplSolidSpansGeneral NAME(SolidSpansGeneral)
-#define iplSolidSpansXor NAME(SolidSpansXor)
-#define iplStippleStack NAME(StippleStack)
-#define iplStippleStackTE NAME(StippleStackTE)
-#define iplTEGlyphBlt NAME(TEGlyphBlt)
-#define iplTEOps NAME(TEOps)
-#define iplTEOps1Rect NAME(TEOps1Rect)
-#define iplTile32FSCopy NAME(Tile32FSCopy)
-#define iplTile32FSGeneral NAME(Tile32FSGeneral)
-#define iplUnmapWindow NAME(UnmapWindow)
-#define iplUnnaturalStippleFS NAME(UnnaturalStippleFS)
-#define iplUnnaturalTileFS NAME(UnnaturalTileFS)
-#define iplValidateGC NAME(ValidateGC)
-#define iplVertS NAME(VertS)
-#define iplXRotatePixmap NAME(XRotatePixmap)
-#define iplYRotatePixmap NAME(YRotatePixmap)
-#define iplendpartial NAME(endpartial)
-#define iplendtab NAME(endtab)
-#define iplmask NAME(mask)
-#define iplrmask NAME(rmask)
-#define iplstartpartial NAME(startpartial)
-#define iplstarttab NAME(starttab)
-#define ipl8LineSS1Rect NAME(LineSS1Rect)
-#define ipl8SegmentSS1Rect NAME(SegmentSS1Rect)
-#define ipl8ClippedLineCopy NAME(ClippedLineCopy)
-#define ipl8ClippedLineXor NAME(ClippedLineXor)
-#define ipl8ClippedLineGeneral NAME(ClippedLineGeneral )
-#define ipl8SegmentSS1RectCopy NAME(SegmentSS1RectCopy)
-#define ipl8SegmentSS1RectXor NAME(SegmentSS1RectXor)
-#define ipl8SegmentSS1RectGeneral NAME(SegmentSS1RectGeneral )
-#define ipl8SegmentSS1RectShiftCopy NAME(SegmentSS1RectShiftCopy)
-#define ipl8LineSS1RectCopy NAME(LineSS1RectCopy)
-#define ipl8LineSS1RectXor NAME(LineSS1RectXor)
-#define ipl8LineSS1RectGeneral NAME(LineSS1RectGeneral )
-#define ipl8LineSS1RectPreviousCopy NAME(LineSS1RectPreviousCopy)
-#define iplZeroPolyArcSS8Copy NAME(ZeroPolyArcSSCopy)
-#define iplZeroPolyArcSS8Xor NAME(ZeroPolyArcSSXor)
-#define iplZeroPolyArcSS8General NAME(ZeroPolyArcSSGeneral)
diff --git a/iplan2p4/iplmergerop.h b/iplan2p4/iplmergerop.h
deleted file mode 100644
index 09141c983..000000000
--- a/iplan2p4/iplmergerop.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplmergerop.h,v 3.0 1996/08/18 01:54:53 dawes Exp $ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _IPLANMERGEROP_H_
-#define _IPLANMERGEROP_H_
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* defines:
- INTER_MROP_NAME
- INTER_MROP_DECLARE_REG()
- INTER_MROP_INITIALIZE(alu, pm)
- INTER_MROP_SOLID(src1, src2, dst)
- INTER_MROP_MASK(src1, src2, mask, dst)
- INTER_MROP_PREBUILD(src)
- INTER_MROP_PREBUILT_DECLARE()
- INTER_MROP_PREBUILT_SOLID(src,dst)
- INTER_MROP_PREBUILT_MASK(src,dst,mask)
-*/
-
-#ifndef GXcopy
-#include <X11/X.h>
-#endif
-
-typedef struct _mergeRopBits {
- unsigned long ca1, cx1, ca2, cx2;
-} mergeRopRec, *mergeRopPtr;
-
-extern mergeRopRec mergeRopBits[16];
-
-#define INTER_DeclareMergeRop() \
- INTER_DECLAREGP(_ca1); \
- INTER_DECLAREGP(_cx1); \
- INTER_DECLAREGP(_ca2); \
- INTER_DECLAREGP(_cx2);
-
-#define INTER_DeclarePrebuiltMergeRop() \
- INTER_DECLAREGP(_cca); \
- INTER_DECLAREGP(_ccx);
-
-#define INTER_InitializeMergeRop(alu,pm) { \
- INTER_DECLAREGP(_pm); \
- mergeRopPtr _bits; \
- INTER_PFILL(pm, _pm); \
- _bits = &mergeRopBits[alu]; \
- INTER_ANDMSK(_pm, _bits->ca1, _ca1); \
- INTER_ANDMSK(_pm, _bits->ca2, _ca2); \
- INTER_ANDMSK(_pm, _bits->cx2, _cx2); \
- INTER_NOT(_pm, _pm); \
- INTER_ORMSK(_pm, _bits->cx1, _cx1); \
-}
-
-#define INTER_DoMergeRop(src1, src2, dst) \
- INTER_CPLX(src1, src2, _ca1, _cx1, _ca2, _cx2, dst)
-
-#define INTER_DoMaskMergeRop(src1, src2, mask, dst) \
- INTER_CPLXM(src1, src2, _ca1, _cx1, _ca2, _cx2, mask, dst)
-
-#define INTER_DoPrebuiltMergeRop(src, dst) \
- INTER_DoRRop(src, _cca, _ccx, dst)
-
-#define INTER_DoMaskPrebuiltMergeRop(src, mask, dst) \
- INTER_DoMaskRRop(src, _cca, _ccx, mask, dst)
-
-#define INTER_PrebuildMergeRop(src) \
- INTER_DoRRop(src, _ca1, _cx1, _cca); \
- INTER_DoRRop(src, _ca2, _cx2, _ccx);
-
-#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)
-
-#if (MROP) == Mcopy
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,Copy)
-#define INTER_MROP_DECLARE_REG()
-#define INTER_MROP_INITIALIZE(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_COPY(src, dst2)
-#define INTER_MROP_MASK(src,dst,mask, dst2) INTER_COPYM(src,dst,mask,dst2)
-#endif
-
-#if (MROP) == Mxor
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,Xor)
-#define INTER_MROP_DECLARE_REG()
-#define INTER_MROP_INITIALIZE(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_XOR(src,dst,dst2)
-#define INTER_MROP_MASK(src,dst,mask,dst2) INTER_XORM(src,dst,mask,dst2)
-#endif
-
-#if (MROP) == Mor
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,Or)
-#define INTER_MROP_DECLARE_REG()
-#define INTER_MROP_INITIALIZE(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_OR(src,dst,dst2)
-#define INTER_MROP_MASK(src,dst,mask,dst2) INTER_ORM(src,dst,mask,dst2)
-#endif
-
-#if (MROP) == 0
-#define INTER_MROP_NAME(prefix) INTER_MROP_NAME_CAT(prefix,General)
-#define INTER_MROP_DECLARE_REG() INTER_DeclareMergeRop()
-#define INTER_MROP_INITIALIZE(alu,pm) INTER_InitializeMergeRop(alu,pm)
-#define INTER_MROP_SOLID(src,dst,dst2) INTER_DoMergeRop(src, dst, dst2)
-#define INTER_MROP_MASK(src,dst,mask,dst2) \
- INTER_DoMaskMergeRop(src, dst, mask, dst2)
-#define INTER_MROP_PREBUILD(src) INTER_PrebuildMergeRop(src)
-#define INTER_MROP_PREBUILT_DECLARE() INTER_DeclarePrebuiltMergeRop()
-#define INTER_MROP_PREBUILT_SOLID(src,dst, dst2) \
- INTER_DoPrebuiltMergeRop(dst,dst2)
-#define INTER_MROP_PREBUILT_MASK(src,dst,mask,dst2) \
- INTER_DoMaskPrebuiltMergeRop(dst,mask, dst2)
-#endif
-
-#ifndef INTER_MROP_PREBUILD
-#define INTER_MROP_PREBUILD(src)
-#define INTER_MROP_PREBUILT_DECLARE()
-#define INTER_MROP_PREBUILT_SOLID(src,dst,dst2) INTER_MROP_SOLID(src,dst,dst2)
-#define INTER_MROP_PREBUILT_MASK(src,dst,mask,dst2) \
- INTER_MROP_MASK(src,dst,mask,dst2)
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define INTER_MROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define INTER_MROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
-
-#endif /* _IPLANMERGEROP_H_ */
diff --git a/iplan2p4/iplmskbits.c b/iplan2p4/iplmskbits.c
deleted file mode 100644
index e611bd293..000000000
--- a/iplan2p4/iplmskbits.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "iplmap.h"
-
-unsigned short iplmask[] =
- { 0x8000,
- 0x4000,
- 0x2000,
- 0x1000,
- 0x0800,
- 0x0400,
- 0x0200,
- 0x0100,
- 0x0080,
- 0x0040,
- 0x0020,
- 0x0010,
- 0x0008,
- 0x0004,
- 0x0002,
- 0x0001
- };
-
-unsigned short iplstarttab[] =
- {
- 0x0000,
- 0x7fff,
- 0x3fff,
- 0x1fff,
- 0x0fff,
- 0x07ff,
- 0x03ff,
- 0x01ff,
- 0x00ff,
- 0x007f,
- 0x003f,
- 0x001f,
- 0x000f,
- 0x0007,
- 0x0003,
- 0x0001
- };
-
-unsigned short iplendtab[] =
- {
- 0x0000,
- 0x8000,
- 0xc000,
- 0xe000,
- 0xf000,
- 0xf800,
- 0xfc00,
- 0xfe00,
- 0xff00,
- 0xff80,
- 0xffc0,
- 0xffe0,
- 0xfff0,
- 0xfff8,
- 0xfffc,
- 0xfffe
- };
-
-unsigned short iplstartpartial[] =
- {
- 0xffff,
- 0x7fff,
- 0x3fff,
- 0x1fff,
- 0x0fff,
- 0x07ff,
- 0x03ff,
- 0x01ff,
- 0x00ff,
- 0x007f,
- 0x003f,
- 0x001f,
- 0x000f,
- 0x0007,
- 0x0003,
- 0x0001
- };
-
-unsigned short iplendpartial[] =
- {
- 0xffff,
- 0x8000,
- 0xc000,
- 0xe000,
- 0xf000,
- 0xf800,
- 0xfc00,
- 0xfe00,
- 0xff00,
- 0xff80,
- 0xffc0,
- 0xffe0,
- 0xfff0,
- 0xfff8,
- 0xfffc,
- 0xfffe
- };
-
diff --git a/iplan2p4/iplmskbits.h b/iplan2p4/iplmskbits.h
deleted file mode 100644
index 1efc47d44..000000000
--- a/iplan2p4/iplmskbits.h
+++ /dev/null
@@ -1,500 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#define INTER_PIXGRP unsigned short
-
-#define INTER_PGSZ 16
-#define INTER_PGSZB 2
-#define INTER_PPG 16
-#define INTER_PPGMSK 0xffff
-#define INTER_PLST 15
-#define INTER_PIM 15
-#define INTER_PGSH 4
-#define INTER_PMSK ((1 << (INTER_PLANES)) - 1)
-
-extern INTER_PIXGRP iplmask[];
-extern INTER_PIXGRP iplstarttab[];
-extern INTER_PIXGRP iplendtab[];
-extern INTER_PIXGRP iplstartpartial[];
-extern INTER_PIXGRP iplendpartial[];
-
-#define MFB_PSZ 1
-
-#define INTER_NEXT(x) ((x) + INTER_PLANES)
-#define INTER_NEXT_GROUP(x) (x) += INTER_PLANES
-#define INTER_PREV_GROUP(x) (x) -= INTER_PLANES
-
-#define _I(x) (((unsigned long *) (x))[_INDEX])
-#define _IG(x) ((x)[_INDEX])
-
-#define INTER_DECLAREG(x) INTER_PIXGRP x
-#define INTER_DECLAREGP(x) INTER_PIXGRP x[INTER_PLANES]
-
-#define INTER_DECLARERRAX(x) INTER_PIXGRP *(x)
-#define INTER_DECLARERRAXP(x) INTER_PIXGRP x[INTER_PLANES]
-
-/* and |= PLANE_FILL(~fg), or &= PLANE_FILL(fg) */
-#define INTER_ANDXOR_PM(pm, and, xor) \
- PLANE_TIMESG( \
- if (!(pm & INTER_PLANE(_INDEX))) { \
- _IG(and) = INTER_PPGMSK; \
- _IG(xor) = 0; \
- })
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if INTER_PLANES == 2
-
-#define PLANE_TIMESCONDG(x) \
- ({ int _INDEX; \
- int _ret; \
- _ret=(_INDEX=0, (x)) && \
- (_INDEX=1, (x)) && \
- _ret; \
- })
-
-#define PLANE_TIMESCOND(x) \
- ({ int _INDEX; \
- (_INDEX=0, x) \
- })
-
-#define PLANE_TIMESG(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- }
-
-#define PLANE_TIMES(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- }
-
-#elif INTER_PLANES == 4
-
-#define PLANE_TIMESCONDG(x) \
- ({ int _INDEX; \
- int _ret; \
- _ret=(_INDEX=0, (x)) && \
- (_INDEX=1, (x)) && \
- (_INDEX=2, (x)) && \
- (_INDEX=3, (x)); \
- _ret; \
- })
-
-#define PLANE_TIMESCOND(x) \
- ({ int _INDEX; \
- ((_INDEX=0, x) && \
- (_INDEX=1, x)) \
- })
-
-#define PLANE_TIMESG(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- _INDEX=2; x; \
- _INDEX=3; x; \
- }
-
-#define PLANE_TIMES(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- }
-
-#elif INTER_PLANES == 8
-
-#define PLANE_TIMESCONDG(x) \
- ({ int _INDEX; \
- int _ret; \
- _ret=((_INDEX=0, (x)) && \
- (_INDEX=1, (x)) && \
- (_INDEX=2, (x)) && \
- (_INDEX=3, (x)) && \
- (_INDEX=4, (x)) && \
- (_INDEX=5, (x)) && \
- (_INDEX=6, (x)) && \
- (_INDEX=7, (x))); \
- _ret; \
- })
-
-#define PLANE_TIMESCOND(x) \
- ({ int _INDEX; \
- ((_INDEX=0, x) && \
- (_INDEX=1, x) && \
- (_INDEX=2, x) && \
- (_INDEX=3, x)) \
- })
-
-#define PLANE_TIMESG(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- _INDEX=2; x; \
- _INDEX=3; x; \
- _INDEX=4; x; \
- _INDEX=5; x; \
- _INDEX=6; x; \
- _INDEX=7; x; \
- }
-
-#define PLANE_TIMES(x) \
- { int _INDEX; \
- _INDEX=0; x; \
- _INDEX=1; x; \
- _INDEX=2; x; \
- _INDEX=3; x; \
- }
-
-#endif
-
-/* src = 0 */
-#define INTER_IS_CLR(src) \
- PLANE_TIMESCONDG(_IG(src) == 0)
-
-/* src = PPGMSK ? */
-#define INTER_IS_SET(src) \
- PLANE_TIMESCONDG(_IG(src) == INTER_PPGMSK)
-
-/* (src1 ^ scr2) = PPGMSK ? */
-#define INTER_IS_XOR_SET(src1, src2) \
- PLANE_TIMESCONDG((_IG(src1) ^ _IG(src2)) == INTER_PPGMSK)
-
-/* dst = ~src */
-#define INTER_NOT(src, dst) \
- PLANE_TIMES(_I(dst) = ~_I(src))
-
-/* dst = 0 */
-#define INTER_CLR(dst) \
- PLANE_TIMES(_I(dst) = 0)
-
-/* dst = PPGMSK */
-#define INTER_SET(dst) \
- PLANE_TIMESG(_IG(dst) = INTER_PPGMSK)
-
-/* dst = src */
-#define INTER_COPY(src,dst) \
- PLANE_TIMES(_I(dst) = _I(src))
-
-/* dst2 = (dst & ~mask) | (src & mask) */
-#define INTER_COPYM(src,dst,mask,dst2) \
- PLANE_TIMESG( \
- _IG(dst2) = (_IG(dst) & ~mask) | (_IG(src) & mask) \
- )
-
-/* dst2 = dst ^ src */
-#define INTER_XOR(src,dst,dst2) \
- PLANE_TIMES(_I(dst2) = _I(dst) ^ _I(src))
-
-/* dst2 = dst ^ (src & mask) */
-#define INTER_XORM(src,dst,mask,dst2) \
- PLANE_TIMESG(_IG(dst2) = _IG(dst) ^ (_IG(src) & (mask)))
-
-/* dst2 = dst & src */
-#define INTER_AND(src,dst,dst2) \
- PLANE_TIMES(_I(dst2) = _I(dst) & _I(src))
-
-/* dst2 = dst & (src | ~mask) */
-#define INTER_ANDM(mask,src,dst,dst2) \
- PLANE_TIMESG(_IG(dst2) = _IG(dst) & (_IG(src) | ~(mask)))
-
-/* dst2 = dst | src */
-#define INTER_OR(src,dst,dst2) \
- PLANE_TIMES(_I(dst2) = _I(dst) | _I(src))
-
-/* dst2 = dst | (src & mask) */
-#define INTER_ORM(src,dst,mask,dst2) \
- PLANE_TIMESG(_IG(dst2) = _IG(dst) | (_IG(src) & (mask)))
-
-/* dst = src | msk */
-#define INTER_ORMSK(src,msk,dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) | (msk))
-
-/* dst = src & msk */
-#define INTER_ANDMSK(src,msk,dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) & (msk))
-
-/* dst = (src1 & msk1) | (src2 & msk2) */
-#define INTER_ANDMSK2(src1,msk1,src2,msk2,dst) \
- PLANE_TIMESG(_IG(dst) = (_IG(src1) & (msk1)) | (_IG(src2) & (msk2)))
-
-#define INTER_PLANE(x) (1<<(x))
-
-#define INTER_PFILL(col, fill) \
- PLANE_TIMESG(_IG(fill) = \
- ((col) & INTER_PLANE(_INDEX)) ? INTER_PPGMSK : 0)
-
-/* dst = src >> cnt */
-#define INTER_SCRRIGHT(cnt, src, dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) >> (cnt))
-
-/* dst = src << cnt */
-#define INTER_SCRLEFT(cnt, src, dst) \
- PLANE_TIMESG(_IG(dst) = _IG(src) << (cnt))
-
-/* bits1=(bits >> right) | (bits=psrc) << left) */
-#define INTER_GETRLC(right, left, psrc, bits, bits1) \
- PLANE_TIMESG( _IG(bits1)=(_IG(bits) >> (right)) | \
- ((_IG(bits) = _IG(psrc)) << (left)))
-
-/* bits1=(bits << left) | (bits=psrc) >> right) */
-#define INTER_GETLRC(left, right, psrc, bits, bits1) \
- PLANE_TIMESG( _IG(bits1)=(_IG(bits) << (left)) | \
- ((_IG(bits) = _IG(psrc)) >> (right)))
-
-/* dst=src2 & (src1 & a1 ^ x1) ^ (src1 & a2 ^ x2) */
-#define INTER_CPLX(src1, src2, a1, x1, a2, x2, dst) \
- PLANE_TIMES( _I(dst) = (_I(src2) \
- & (_I(src1) & _I(a1) ^ _I(x1)) \
- ^ (_I(src1) & _I(a2) ^ _I(x2)))) \
-
-/* dst=src2 & ((src1 & a1 ^ x1) | ~mask) ^ ((src1 & a2 ^ x2) & mask) */
-#define INTER_CPLXM(src1, src2, a1, x1, a2, x2, mask, dst) \
- PLANE_TIMESG( _IG(dst) = (_IG(src2) \
- & ((_IG(src1) & _IG(a1) ^ _IG(x1)) | ~mask) \
- ^ ((_IG(src1) & _IG(a2) ^ _IG(x2)) & mask)))
-
-/* dst = (src & ~(bitmask | planemask)) | (insert | (bitmask | planemask)) */
-#define INTER_PMSKINS(bitmask, planemask, insert, src, dst) \
- PLANE_TIMESG( \
- if (planemask & INTER_PLANE(_INDEX)) \
- _IG(dst) = (_IG(src) & ~bitmask) | (_IG(insert) & bitmask) \
- )
-
-/* dst = (src & ~bitmask) | ((insert >> shift) & bitmask) */
-#define INTER_SCRRMSKINS(bitmask, planemask, insert, shift, src, dst) \
- PLANE_TIMESG( \
- if (planemask & INTER_PLANE(_INDEX)) \
- _IG(dst) = (_IG(src) & ~(bitmask)) | \
- ((_IG(insert) >> shift) & (bitmask)) \
- )
-
-/* dst = (src & ~bitmask) | ((insert << shift) & bitmask) */
-#define INTER_SCRLMSKINS(bitmask, planemask, insert, shift, src, dst) \
- PLANE_TIMESG( \
- if (planemask & INTER_PLANE(_INDEX)) \
- _IG(dst) = (_IG(src) & ~bitmask) | \
- ((_IG(insert) << shift) & bitmask) \
- )
-
-/* dst = ((src1 << sl1) & bitmask1) | ((src2 >> sr2) & bitmask2) */
-#define INTER_MSKINSM(bitmask1, sl1, src1, bitmask2, sr2, src2, dst) \
- PLANE_TIMESG( \
- _IG(dst) = ((_IG(src1) << sl1) & (bitmask1)) | \
- ((_IG(src2) >> sr2) & (bitmask2)) \
- )
-
-/* dst = src & and ^ xor */
-#define INTER_DoRRop(src, and, xor, dst) \
- PLANE_TIMES(_I(dst) = (_I(src) & _I(and) ^ _I(xor))) \
-
-#define INTER_DoMaskRRop(src, and, xor, mask, dst) \
- PLANE_TIMESG( \
- _IG(dst) = (_IG(src) & ((_IG(and) | ~(mask))) \
- ^ (_IG(xor) & mask)))
-
-#define INTER_DoRop(result, alu, src, dst) \
-{ \
- if (alu == GXcopy) { \
- PLANE_TIMES( \
- _I(result) = fnCOPY (_I(src), _I(dst))); \
- } else if (alu == GXxor) { \
- PLANE_TIMES( \
- _I(result) = fnXOR (_I(src), _I(dst))); \
- } \
- else { \
- switch (alu) \
- { \
- case GXclear: \
- PLANE_TIMES( \
- _I(result) = fnCLEAR (_I(src), _I(dst))); \
- break; \
- case GXand: \
- PLANE_TIMES( \
- _I(result) = fnAND (_I(src), _I(dst))); \
- break; \
- case GXandReverse: \
- PLANE_TIMES( \
- _I(result) = fnANDREVERSE (_I(src), _I(dst))); \
- break; \
- case GXandInverted: \
- PLANE_TIMES( \
- _I(result) = fnANDINVERTED (_I(src), _I(dst))); \
- break; \
- case GXnoop: \
- PLANE_TIMES( \
- _I(result) = fnNOOP (_I(src), _I(dst))); \
- break; \
- case GXor: \
- PLANE_TIMES( \
- _I(result) = fnOR (_I(src), _I(dst))); \
- break; \
- case GXnor: \
- PLANE_TIMES( \
- _I(result) = fnNOR (_I(src), _I(dst))); \
- break; \
- case GXequiv: \
- PLANE_TIMES( \
- _I(result) = fnEQUIV (_I(src), _I(dst))); \
- break; \
- case GXinvert: \
- PLANE_TIMES( \
- _I(result) = fnINVERT (_I(src), _I(dst))); \
- break; \
- case GXorReverse: \
- PLANE_TIMES( \
- _I(result) = fnORREVERSE (_I(src), _I(dst))); \
- break; \
- case GXcopyInverted: \
- PLANE_TIMES( \
- _I(result) = fnCOPYINVERTED (_I(src), _I(dst))); \
- break; \
- case GXorInverted: \
- PLANE_TIMES( \
- _I(result) = fnORINVERTED (_I(src), _I(dst))); \
- break; \
- case GXnand: \
- PLANE_TIMES( \
- _I(result) = fnNAND (_I(src), _I(dst))); \
- break; \
- case GXset: \
- PLANE_TIMES( \
- _I(result) = fnSET (_I(src), _I(dst))); \
- break; \
- } \
- } \
-}
-
-#define iplGetGroupWidthAndPointer(pDrawable, width, pointer) \
- iplGetTypedWidthAndPointer(pDrawable, width, pointer, INTER_PIXGRP, INTER_PIXGRP)
-
-#define INTER_getstipplepixels(psrcstip, x, w, ones, psrcpix, pdstpix) \
-{ \
- unsigned long q; \
- int m; \
- if (ones) { \
- if ((m = ((x) - ((MFB_PPW*MFB_PSZ)-MFB_PPW))) > 0) { \
- q = (*(psrcstip)) << m; \
- if ( (x)+(w) > (MFB_PPW*MFB_PSZ) ) \
- q |= *((psrcstip)+1) >> ((MFB_PPW*MFB_PSZ)-m); \
- } \
- else \
- q = (*(psrcstip)) >> -m; \
- } \
- else { \
- if ((m = ((x) - ((MFB_PPW*MFB_PSZ)-MFB_PPW))) > 0) { \
- q = (~ *(psrcstip)) << m; \
- if ( (x)+(w) > (MFB_PPW*MFB_PSZ) ) \
- q |= (~*((psrcstip)+1)) >> ((MFB_PPW*MFB_PSZ)-m); \
- } \
- else \
- q = (~ *(psrcstip)) >> -m; \
- } \
- q >>=16; \
- INTER_ANDMSK(psrcpix,q,pdstpix); \
-}
-
-#define INTER_getstipplepixelsb(psrcstip, x, w, psrcpix0, psrcpix1, pdstpix) \
-{ \
- unsigned long q,qn; \
- int m; \
- if ((m = ((x) - ((MFB_PPW*MFB_PSZ)-MFB_PPW))) > 0) { \
- q = (*(psrcstip)) << m; \
- qn = (~ *(psrcstip)) << m; \
- if ( (x)+(w) > (MFB_PPW*MFB_PSZ) ) { \
- q |= *((psrcstip)+1) >> ((MFB_PPW*MFB_PSZ)-m); \
- qn |= (~ *((psrcstip)+1)) >> ((MFB_PPW*MFB_PSZ)-m); \
- } \
- } \
- else { \
- q = (*(psrcstip)) >> -m; \
- qn = (~ *(psrcstip)) >> -m; \
- } \
- q >>=16; \
- qn >>=16; \
- INTER_ANDMSK2(psrcpix0,qn,psrcpix1,q,pdstpix); \
-}
-
-#define INTER_maskbits(x, w, startmask, endmask, nlg) \
- startmask = iplstarttab[(x) & INTER_PIM]; \
- endmask = iplendtab[((x)+(w)) & INTER_PIM]; \
- if (startmask) \
- nlg = (((w) - (INTER_PPG - ((x) & INTER_PIM))) >> INTER_PGSH); \
- else \
- nlg = (w) >> INTER_PGSH;
-
-#define INTER_maskpartialbits(x, w, mask) \
- mask = iplstartpartial[(x) & INTER_PIM] & \
- iplendpartial[((x) + (w)) & INTER_PIM];
-
-#define INTER_mask32bits(x, w, startmask, endmask, nlw) \
- startmask = iplstarttab[(x) & INTER_PIM]; \
- endmask = iplendtab[((x)+(w)) & INTER_PIM];
-
-#define INTER_getbits(psrc, x, w, pdst) \
- if ( ((x) + (w)) <= INTER_PPG) \
- { \
- INTER_SCRLEFT((x), psrc, pdst); \
- } \
- else \
- { \
- int m; \
- m = INTER_PPG-(x); \
- INTER_MSKINSM(iplendtab[m], x, psrc, \
- iplstarttab[m], m, INTER_NEXT(psrc), pdst); \
- }
-
-#define INTER_putbits(psrc, x, w, pdst, planemask) \
- if ( ((x)+(w)) <= INTER_PPG) \
- { \
- INTER_DECLAREG(tmpmask); \
- INTER_maskpartialbits((x), (w), tmpmask); \
- INTER_SCRRMSKINS(tmpmask, planemask, psrc, x, pdst, pdst); \
- } \
- else \
- { \
- unsigned long m; \
- unsigned long n; \
- m = INTER_PPG-(x); \
- n = (w) - m; \
- INTER_SCRRMSKINS(iplstarttab[x], planemask, psrc, x, \
- pdst, pdst); \
- INTER_SCRLMSKINS(iplendtab[n], planemask, psrc, m, \
- INTER_NEXT(pdst), INTER_NEXT(pdst)); \
- }
-
-#define INTER_putbitsrop(psrc, x, w, pdst, planemask, rop) \
-if ( ((x)+(w)) <= INTER_PPG) \
-{ \
- INTER_DECLAREG(tmpmask); \
- INTER_DECLAREGP(t1); INTER_DECLAREGP(t2); \
- INTER_maskpartialbits((x), (w), tmpmask); \
- INTER_SCRRIGHT((x), (psrc), (t1)); \
- INTER_DoRop(t2, rop, t1, pdst); \
- INTER_PMSKINS(tmpmask, planemask, t2, pdst, pdst); \
-} \
-else \
-{ \
- unsigned long m; \
- unsigned long n; \
- INTER_DECLAREGP(t1); INTER_DECLAREGP(t2); \
- m = INTER_PPG-(x); \
- n = (w) - m; \
- INTER_SCRRIGHT((x), (psrc), (t1)); \
- INTER_DoRop(t2, rop, t1, pdst); \
- INTER_PMSKINS(iplstarttab[x], planemask, t2, pdst, pdst); \
- INTER_SCRLEFT(m, (psrc), (t1)); \
- INTER_DoRop(t2, rop, t1, pdst+1); \
- INTER_PMSKINS(iplendtab[n], planemask, t2, pdst, pdst); \
-}
-
-#define INTER_putbitsmropshort(src, x, w, pdst) { \
- INTER_DECLAREG(_tmpmask); \
- INTER_DECLAREGP(_t1); \
- INTER_maskpartialbits((x), (w), _tmpmask); \
- INTER_SCRRIGHT((x), (src), _t1); \
- INTER_DoMaskMergeRop(_t1, pdst, _tmpmask, pdst); \
-}
-
diff --git a/iplan2p4/iplpack.c b/iplan2p4/iplpack.c
deleted file mode 100644
index a6ca6f12b..000000000
--- a/iplan2p4/iplpack.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* abcd abcd abcd abcd abcd abcd abcd abcd */
-/* aaaa aaaa bbbb bbbb cccc cccc dddd dddd */
-
-unsigned long tabi[256] = {
- 0x00000000,0x00001000,0x10000000,0x10001000,
- 0x00002000,0x00003000,0x10002000,0x10003000,
- 0x20000000,0x20001000,0x30000000,0x30001000,
- 0x20002000,0x20003000,0x30002000,0x30003000,
- 0x00004000,0x00005000,0x10004000,0x10005000,
- 0x00006000,0x00007000,0x10006000,0x10007000,
- 0x20004000,0x20005000,0x30004000,0x30005000,
- 0x20006000,0x20007000,0x30006000,0x30007000,
- 0x40000000,0x40001000,0x50000000,0x50001000,
- 0x40002000,0x40003000,0x50002000,0x50003000,
- 0x60000000,0x60001000,0x70000000,0x70001000,
- 0x60002000,0x60003000,0x70002000,0x70003000,
- 0x40004000,0x40005000,0x50004000,0x50005000,
- 0x40006000,0x40007000,0x50006000,0x50007000,
- 0x60004000,0x60005000,0x70004000,0x70005000,
- 0x60006000,0x60007000,0x70006000,0x70007000,
- 0x00008000,0x00009000,0x10008000,0x10009000,
- 0x0000a000,0x0000b000,0x1000a000,0x1000b000,
- 0x20008000,0x20009000,0x30008000,0x30009000,
- 0x2000a000,0x2000b000,0x3000a000,0x3000b000,
- 0x0000c000,0x0000d000,0x1000c000,0x1000d000,
- 0x0000e000,0x0000f000,0x1000e000,0x1000f000,
- 0x2000c000,0x2000d000,0x3000c000,0x3000d000,
- 0x2000e000,0x2000f000,0x3000e000,0x3000f000,
- 0x40008000,0x40009000,0x50008000,0x50009000,
- 0x4000a000,0x4000b000,0x5000a000,0x5000b000,
- 0x60008000,0x60009000,0x70008000,0x70009000,
- 0x6000a000,0x6000b000,0x7000a000,0x7000b000,
- 0x4000c000,0x4000d000,0x5000c000,0x5000d000,
- 0x4000e000,0x4000f000,0x5000e000,0x5000f000,
- 0x6000c000,0x6000d000,0x7000c000,0x7000d000,
- 0x6000e000,0x6000f000,0x7000e000,0x7000f000,
- 0x80000000,0x80001000,0x90000000,0x90001000,
- 0x80002000,0x80003000,0x90002000,0x90003000,
- 0xa0000000,0xa0001000,0xb0000000,0xb0001000,
- 0xa0002000,0xa0003000,0xb0002000,0xb0003000,
- 0x80004000,0x80005000,0x90004000,0x90005000,
- 0x80006000,0x80007000,0x90006000,0x90007000,
- 0xa0004000,0xa0005000,0xb0004000,0xb0005000,
- 0xa0006000,0xa0007000,0xb0006000,0xb0007000,
- 0xc0000000,0xc0001000,0xd0000000,0xd0001000,
- 0xc0002000,0xc0003000,0xd0002000,0xd0003000,
- 0xe0000000,0xe0001000,0xf0000000,0xf0001000,
- 0xe0002000,0xe0003000,0xf0002000,0xf0003000,
- 0xc0004000,0xc0005000,0xd0004000,0xd0005000,
- 0xc0006000,0xc0007000,0xd0006000,0xd0007000,
- 0xe0004000,0xe0005000,0xf0004000,0xf0005000,
- 0xe0006000,0xe0007000,0xf0006000,0xf0007000,
- 0x80008000,0x80009000,0x90008000,0x90009000,
- 0x8000a000,0x8000b000,0x9000a000,0x9000b000,
- 0xa0008000,0xa0009000,0xb0008000,0xb0009000,
- 0xa000a000,0xa000b000,0xb000a000,0xb000b000,
- 0x8000c000,0x8000d000,0x9000c000,0x9000d000,
- 0x8000e000,0x8000f000,0x9000e000,0x9000f000,
- 0xa000c000,0xa000d000,0xb000c000,0xb000d000,
- 0xa000e000,0xa000f000,0xb000e000,0xb000f000,
- 0xc0008000,0xc0009000,0xd0008000,0xd0009000,
- 0xc000a000,0xc000b000,0xd000a000,0xd000b000,
- 0xe0008000,0xe0009000,0xf0008000,0xf0009000,
- 0xe000a000,0xe000b000,0xf000a000,0xf000b000,
- 0xc000c000,0xc000d000,0xd000c000,0xd000d000,
- 0xc000e000,0xc000f000,0xd000e000,0xd000f000,
- 0xe000c000,0xe000d000,0xf000c000,0xf000d000,
- 0xe000e000,0xe000f000,0xf000e000,0xf000f000,
- };
-static unsigned long tabp[256] = {
- 0x00000000,0x00020000,0x00080000,0x000a0000,
- 0x00200000,0x00220000,0x00280000,0x002a0000,
- 0x00800000,0x00820000,0x00880000,0x008a0000,
- 0x00a00000,0x00a20000,0x00a80000,0x00aa0000,
- 0x02000000,0x02020000,0x02080000,0x020a0000,
- 0x02200000,0x02220000,0x02280000,0x022a0000,
- 0x02800000,0x02820000,0x02880000,0x028a0000,
- 0x02a00000,0x02a20000,0x02a80000,0x02aa0000,
- 0x08000000,0x08020000,0x08080000,0x080a0000,
- 0x08200000,0x08220000,0x08280000,0x082a0000,
- 0x08800000,0x08820000,0x08880000,0x088a0000,
- 0x08a00000,0x08a20000,0x08a80000,0x08aa0000,
- 0x0a000000,0x0a020000,0x0a080000,0x0a0a0000,
- 0x0a200000,0x0a220000,0x0a280000,0x0a2a0000,
- 0x0a800000,0x0a820000,0x0a880000,0x0a8a0000,
- 0x0aa00000,0x0aa20000,0x0aa80000,0x0aaa0000,
- 0x20000000,0x20020000,0x20080000,0x200a0000,
- 0x20200000,0x20220000,0x20280000,0x202a0000,
- 0x20800000,0x20820000,0x20880000,0x208a0000,
- 0x20a00000,0x20a20000,0x20a80000,0x20aa0000,
- 0x22000000,0x22020000,0x22080000,0x220a0000,
- 0x22200000,0x22220000,0x22280000,0x222a0000,
- 0x22800000,0x22820000,0x22880000,0x228a0000,
- 0x22a00000,0x22a20000,0x22a80000,0x22aa0000,
- 0x28000000,0x28020000,0x28080000,0x280a0000,
- 0x28200000,0x28220000,0x28280000,0x282a0000,
- 0x28800000,0x28820000,0x28880000,0x288a0000,
- 0x28a00000,0x28a20000,0x28a80000,0x28aa0000,
- 0x2a000000,0x2a020000,0x2a080000,0x2a0a0000,
- 0x2a200000,0x2a220000,0x2a280000,0x2a2a0000,
- 0x2a800000,0x2a820000,0x2a880000,0x2a8a0000,
- 0x2aa00000,0x2aa20000,0x2aa80000,0x2aaa0000,
- 0x80000000,0x80020000,0x80080000,0x800a0000,
- 0x80200000,0x80220000,0x80280000,0x802a0000,
- 0x80800000,0x80820000,0x80880000,0x808a0000,
- 0x80a00000,0x80a20000,0x80a80000,0x80aa0000,
- 0x82000000,0x82020000,0x82080000,0x820a0000,
- 0x82200000,0x82220000,0x82280000,0x822a0000,
- 0x82800000,0x82820000,0x82880000,0x828a0000,
- 0x82a00000,0x82a20000,0x82a80000,0x82aa0000,
- 0x88000000,0x88020000,0x88080000,0x880a0000,
- 0x88200000,0x88220000,0x88280000,0x882a0000,
- 0x88800000,0x88820000,0x88880000,0x888a0000,
- 0x88a00000,0x88a20000,0x88a80000,0x88aa0000,
- 0x8a000000,0x8a020000,0x8a080000,0x8a0a0000,
- 0x8a200000,0x8a220000,0x8a280000,0x8a2a0000,
- 0x8a800000,0x8a820000,0x8a880000,0x8a8a0000,
- 0x8aa00000,0x8aa20000,0x8aa80000,0x8aaa0000,
- 0xa0000000,0xa0020000,0xa0080000,0xa00a0000,
- 0xa0200000,0xa0220000,0xa0280000,0xa02a0000,
- 0xa0800000,0xa0820000,0xa0880000,0xa08a0000,
- 0xa0a00000,0xa0a20000,0xa0a80000,0xa0aa0000,
- 0xa2000000,0xa2020000,0xa2080000,0xa20a0000,
- 0xa2200000,0xa2220000,0xa2280000,0xa22a0000,
- 0xa2800000,0xa2820000,0xa2880000,0xa28a0000,
- 0xa2a00000,0xa2a20000,0xa2a80000,0xa2aa0000,
- 0xa8000000,0xa8020000,0xa8080000,0xa80a0000,
- 0xa8200000,0xa8220000,0xa8280000,0xa82a0000,
- 0xa8800000,0xa8820000,0xa8880000,0xa88a0000,
- 0xa8a00000,0xa8a20000,0xa8a80000,0xa8aa0000,
- 0xaa000000,0xaa020000,0xaa080000,0xaa0a0000,
- 0xaa200000,0xaa220000,0xaa280000,0xaa2a0000,
- 0xaa800000,0xaa820000,0xaa880000,0xaa8a0000,
- 0xaaa00000,0xaaa20000,0xaaa80000,0xaaaa0000,
- };
-
-void
-iplUnpackLine(int planes, int longs, unsigned int *psrc, unsigned short *ipsrc)
-{
- unsigned long temp,m;
- unsigned char *t=(unsigned char *) &temp;
- unsigned char *i=(unsigned char *) ipsrc;
- unsigned char *s=(unsigned char *) psrc;
- int j,off;
- switch (planes) {
- case 2:
- for (j = 0 ; j < longs ; j++)
- {
- *((long *) ipsrc)++=(tabi[s[0]] >> 0) |
- (tabi[s[1]] >> 4) |
- (tabi[s[2]] >> 8) |
- (tabi[s[3]] >> 12);
- s+=4;
- }
- break;
- case 4:
- for (j = 0 ; j < longs ; j++)
- {
- temp= (tabi[s[0]] >> 0) |
- (tabi[s[1]] >> 4) |
- (tabi[s[2]] >> 8) |
- (tabi[s[3]] >> 12);
- temp= (tabi[t[0]] >> 0) |
- (tabi[t[1]] >> 4) |
- (tabi[t[2]] >> 8) |
- (tabi[t[3]] >> 12);
- s+=4;
- if (j & 1) {
- i[7]=t[0];
- i[5]=t[1];
- i[3]=t[2];
- i[1]=t[3];
- i += 8;
- }
- else {
- i[6]=t[0];
- i[4]=t[1];
- i[2]=t[2];
- i[0]=t[3];
- }
- }
- break;
- case 8:
- for (j = 0 ; j < longs ; j++)
- {
- temp= (tabi[s[0]] >> 0) |
- (tabi[s[1]] >> 4) |
- (tabi[s[2]] >> 8) |
- (tabi[s[3]] >> 12);
-
- temp= (tabi[t[0]] >> 0) |
- (tabi[t[1]] >> 4) |
- (tabi[t[2]] >> 8) |
- (tabi[t[3]] >> 12);
-
- temp= (tabi[t[0]] >> 0) |
- (tabi[t[1]] >> 4) |
- (tabi[t[2]] >> 8) |
- (tabi[t[3]] >> 12);
-
- off=12-(j & 3)*4;
- m=0xf << off;
- ipsrc[7]=(ipsrc[7] & ~m) | (((temp >> 28) << off) & m);
- ipsrc[6]=(ipsrc[6] & ~m) | (((temp >> 24) << off) & m);
- ipsrc[5]=(ipsrc[5] & ~m) | (((temp >> 20) << off) & m);
- ipsrc[4]=(ipsrc[4] & ~m) | (((temp >> 16) << off) & m);
- ipsrc[3]=(ipsrc[3] & ~m) | (((temp >> 12) << off) & m);
- ipsrc[2]=(ipsrc[2] & ~m) | (((temp >> 8) << off) & m);
- ipsrc[1]=(ipsrc[1] & ~m) | (((temp >> 4) << off) & m);
- ipsrc[0]=(ipsrc[0] & ~m) | (((temp >> 0) << off) & m);
- if (! off)
- ipsrc +=8;
- s+=4;
- }
- }
-}
-
-void
-iplPackLine(int planes, int longs, unsigned short *ipdst, unsigned int *pdst)
-{
- unsigned long temp,m;
- unsigned char *t=(unsigned char *) &temp;
- unsigned char *i=(unsigned char *) ipdst;
- int j,off;
- switch (planes) {
- case 2:
- for (j = 0 ; j < longs ; j++)
- {
- *pdst++=(tabp[i[2]] >> 0) |
- (tabp[i[0]] >> 1) |
- (tabp[i[3]] >> 16) |
- (tabp[i[1]] >> 17);
- i+=4;
- }
- break;
- case 4:
- for (j = 0 ; j < longs ; j++)
- {
- if (j & 1) {
- temp= (tabp[i[7]] >> 0) |
- (tabp[i[3]] >> 1) |
- (tabp[i[5]] >> 16) |
- (tabp[i[1]] >> 17);
- i += 8;
- }
- else {
- temp= (tabp[i[6]] >> 0) |
- (tabp[i[2]] >> 1) |
- (tabp[i[4]] >> 16) |
- (tabp[i[0]] >> 17);
- }
- *pdst++=(tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
- }
- break;
- case 8:
- for (j = 0 ; j < longs ; j++)
- {
- off=12-(j & 3)*4;
- m=0xf;
- temp=(((ipdst[7] >> off) & m) << 28) |
- (((ipdst[6] >> off) & m) << 24) |
- (((ipdst[5] >> off) & m) << 20) |
- (((ipdst[4] >> off) & m) << 16) |
- (((ipdst[3] >> off) & m) << 12) |
- (((ipdst[2] >> off) & m) << 8) |
- (((ipdst[1] >> off) & m) << 4) |
- (((ipdst[0] >> off) & m) << 0);
-
- if (! off)
- ipdst +=8;
-
- temp= (tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
-
- temp= (tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
-
- *pdst++=(tabp[t[0]] >> 0) |
- (tabp[t[2]] >> 1) |
- (tabp[t[1]] >> 16) |
- (tabp[t[3]] >> 17);
- }
- }
-}
-
-unsigned long
-iplpack(unsigned long ipl)
-{
- unsigned char *ic=(unsigned char *) &ipl;
- return (tabp[ic[0]]) | /* a0a0a0a0a0a0a0a00000000000000000 */
- (tabp[ic[2]] >> 1) | /* abababababababab0000000000000000 */
- (tabp[ic[1]] >> 16) | /* ababababababababa0a0a0a0a0a0a0a0 */
- (tabp[ic[3]] >> 17); /* abababababababababababababababab */
-}
-
-unsigned long
-iplunpack(unsigned long pack)
-{
- unsigned char *ip=(unsigned char *) &pack;
- return (tabi[ip[0]]) | /* aaaa000000000000bbbb000000000000 */
- (tabi[ip[1]] >> 4) | /* aaaaaaaa00000000bbbbbbbb00000000 */
- (tabi[ip[2]] >> 8) | /* aaaaaaaaaaaa0000bbbbbbbbbbbb0000 */
- (tabi[ip[3]] >> 12); /* aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbb */
-}
-
diff --git a/iplan2p4/iplpack.h b/iplan2p4/iplpack.h
deleted file mode 100644
index 53c2c988f..000000000
--- a/iplan2p4/iplpack.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* $XFree86$ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#define NUM_LONGS(planes, xs, xe) \
- (((((xe) * (planes) + 31) & ~31) - \
- (((xs) * (planes)) & ~31))/32)
-
-#define NUM_TEMP_BYTES(planes, longs) \
- (((2 * (longs) + (planes) - 1) / planes + 1) * planes * 2)
diff --git a/iplan2p4/iplpixmap.c b/iplan2p4/iplpixmap.c
deleted file mode 100644
index 7bfb49551..000000000
--- a/iplan2p4/iplpixmap.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplpixmap.c,v 3.0 1996/08/18 01:54:59 dawes Exp $ */
-/* $XConsortium: iplpixmap.c,v 5.14 94/04/17 20:28:56 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-*/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "mi.h"
-#include "ipl.h"
-#include "iplmskbits.h"
-
-extern unsigned long endtab[];
-
-PixmapPtr
-iplCreatePixmap (pScreen, width, height, depth)
- ScreenPtr pScreen;
- int width;
- int height;
- int depth;
-{
- PixmapPtr pPixmap;
- size_t datasize;
- size_t paddedWidth;
- int ipad=INTER_PLANES*2 - 1;
-
- paddedWidth = PixmapBytePad(width, depth);
- paddedWidth = (paddedWidth + ipad) & ~ipad;
- 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 = 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;
-#ifdef PIXPRIV
- pPixmap->devPrivate.ptr = datasize ?
- (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL;
-#else
- pPixmap->devPrivate.ptr = (pointer)((long)(pPixmap + 1));
-#endif
- return pPixmap;
-}
-
-Bool
-iplDestroyPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- if(--pPixmap->refcnt)
- return TRUE;
- xfree(pPixmap);
- return TRUE;
-}
-
-PixmapPtr
-iplCopyPixmap(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);
- 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
- iplXRotatePixmap code gets used if we rotate the pixmap later.
- iplYRotatePixmap 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
-iplPadPixmap(pPixmap)
- PixmapPtr pPixmap;
-{
- register int width = pPixmap->drawable.width;
- register int h;
- register unsigned short mask;
- register unsigned short *p;
- register unsigned short bits; /* real pattern bits */
- register int i;
- int rep; /* repeat count for pattern */
-
- if (width >= INTER_PGSZ)
- return;
-
- rep = INTER_PGSZ/width;
-/* if (rep*width != INTER_PGSZ)
- return; */
-
- mask = iplendtab[width];
-
- p = (unsigned short *)(pPixmap->devPrivate.ptr);
- for (h=0; h < pPixmap->drawable.height * INTER_PLANES; h++)
- {
- *p &= mask;
- bits = *p ;
- for(i=1; i<rep; i++)
- {
-#if (BITMAP_BIT_ORDER == MSBFirst)
- bits >>= width;
-#else
- bits <<= width;
-#endif
- *p |= bits;
- }
- p++;
- }
- pPixmap->drawable.width = rep*width; /* PGSZ/(pPixmap->drawable.bitsPerPixel); */
-}
-
-
-#ifdef notdef
-/*
- * ipl debugging routine -- assumes pixmap is 1 byte deep
- */
-static ipldumppixmap(pPix)
- PixmapPtr pPix;
-{
- unsigned int *pw;
- char *psrc, *pdst;
- int i, j;
- char line[66];
-
- ErrorF( "pPixmap: 0x%x\n", pPix);
- ErrorF( "%d wide %d high\n", pPix->drawable.width, pPix->drawable.height);
- if (pPix->drawable.width > 64)
- {
- ErrorF( "too wide to see\n");
- return;
- }
-
- pw = (unsigned int *) pPix->devPrivate.ptr;
- psrc = (char *) pw;
-
-/*
- for ( i=0; i<pPix->drawable.height; ++i )
- ErrorF( "0x%x\n", pw[i] );
-*/
-
- for ( i = 0; i < pPix->drawable.height; ++i ) {
- pdst = line;
- for(j = 0; j < pPix->drawable.width; j++) {
- *pdst++ = *psrc++ ? 'X' : ' ' ;
- }
- *pdst++ = '\n';
- *pdst++ = '\0';
- ErrorF( "%s", line);
- }
-}
-#endif /* notdef */
-
-/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that
- * words are PGSZ bits wide, and that the least significant bit appears on the
- * left.
- */
-void
-iplXRotatePixmap(pPix, rw)
- PixmapPtr pPix;
- register int rw;
-{
- INTER_DECLAREG(*pw);
- INTER_DECLAREG(*pwFinal);
- INTER_DECLAREGP(t);
- int rot;
-
- if (pPix == NullPixmap)
- return;
-
- switch (((DrawablePtr) pPix)->bitsPerPixel) {
- case INTER_PLANES:
- break;
- case 1:
- mfbXRotatePixmap(pPix, rw);
- return;
- default:
- ErrorF("iplXRotatePixmap: unsupported bitsPerPixel %d\n", ((DrawablePtr) pPix)->bitsPerPixel);
- return;
- }
- pw = (unsigned short *)pPix->devPrivate.ptr;
- modulus (rw, (int) pPix->drawable.width, rot);
- if(pPix->drawable.width == 16)
- {
- pwFinal = pw + pPix->drawable.height * INTER_PLANES;
- while(pw < pwFinal)
- {
- INTER_COPY(pw, t);
- INTER_MSKINSM(iplendtab[rot], INTER_PPG-rot, t,
- ~0, rot, t, pw)
- INTER_NEXT_GROUP(pw);
- }
- }
- else
- {
- ErrorF("ipl internal error: trying to rotate odd-sized pixmap.\n");
-#ifdef notdef
- register unsigned long *pwTmp;
- int size, tsize;
-
- tsize = PixmapBytePad(pPix->drawable.width - rot, pPix->drawable.depth);
- pwTmp = (unsigned long *) ALLOCATE_LOCAL(pPix->drawable.height * tsize);
- if (!pwTmp)
- return;
- /* divide pw (the pixmap) in two vertically at (w - rot) and swap */
- tsize >>= 2;
- size = pPix->devKind >> SIZE0F(PixelGroup);
- iplQuickBlt((long *)pw, (long *)pwTmp,
- 0, 0, 0, 0,
- (int)pPix->drawable.width - rot, (int)pPix->drawable.height,
- size, tsize);
- iplQuickBlt((long *)pw, (long *)pw,
- (int)pPix->drawable.width - rot, 0, 0, 0,
- rot, (int)pPix->drawable.height,
- size, size);
- iplQuickBlt((long *)pwTmp, (long *)pw,
- 0, 0, rot, 0,
- (int)pPix->drawable.width - rot, (int)pPix->drawable.height,
- tsize, size);
- DEALLOCATE_LOCAL(pwTmp);
-#endif
- }
-}
-
-/* Rotates pixmap pPix by h lines. Assumes that h is always less than
- pPix->drawable.height
- works on any width.
- */
-void
-iplYRotatePixmap(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 rot;
-
- if (pPix == NullPixmap)
- return;
- switch (((DrawablePtr) pPix)->bitsPerPixel) {
- case INTER_PLANES:
- break;
- case 1:
- mfbYRotatePixmap(pPix, rh);
- return;
- default:
- ErrorF("iplYRotatePixmap: unsupported bitsPerPixel %d\n", ((DrawablePtr) pPix)->bitsPerPixel);
- return;
- }
-
- modulus (rh, (int) pPix->drawable.height, rot);
- pbase = (char *)pPix->devPrivate.ptr;
-
- nbyDown = rot * pPix->devKind;
- nbyUp = (pPix->devKind * pPix->drawable.height) - nbyDown;
- if(!(ptmp = (char *)ALLOCATE_LOCAL(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 rot */
- DEALLOCATE_LOCAL(ptmp);
-}
-
-void
-iplCopyRotatePixmap(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.depth = psrcPix->drawable.depth;
- pdstPix->drawable.bitsPerPixel = psrcPix->drawable.bitsPerPixel;
- pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER;
- }
- else
- {
- if (pdstPix)
- /* FIX XBUG 6168 */
- (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix);
- *ppdstPix = pdstPix = iplCopyPixmap(psrcPix);
- if (!pdstPix)
- return;
- }
- iplPadPixmap(pdstPix);
- if (xrot)
- iplXRotatePixmap(pdstPix, xrot);
- if (yrot)
- iplYRotatePixmap(pdstPix, yrot);
-}
diff --git a/iplan2p4/iplply1rct.c b/iplan2p4/iplply1rct.c
deleted file mode 100644
index bac2be4ed..000000000
--- a/iplan2p4/iplply1rct.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplply1rct.c,v 3.0 1996/08/18 01:55:00 dawes Exp $ */
-/*
- * $XConsortium: iplply1rct.c,v 1.14 94/04/17 20:28:56 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "mistruct.h"
-
-#include "ipl.h"
-#include "iplrrop.h"
-
-#include "iplmskbits.h"
-
-void
-INTER_RROP_NAME(iplFillPoly1Rect) (pDrawable, pGC, shape, mode, count, ptsIn)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int count;
- DDXPointPtr ptsIn;
-{
- iplPrivGCPtr devPriv;
- int ngwidth;
- unsigned short *addrl, *addr;
- int maxy;
- int origin;
- register int vertex1, vertex2;
- int c;
- BoxPtr extents;
- int clip;
- int y;
- int *vertex1p, *vertex2p;
- int *endp;
- int x1, x2;
- int dx1, dx2;
- int dy1, dy2;
- int e1, e2;
- int step1, step2;
- int sign1, sign2;
- int h;
- int l, r;
- INTER_DECLAREG(mask);
- INTER_DECLAREG(bits);
- int nmiddle;
- INTER_RROP_DECLARE
- bits=~0;
-
- if (mode == CoordModePrevious)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
-
- devPriv = iplGetGCPrivate(pGC);
-#ifdef NO_ONE_RECT
- if (REGION_NUM_RECTS(pGC->pCompositeClip) != 1)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn);
- return;
- }
-#endif
- origin = *((int *) &pDrawable->x);
- origin -= (origin & 0x8000) << 1;
- extents = &pGC->pCompositeClip->extents;
- INTER_RROP_FETCH_GCPRIV(devPriv);
- vertex1 = *((int *) &extents->x1) - origin;
- vertex2 = *((int *) &extents->x2) - origin - 0x00010001;
- clip = 0;
- y = 32767;
- maxy = 0;
- vertex2p = (int *) ptsIn;
- endp = vertex2p + count;
- if (shape == Convex)
- {
- 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;
- }
- }
- else
- {
- int yFlip = 0;
- dx1 = 1;
- x2 = -1;
- x1 = -1;
- 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 (c == x1)
- continue;
- if (dx1 > 0)
- {
- if (x2 < 0)
- x2 = c;
- else
- dx2 = dx1 = (c - x1) >> 31;
- }
- else
- if ((c - x1) >> 31 != dx1)
- {
- dx1 = ~dx1;
- yFlip++;
- }
- x1 = c;
- }
- x1 = (x2 - c) >> 31;
- if (x1 != dx1)
- yFlip++;
- if (x1 != dx2)
- yFlip++;
- if (yFlip != 2)
- clip = 0x8000;
- }
- if (y == maxy)
- return;
-
- if (clip & 0x80008000)
- {
- miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn);
- return;
- }
-
-#define AddrYPlus(a,y) ((a) + (y) * ngwidth)
-
- iplGetGroupWidthAndPointer(pDrawable, ngwidth, addrl);
- addrl = AddrYPlus(addrl,y + pDrawable->y);
- 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 & INTER_PIM;
- l -= c;
-
- addr = addrl + (l >> INTER_PGSH) * INTER_PLANES;
- if (c + nmiddle < INTER_PPG)
- {
- mask = (bits >> c) ^ (bits >> (c+nmiddle));
- INTER_RROP_SOLID_MASK(addr,mask);
- }
- else
- {
- if (c)
- {
- mask = bits >> c;
- INTER_RROP_SOLID_MASK(addr,mask);
- nmiddle += c - INTER_PPG;
- INTER_NEXT_GROUP(addr);
- }
- nmiddle >>= INTER_PGSH;
- while (--nmiddle >= 0) {
- INTER_RROP_SOLID(addr); INTER_NEXT_GROUP(addr);
- }
- if (mask = ~(bits >> (r & INTER_PIM)))
- INTER_RROP_SOLID_MASK(addr,mask);
- }
- if (!--h)
- break;
- addrl = AddrYPlus (addrl, 1);
- Step(x1,dx1,dy1,e1,sign1,step1)
- Step(x2,dx2,dy2,e2,sign2,step2)
- }
- if (y == maxy)
- break;
- addrl = AddrYPlus (addrl, 1);
- }
-}
diff --git a/iplan2p4/iplpntwin.c b/iplan2p4/iplpntwin.c
deleted file mode 100644
index 8421ba377..000000000
--- a/iplan2p4/iplpntwin.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: iplpntwin.c,v 5.18 94/04/17 20:28:57 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#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 "ipl.h"
-#include "mi.h"
-
-void
-iplPaintWindow(pWin, pRegion, what)
- WindowPtr pWin;
- RegionPtr pRegion;
- int what;
-{
- register iplPrivWin *pPrivWin;
- WindowPtr pBgWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
-
- switch (what) {
- case PW_BACKGROUND:
- switch (pWin->backgroundState) {
- case None:
- break;
- case ParentRelative:
- do {
- pWin = pWin->parent;
- } while (pWin->backgroundState == ParentRelative);
- (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion,
- what);
- break;
- case BackgroundPixmap:
- if (pPrivWin->fastBackground)
- {
- iplFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBackground);
- }
- else
- {
- iplFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixmap,
- (int) pWin->drawable.x, (int) pWin->drawable.y);
- }
- break;
- case BackgroundPixel:
- iplFillBoxSolid ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->background.pixel);
- break;
- }
- break;
- case PW_BORDER:
- if (pWin->borderIsPixel)
- {
- iplFillBoxSolid ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixel);
- }
- else if (pPrivWin->fastBorder)
- {
- iplFillBoxTile32 ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pPrivWin->pRotatedBorder);
- }
- else
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
-
- iplFillBoxTileOdd ((DrawablePtr)pWin,
- (int)REGION_NUM_RECTS(pRegion),
- REGION_RECTS(pRegion),
- pWin->border.pixmap,
- (int) pBgWin->drawable.x,
- (int) pBgWin->drawable.y);
- }
- break;
- }
-}
-
-/*
- * Use the RROP macros in copy mode
- */
-
-#define RROP GXcopy
-#include "iplrrop.h"
-#include "iplmskbits.h"
-
-
-# define Expand(left, right, leftAdjust) { \
- int widthStep; \
- widthStep = widthDst - (nmiddle + leftAdjust) * INTER_PLANES; \
- while (h--) { \
- left \
- m = nmiddle; \
- INTER_RROP_SPAN(pdst, m); \
- right \
- pdst += widthStep; \
- } \
-}
-
-void
-iplFillBoxSolid (pDrawable, nBox, pBox, pixel)
- DrawablePtr pDrawable;
- int nBox;
- BoxPtr pBox;
- unsigned long pixel;
-{
- INTER_DECLAREG(*pdstBase);
- int widthDst;
- register int h;
- INTER_DECLAREGP(rrop_xor);
- INTER_DECLAREG(*pdst);
- INTER_DECLAREG(leftMask);
- INTER_DECLAREG(rightMask);
- int nmiddle;
- register int m;
- int w;
-
- iplGetGroupWidthAndPointer(pDrawable, widthDst, pdstBase);
-
- INTER_PFILL(pixel, rrop_xor);
- for (; nBox; nBox--, pBox++)
- {
- pdst = pdstBase + pBox->y1 * widthDst;
- h = pBox->y2 - pBox->y1;
- w = pBox->x2 - pBox->x1;
- pdst += (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- if ((pBox->x1 & INTER_PIM) + w <= INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, leftMask);
- while (h--) {
- INTER_COPYM(rrop_xor, pdst, leftMask, pdst);
- pdst += widthDst;
- }
- }
- else
- {
- INTER_maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);
- if (leftMask)
- {
- if (rightMask)
- {
- Expand (INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- INTER_RROP_SOLID_MASK (pdst, rightMask); ,
- 1)
- }
- else
- {
- Expand (INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- ;,
- 1)
- }
- }
- else
- {
- if (rightMask)
- {
- Expand (;,
- INTER_RROP_SOLID_MASK (pdst, rightMask);,
- 0)
- }
- else
- {
- Expand (;,
- ;,
- 0)
- }
- }
- }
- }
-}
-
-void
-iplFillBoxTile32 (pDrawable, nBox, pBox, tile)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* rotated, expanded tile */
-{
- INTER_DECLAREGP(rrop_xor);
- INTER_DECLAREG(*pdst);
- register int m;
- INTER_DECLAREG(*psrc);
- int tileHeight;
-
- int widthDst;
- int w;
- int h;
- INTER_DECLAREG(leftMask);
- INTER_DECLAREG(rightMask);
- int nmiddle;
- int y;
- int srcy;
-
- INTER_DECLAREG(*pdstBase);
-
- tileHeight = tile->drawable.height;
- psrc = (unsigned short *)tile->devPrivate.ptr;
-
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase);
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- pdst = pdstBase + (pBox->y1 * widthDst) +
- (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- srcy = y % tileHeight;
-
-#define StepTile INTER_COPY(psrc + srcy * INTER_PLANES, rrop_xor); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0;
-
- if ( ((pBox->x1 & INTER_PIM) + w) < INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, leftMask);
- rightMask = ~leftMask;
- while (h--)
- {
- StepTile
- INTER_MSKINSM(rightMask, 0, pdst, leftMask, 0, rrop_xor, pdst);
- pdst += widthDst;
- }
- }
- else
- {
- INTER_maskbits(pBox->x1, w, leftMask, rightMask, nmiddle);
-
- if (leftMask)
- {
- if (rightMask)
- {
- Expand (StepTile
- INTER_RROP_SOLID_MASK(pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- INTER_RROP_SOLID_MASK(pdst, rightMask);,
- 1)
- }
- else
- {
- Expand (StepTile
- INTER_RROP_SOLID_MASK(pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- ;,
- 1)
- }
- }
- else
- {
- if (rightMask)
- {
- Expand (StepTile
- ,
- INTER_RROP_SOLID_MASK(pdst, rightMask);,
- 0)
- }
- else
- {
- Expand (StepTile
- ,
- ;,
- 0)
- }
- }
- }
- pBox++;
- }
-}
diff --git a/iplan2p4/iplpolypnt.c b/iplan2p4/iplpolypnt.c
deleted file mode 100644
index 61aea7ffd..000000000
--- a/iplan2p4/iplpolypnt.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplpolypnt.c,v 3.0 1996/08/18 01:55:02 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-********************************************************/
-
-/* $XConsortium: iplpolypnt.c,v 5.17 94/04/17 20:28:57 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "regionstr.h"
-#include "scrnintstr.h"
-#include "ipl.h"
-#include "iplmskbits.h"
-
-#define isClipped(c,ul,lr) ((((c) - (ul)) | ((lr) - (c))) & ClipMask)
-
-/* WARNING: pbox contains two shorts. This code assumes they are packed
- * and can be referenced together as an INT32.
- */
-
-#define PointLoop(fill) { \
- for (nbox = REGION_NUM_RECTS(cclip), pbox = REGION_RECTS(cclip); \
- --nbox >= 0; \
- pbox++) \
- { \
- c1 = *((INT32 *) &pbox->x1) - off; \
- c2 = *((INT32 *) &pbox->x2) - off - 0x00010001; \
- for (ppt = (INT32 *) pptInit, i = npt; --i >= 0;) \
- { \
- pt = *ppt++; \
- if (!isClipped(pt,c1,c2)) { \
- fill \
- } \
- } \
- } \
-}
-
-void
-iplPolyPoint(pDrawable, pGC, mode, npt, pptInit)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int mode;
- int npt;
- xPoint *pptInit;
-{
- register INT32 pt;
- register INT32 c1, c2;
- register unsigned long ClipMask = 0x80008000;
- INTER_DECLAREG(*addrg);
- register int ngwidth;
- register int xoffset;
- INTER_DECLAREG(*addrgt);
- register INT32 *ppt;
- RegionPtr cclip;
- int nbox;
- register int i;
- register BoxPtr pbox;
- INTER_DECLARERRAX(and);
- INTER_DECLARERRAX(xor);
- int rop = pGC->alu;
- int off;
- iplPrivGCPtr devPriv;
- xPoint *pptPrev;
-
- devPriv =iplGetGCPrivate(pGC);
- rop = devPriv->rop;
- if (rop == GXnoop)
- return;
- cclip = pGC->pCompositeClip;
- xor = devPriv->xorg;
- and = devPriv->andg;
- if ((mode == CoordModePrevious) && (npt > 1))
- {
- for (pptPrev = pptInit + 1, i = npt - 1; --i >= 0; pptPrev++)
- {
- pptPrev->x += (pptPrev-1)->x;
- pptPrev->y += (pptPrev-1)->y;
- }
- }
- off = *((int *) &pDrawable->x);
- off -= (off & 0x8000) << 1;
- iplGetGroupWidthAndPointer(pDrawable, ngwidth, addrg);
- addrg = addrg + pDrawable->y * ngwidth +
- (pDrawable->x >> INTER_PGSH) * INTER_PLANES;
- xoffset = pDrawable->x & INTER_PIM;
- PointLoop( addrgt = addrg + intToY(pt) * ngwidth
- + ((intToX(pt) + xoffset) >> INTER_PGSH) * INTER_PLANES;
- INTER_DoMaskRRop(addrgt, and, xor,
- iplmask[(intToX(pt) + xoffset) & INTER_PIM], addrgt);
- )
-}
diff --git a/iplan2p4/iplrrop.c b/iplan2p4/iplrrop.c
deleted file mode 100644
index 1b65fa9dc..000000000
--- a/iplan2p4/iplrrop.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* $XFree86$ */
-/*
- * $XConsortium: iplrrop.c,v 1.8 94/04/17 20:28:59 dpw Exp $
- *
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* ipl reduced rasterop computations */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ipl.h"
-
-#include "iplmskbits.h"
-
-/* A description:
- *
- * There are four possible operations on each bit in the destination word,
- *
- * 1 2 3 4
- *
- * 0 0 0 1 1
- * 1 0 1 0 1
- *
- * On examination of the reduced rop equation (dst = (dst & and) ^ xor),
- * these four fall to reduced rops as follows:
- *
- * and 0 1 1 0
- * xor 0 0 1 1
- *
- * or, (if 'and' is expensive) (dst = (dst | or) ^ xor)
- *
- * or 1 0 0 1
- * xor 1 0 1 0
- *
- * The trouble with using this later equation is that trivial
- * rasterop reduction is more difficult; some common rasterops
- * use complicated expressions of xor/and instead of the simple
- * ones while other common rasterops are not made any simpler:
- *
- * GXcopy: *dst = ~xor instead of *dst = xor
- * GXand: *dst = *dst & ~or instead of *dst = *dst & and
- * GXor: *dst = *dst | or instead of *dst = *dst | xor
- * GXxor: *dst = *dst ^ xor instead of *dst = *dst ^ xor
- *
- * If you're really set on using this second mechanism, the changes
- * are pretty simple.
- *
- * All that remains is to provide a mechanism for computing and/xor values
- * based on the raster op and foreground value.
- *
- * The 16 rops fall as follows, with the associated reduced
- * rop and/xor and or/xor values. The values in parenthesis following the
- * reduced values gives an equation using the source value for
- * the reduced value, and is one of {0, src, ~src, 1} as appropriate.
- *
- * clear and andReverse copy
- * src 0 1 0 1 0 1 0 1
- * dst 0 0 0 0 0 0 0 0 1 0 0 1
- * 1 0 0 1 0 1 1 0 0 1 0 1
- *
- * and 0 0 (0) 0 1 (src) 0 1 (src) 0 0 (0)
- * xor 0 0 (0) 0 0 (0) 0 1 (src) 0 1 (src)
- *
- * or 1 1 (1) 1 0 (~src) 1 0 (~src) 1 1 (1)
- * xor 1 1 (1) 1 0 (~src) 1 1 (1) 1 0 (~src)
- *
- * andInverted noop xor or
- * src 0 1 0 1 0 1 0 1
- * dst 0 0 0 0 0 0 0 0 1 0 0 1
- * 1 1 0 1 1 1 1 1 0 1 1 1
- *
- * and 1 0 (~src) 1 1 (1) 1 1 (1) 1 0 (~src)
- * xor 0 0 (0) 0 0 (0) 0 1 (src) 0 1 (src)
- *
- * or 0 1 (src) 0 0 (0) 0 0 (0) 0 1 (src)
- * xor 0 1 (src) 0 0 (0) 0 1 (src) 0 0 (0)
- *
- * nor equiv invert orReverse
- * src 0 1 0 1 0 1 0 1
- * dst 0 1 0 0 1 0 0 1 1 0 1 1
- * 1 0 0 1 0 1 1 0 0 1 0 1
- *
- * and 1 0 (~src) 1 1 (1) 1 1 (1) 1 0 (~src)
- * xor 1 0 (~src) 1 0 (~src) 1 1 (1) 1 1 (1)
- *
- * or 0 1 (src) 0 0 (0) 0 0 (0) 0 1 (src)
- * xor 1 1 (1) 1 0 (~src) 1 1 (1) 1 0 (~src)
- *
- * copyInverted orInverted nand set
- * src 0 1 0 1 0 1 0 1
- * dst 0 1 0 0 1 0 0 1 1 0 1 1
- * 1 1 0 1 1 1 1 1 0 1 1 1
- *
- * and 0 0 (0) 0 1 (src) 0 1 (src) 0 0 (0)
- * xor 1 0 (~src) 1 0 (~src) 1 1 (1) 1 1 (1)
- *
- * or 1 1 (1) 1 0 (~src) 1 0 (~src) 1 1 (1)
- * xor 0 1 (src) 0 0 (0) 0 1 (src) 0 0 (0)
- */
-
-iplReduceRasterOp (rop, fg, pm, and, xor)
- int rop;
- unsigned long fg, pm;
- unsigned short *and;
- unsigned short *xor;
-{
- int rrop;
- switch (rop)
- {
- case GXclear:
- INTER_CLR(and);
- INTER_CLR(xor);
- break;
- case GXand:
- INTER_PFILL(fg, and);
- INTER_CLR(xor);
- break;
- case GXandReverse:
- INTER_PFILL(fg, and);
- INTER_PFILL(fg, xor);
- break;
- case GXcopy:
- INTER_CLR(and);
- INTER_PFILL(fg, xor);
- break;
- case GXandInverted:
- INTER_PFILL(~fg, xor);
- INTER_CLR(xor);
- break;
- case GXnoop:
- INTER_SET(and);
- INTER_CLR(xor);
- break;
- case GXxor:
- INTER_SET(and);
- INTER_PFILL(fg, xor);
- break;
- case GXor:
- INTER_PFILL(~fg, and);
- INTER_PFILL(fg, xor);
- break;
- case GXnor:
- INTER_PFILL(~fg, and);
- INTER_PFILL(~fg, xor);
- break;
- case GXequiv:
- INTER_SET(and);
- INTER_PFILL(~fg, xor);
- case GXinvert:
- INTER_SET(and);
- INTER_SET(xor);
- break;
- case GXorReverse:
- INTER_PFILL(~fg, and);
- INTER_SET(xor);
- break;
- case GXcopyInverted:
- INTER_CLR(and);
- INTER_PFILL(~fg, xor);
- break;
- case GXorInverted:
- INTER_PFILL(fg, and);
- INTER_PFILL(~fg, xor);
- break;
- case GXnand:
- INTER_PFILL(fg, and);
- INTER_SET(xor);
- break;
- case GXset:
- INTER_CLR(and);
- INTER_SET(xor);
- break;
- }
- INTER_ANDXOR_PM(pm, and, xor);
- if (INTER_IS_CLR(and))
- rrop = GXcopy;
- else if (INTER_IS_SET(and))
- rrop = GXxor;
- else if (INTER_IS_CLR(xor))
- rrop = GXand;
- else if (INTER_IS_XOR_SET(and, xor))
- rrop = GXor;
- else
- rrop = GXset;
- return rrop;
-}
-
diff --git a/iplan2p4/iplrrop.h b/iplan2p4/iplrrop.h
deleted file mode 100644
index 05a88fea4..000000000
--- a/iplan2p4/iplrrop.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplrrop.h,v 3.0 1996/08/18 01:55:04 dawes Exp $ */
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-/* reduced raster ops */
-/* INTER_RROP_DECLARE INTER_RROP_FETCH_GC,
- INTER_RROP_SOLID_MASK, INTER_RROP_SPAN INTER_RROP_NAME */
-
-#define INTER_RROP_FETCH_GC(gc) \
-INTER_RROP_FETCH_GCPRIV(((iplPrivGCPtr)(gc)->devPrivates[iplGCPrivateIndex].ptr))
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#if RROP == GXcopy
-#define INTER_RROP_DECLARE register unsigned short *rrop_xor;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_COPY(rrop_xor, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_COPYM(rrop_xor, dst, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Copy)
-#endif /* GXcopy */
-
-#if RROP == GXxor
-#define INTER_RROP_DECLARE register unsigned short *rrop_xor;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_xor = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_XOR(rrop_xor, dst, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_XORM(rrop_xor, dst, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Xor)
-#endif /* GXxor */
-
-#if RROP == GXand
-#define INTER_RROP_DECLARE register unsigned short *rrop_and;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->andg;
-#define INTER_RROP_SOLID(dst) INTER_AND(rrop_and, dst, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_ANDM(rrop_and, dst, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,And)
-#endif /* GXand */
-
-#if RROP == GXor
-#define INTER_RROP_DECLARE register unsigned short *rrop_or;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_or = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_OR(rrop_or, dst, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) INTER_ORM(mask, rrop_or, dst, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Or)
-#endif /* GXor */
-
-#if RROP == GXnoop
-#define INTER_RROP_DECLARE
-#define INTER_RROP_FETCH_GCPRIV(devPriv)
-#define INTER_RROP_SOLID(dst)
-#define INTER_RROP_SOLID_MASK(dst,mask)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,Noop)
-#endif /* GXnoop */
-
-#if RROP == GXset
-#define INTER_RROP_DECLARE register unsigned short *rrop_and, *rrop_xor;
-#define INTER_RROP_FETCH_GCPRIV(devPriv) rrop_and = (devPriv)->andg; \
- rrop_xor = (devPriv)->xorg;
-#define INTER_RROP_SOLID(dst) INTER_DoRRop(dst, rrop_and, rrop_xor, dst)
-#define INTER_RROP_SOLID_MASK(dst,mask) \
- INTER_DoMaskRRop(dst, rrop_and, rrop_xor, mask, dst)
-#define INTER_RROP_NAME(prefix) INTER_RROP_NAME_CAT(prefix,General)
-#endif /* GXset */
-
-#ifndef INTER_RROP_SPAN
-#define INTER_RROP_SPAN(pdst,nmiddle) \
- while (--(nmiddle) >= 0) { \
- INTER_RROP_SOLID(pdst); \
- (pdst) = INTER_NEXT(pdst); \
- }
-
-#endif
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define INTER_RROP_NAME_CAT(prefix,suffix) prefix##suffix
-#else
-#define INTER_RROP_NAME_CAT(prefix,suffix) prefix/**/suffix
-#endif
-
diff --git a/iplan2p4/iplscrinit.c b/iplan2p4/iplscrinit.c
deleted file mode 100644
index 073e7b9a4..000000000
--- a/iplan2p4/iplscrinit.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplscrinit.c,v 3.2 1998/06/27 12:55:03 hohndel Exp $ */
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- 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 no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or X Consortium
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and X Consortium make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-********************************************************/
-/* $XConsortium: iplscrinit.c,v 5.32 94/04/17 20:29:00 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#include "ipl.h"
-#include "mi.h"
-#include "mistruct.h"
-#include "dix.h"
-#include "mibstore.h"
-
-
-BSFuncRec iplBSFuncRec = {
- iplSaveAreas,
- iplRestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-Bool
-iplCloseScreen (index, pScreen)
- int index;
- ScreenPtr pScreen;
-{
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
- for (d = 0; d < pScreen->numDepths; d++)
- xfree (depths[d].vids);
- xfree (depths);
- xfree (pScreen->visuals);
-#ifdef CFB_NEED_SCREEN_PRIVATE
- xfree (pScreen->devPrivates[iplScreenPrivateIndex].ptr);
-#else
- xfree (pScreen->devPrivate);
-#endif
- return TRUE;
-}
-
-Bool
-iplSetupScreen(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 */
-{
- int i;
- extern RegionPtr (*iplPuntCopyPlane)();
-
- if (!iplAllocatePrivates(pScreen, (int *) 0, (int *) 0))
- return FALSE;
- pScreen->defColormap = FakeClientID(0);
- /* let CreateDefColormap do whatever it wants for pixels */
- pScreen->blackPixel = pScreen->whitePixel = (Pixel) 0;
- pScreen->QueryBestSize = mfbQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = iplGetImage;
- pScreen->GetSpans = iplGetSpans;
- pScreen->CreateWindow = iplCreateWindow;
- pScreen->DestroyWindow = iplDestroyWindow;
- pScreen->PositionWindow = iplPositionWindow;
- pScreen->ChangeWindowAttributes = iplChangeWindowAttributes;
- pScreen->RealizeWindow = iplMapWindow;
- pScreen->UnrealizeWindow = iplUnmapWindow;
- pScreen->PaintWindowBackground = iplPaintWindow;
- pScreen->PaintWindowBorder = iplPaintWindow;
- pScreen->CopyWindow = iplCopyWindow;
- pScreen->CreatePixmap = iplCreatePixmap;
- pScreen->DestroyPixmap = iplDestroyPixmap;
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->CreateGC = iplCreateGC;
- pScreen->CreateColormap = iplInitializeColormap;
- pScreen->DestroyColormap = (void (*)())NoopDDA;
- pScreen->InstallColormap = iplInstallColormap;
- pScreen->UninstallColormap = iplUninstallColormap;
- pScreen->ListInstalledColormaps = iplListInstalledColormaps;
- pScreen->StoreColors = (void (*)())NoopDDA;
- pScreen->ResolveColor = iplResolveColor;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-
- mfbRegisterCopyPlaneProc (pScreen, iplCopyPlane);
- return TRUE;
-}
-
-#ifdef CFB_NEED_SCREEN_PRIVATE
-Bool
-iplCreateScreenResources(pScreen)
- ScreenPtr pScreen;
-{
- Bool retval;
-
- pointer oldDevPrivate = pScreen->devPrivate;
- pScreen->devPrivate = pScreen->devPrivates[iplScreenPrivateIndex].ptr;
- retval = miCreateScreenResources(pScreen);
- pScreen->devPrivates[iplScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
- return retval;
-}
-#endif
-
-Bool
-iplFinishScreenInit(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 */
-{
- int i, j;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pointer oldDevPrivate;
-#endif
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
-
- rootdepth = 0;
- if (!iplInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual,((unsigned long)1<<(INTER_PLANES-1)), 8))
- return FALSE;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- oldDevPrivate = pScreen->devPrivate;
-#endif
- if (! miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
- /* overwrite miCloseScreen with our own */
- pScreen->CloseScreen = iplCloseScreen;
-#ifdef CFB_NEED_SCREEN_PRIVATE
- pScreen->CreateScreenResources = iplCreateScreenResources;
- pScreen->devPrivates[iplScreenPrivateIndex].ptr = pScreen->devPrivate;
- pScreen->devPrivate = oldDevPrivate;
-#endif
- pScreen->BackingStoreFuncs = iplBSFuncRec;
- pScreen->GetScreenPixmap = iplGetScreenPixmap;
- pScreen->SetScreenPixmap = iplSetScreenPixmap;
- return TRUE;
-}
-
-/* dts * (inch/dot) * (25.4 mm / inch) = mm */
-Bool
-iplScreenInit(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 (!iplSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width))
- return FALSE;
- if (!iplFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width))
- return FALSE;
-#if INTER_PLANES == 2
-/* This shouldn't be necessary */
- PixmapWidthPaddingInfo[2].padPixelsLog2 = 4;
- PixmapWidthPaddingInfo[2].padRoundUp = 15;
- PixmapWidthPaddingInfo[2].padBytesLog2 = 2;
-#endif
- return TRUE;
-}
-
-PixmapPtr
-iplGetScreenPixmap(pScreen)
- ScreenPtr pScreen;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- return (PixmapPtr)(pScreen->devPrivates[iplScreenPrivateIndex].ptr);
-#else
- return (PixmapPtr)(pScreen->devPrivate.ptr);
-#endif
-}
-
-void
-iplSetScreenPixmap(pPix)
- PixmapPtr pPix;
-{
-#ifdef CFB_NEED_SCREEN_PRIVATE
- if (pPix)
- pPix->drawable.pScreen->devPrivates[iplScreenPrivateIndex].ptr =
- (pointer)pPix;
-#else
- if (pPix)
- pPix->drawable.pScreen->devPrivate.ptr = (pointer)pPix;
-#endif
-}
diff --git a/iplan2p4/iplsetsp.c b/iplan2p4/iplsetsp.c
deleted file mode 100644
index 9a6c8128d..000000000
--- a/iplan2p4/iplsetsp.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: iplsetsp.c,v 5.10 94/04/17 20:29:01 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-
-#include "misc.h"
-#include "regionstr.h"
-#include "gcstruct.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-
-#include "ipl.h"
-
-#include "iplmskbits.h"
-#include "iplmergerop.h"
-#include "iplpack.h"
-
-/* iplSetScanline -- 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.)
- */
-iplSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst, planemask)
- 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 unsigned int *psrc;
- register int alu; /* raster op */
- INTER_DECLAREG(*pdstBase); /* start of the drawable */
- int widthDst; /* width of drawable in groups */
- unsigned long planemask;
-{
- int w; /* width of scanline in bits */
- INTER_DECLAREG(*pdst); /* where to put the bits */
- INTER_DECLAREGP(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;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- int nlMiddle, nl, longs;
- INTER_DECLAREG(*ipsrc);
- INTER_DECLAREG(*tmppsrc);
- INTER_DeclareMergeRop()
-
- INTER_InitializeMergeRop(alu,planemask);
-
- longs=NUM_LONGS(INTER_PLANES, xOrigin, xEnd);
-
- tmppsrc = ipsrc = (unsigned short *)
- ALLOCATE_LOCAL(NUM_TEMP_BYTES(INTER_PLANES,longs));
-
- iplUnpackLine(INTER_PLANES, longs, psrc, ipsrc);
-
- pdst = pdstBase + (y * widthDst) + (xStart >> INTER_PGSH) * INTER_PLANES;
- offSrc = (xStart - xOrigin) & INTER_PIM;
- w = xEnd - xStart;
- dstBit = xStart & INTER_PIM;
-
- ipsrc += ((xStart - xOrigin) >> INTER_PGSH) * INTER_PLANES;
- if (dstBit + w <= INTER_PPG)
- {
- INTER_maskpartialbits(dstBit, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- INTER_maskbits(xStart, w, startmask, endmask, nlMiddle);
- }
- if (startmask)
- nstart = INTER_PPG - dstBit;
- else
- nstart = 0;
- if (endmask)
- nend = xEnd & INTER_PIM;
- else
- nend = 0;
- if (startmask)
- {
- INTER_getbits(ipsrc, offSrc, nstart, tmpSrc);
- INTER_putbitsmropshort(tmpSrc, dstBit, nstart, pdst);
- INTER_NEXT_GROUP(pdst);
- offSrc += nstart;
- if (offSrc > INTER_PLST)
- {
- INTER_NEXT_GROUP(ipsrc);
- offSrc -= INTER_PPG;
- }
- }
- nl = nlMiddle;
- while (nl--)
- {
- INTER_getbits(ipsrc, offSrc, INTER_PPG, tmpSrc);
- INTER_DoMergeRop(tmpSrc, pdst, pdst);
- INTER_NEXT_GROUP(pdst);
- INTER_NEXT_GROUP(ipsrc);
- }
- if (endmask)
- {
- INTER_getbits(ipsrc, offSrc, nend, tmpSrc);
- INTER_putbitsmropshort(tmpSrc, 0, nend, pdst);
- }
- DEALLOCATE_LOCAL(tmppsrc);
-}
-
-
-
-/* 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
-iplSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted)
- DrawablePtr pDrawable;
- GCPtr pGC;
- char *pcharsrc;
- register DDXPointPtr ppt;
- int *pwidth;
- int nspans;
- int fSorted;
-{
- unsigned int *psrc = (unsigned int *)pcharsrc;
- INTER_DECLAREG(*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 = iplGetCompositeClip(pGC);
- pptLast = ppt + nspans;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- yMax = (int) pDrawable->y + (int) pDrawable->height;
-
- 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);
- iplSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, pGC->planemask);
- 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, pDrawable->depth);
- 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);
- iplSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu,
- pdstBase, widthDst, pGC->planemask);
- }
-
- }
- }
- psrc += PixmapWidthInPadUnits(*pwidth, pDrawable->depth);
- ppt++;
- pwidth++;
- }
- }
-}
-
diff --git a/iplan2p4/iplsolid.c b/iplan2p4/iplsolid.c
deleted file mode 100644
index 768bf0ace..000000000
--- a/iplan2p4/iplsolid.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplsolid.c,v 3.0 1996/08/18 01:55:08 dawes Exp $ */
-/*
- * $XConsortium: iplsolid.c,v 1.9 94/04/17 20:29:02 dpw Exp $
- *
-Copyright (c) 1990 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-#include "iplrrop.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#include "iplmskbits.h"
-
-# define Expand(left, right, leftAdjust) { \
- while (h--) { \
- pdst = pdstRect; \
- left \
- m = nmiddle; \
- INTER_RROP_SPAN(pdst, m); \
- right \
- pdstRect += widthDst; \
- } \
-}
-
-
-void
-INTER_RROP_NAME(iplFillRectSolid) (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox;
- BoxPtr pBox;
-{
- register int m;
- INTER_DECLAREG(*pdst);
- INTER_RROP_DECLARE
- INTER_DECLAREG(leftMask);
- INTER_DECLAREG(rightMask);
- INTER_DECLAREG(*pdstBase);
- INTER_DECLAREG(*pdstRect);
- int nmiddle;
- int h;
- int w;
- int widthDst;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- INTER_RROP_FETCH_GC(pGC)
-
- for (; nBox; nBox--, pBox++)
- {
- pdstRect = pdstBase + pBox->y1 * widthDst;
- h = pBox->y2 - pBox->y1;
- w = pBox->x2 - pBox->x1;
- pdstRect += (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- if ((pBox->x1 & INTER_PIM) + w <= INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, leftMask);
- pdst = pdstRect;
- while (h--) {
- INTER_RROP_SOLID_MASK (pdst, leftMask);
- pdst += widthDst;
- }
- }
- else
- {
- INTER_maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);
- if (leftMask)
- {
- if (rightMask) /* left mask and right mask */
- {
- Expand(INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- INTER_RROP_SOLID_MASK (pdst, rightMask);, 1)
- }
- else /* left mask and no right mask */
- {
- Expand(INTER_RROP_SOLID_MASK (pdst, leftMask);
- INTER_NEXT_GROUP(pdst);,
- ;, 1)
- }
- }
- else
- {
- if (rightMask) /* no left mask and right mask */
- {
- Expand(;,
- INTER_RROP_SOLID_MASK (pdst, rightMask);, 0)
- }
- else /* no left mask and no right mask */
- {
- Expand(;,
- ;, 0)
- }
- }
- }
- }
-}
-
-void
-INTER_RROP_NAME(iplSolidSpans) (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;
-{
- INTER_DECLAREG(*pdstBase);
- int widthDst;
-
- INTER_RROP_DECLARE
-
- INTER_DECLAREG(*pdst);
- register int ngmiddle;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- register int w;
- int x;
-
- /* next three parameters are post-clip */
- int n; /* number of spans to fill */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- int *pwidth;
- iplPrivGCPtr devPriv;
-
- devPriv = iplGetGCPrivate(pGC);
- INTER_RROP_FETCH_GCPRIV(devPriv)
- n = nInit * miFindMaxBand(pGC->pCompositeClip);
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans(pGC->pCompositeClip, pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (n--)
- {
- x = ppt->x;
- pdst = pdstBase + (ppt->y * widthDst);
- ++ppt;
- w = *pwidth++;
- if (!w)
- continue;
- if ((x & INTER_PIM) + w <= INTER_PPG)
- {
- pdst += (x >> INTER_PGSH) * INTER_PLANES;
- INTER_maskpartialbits (x, w, startmask);
- INTER_RROP_SOLID_MASK (pdst, startmask);
- }
- else
- {
- pdst += (x >> INTER_PGSH) * INTER_PLANES;
- INTER_maskbits (x, w, startmask, endmask, ngmiddle);
- if (startmask)
- {
- INTER_RROP_SOLID_MASK (pdst, startmask);
- INTER_NEXT_GROUP(pdst);
- }
-
- INTER_RROP_SPAN(pdst,ngmiddle);
-
- if (endmask)
- {
- INTER_RROP_SOLID_MASK (pdst, endmask);
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/iplan2p4/ipltegblt.c b/iplan2p4/ipltegblt.c
deleted file mode 100644
index 9a46e31c6..000000000
--- a/iplan2p4/ipltegblt.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* $XFree86$ */
-/* $XConsortium: ipltegblt.c,v 5.9 94/04/17 20:29:03 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include "ipl.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 "mi.h"
-#define MFB_CONSTS_ONLY
-#include "maskbits.h"
-
-#include "iplmskbits.h"
-
-/*
- this works for fonts with glyphs <= 32 bits wide, on an
- arbitrarily deep display. Use iplTEGlyphBlt8 for 8 bit displays.
-
- 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.
-
-*/
-
-void
-iplTEGlyphBlt(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;
- INTER_DECLAREG(*pdstBase); /* pointer to group with top row
- of current glyph */
-
- int w; /* width of glyph and char */
- int h; /* height of glyph and char */
- register int xpos=x; /* current x%32 */
- int ypos=y; /* current y%32 */
- register unsigned char *pglyph;
- int widthGlyph;
-
- INTER_DECLAREG(*pdst); /* pointer to current group in dst */
- int hTmp; /* counter for height */
- BoxRec bbox; /* for clipping */
-
- register int wtmp,xtemp,width;
- INTER_DECLAREGP(bgfill);
- INTER_DECLAREGP(fgfill);
- unsigned long *ptemp;
- INTER_DECLAREGP(tmpDst1);
- INTER_DECLAREGP(tmpDst2);
- INTER_DECLAREG(*pdtmp);
- int tmpx;
-
- xpos += pDrawable->x;
- ypos += pDrawable->y;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- wtmp = FONTMAXBOUNDS(pfont,characterWidth);
- h = FONTASCENT(pfont) + FONTDESCENT(pfont);
- widthGlyph = GLYPHWIDTHBYTESPADDED(*ppci);
-
- xpos += FONTMAXBOUNDS(pfont,leftSideBearing);
- ypos -= FONTASCENT(pfont);
-
- bbox.x1 = xpos;
- bbox.x2 = xpos + (wtmp * nglyph);
- bbox.y1 = ypos;
- bbox.y2 = ypos + h;
-
- INTER_PFILL(pGC->fgPixel, fgfill);
- INTER_PFILL(pGC->bgPixel, bgfill);
-
- switch (RECT_IN_REGION(pGC->pScreen, iplGetCompositeClip(pGC), &bbox))
- {
- case rgnOUT:
- break;
- 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...
- */
-#if 1
- miImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase);
-#endif
- break;
- case rgnIN:
-
- pdtmp = pdstBase + (widthDst * ypos);
- while(nglyph--)
- {
-
- pglyph = FONTGLYPHBITS(pglyphBase, *ppci++);
- pdst = pdtmp;
- hTmp = h;
-
- while (hTmp--)
- {
- x = xpos;
- width = wtmp;
- xtemp = 0;
-
- while (width > 0)
- {
- tmpx = x & INTER_PIM;
- w = min(width, INTER_PPG - tmpx);
- /* w = min(w, (PGSZ - xtemp)); */
-
- ptemp = (unsigned long *)(pglyph + (xtemp >> MFB_PWSH));
-#if 1
- INTER_getstipplepixelsb(ptemp,xtemp,w,bgfill,fgfill,tmpDst1);
-#endif
- {
- INTER_DECLAREG(*pdsttmp) =
- pdst + (x >> INTER_PGSH) * INTER_PLANES;
-#if 1
- INTER_putbits(tmpDst1,tmpx,w,pdsttmp,pGC->planemask);
-#endif
- }
- x += w;
- xtemp += w;
- width -= w;
- }
- pglyph += widthGlyph;
- pdst += widthDst;
- }
- xpos += wtmp;
- }
- break;
- }
-}
diff --git a/iplan2p4/ipltile32.c b/iplan2p4/ipltile32.c
deleted file mode 100644
index 06be5a2e8..000000000
--- a/iplan2p4/ipltile32.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/ipltile32.c,v 3.0 1996/08/18 01:55:10 dawes Exp $ */
-/*
- * Fill 32 bit tiled rectangles. Used by both PolyFillRect and PaintWindow.
- * no depth dependencies.
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-*/
-
-/* $XConsortium: ipltile32.c,v 1.8 94/04/17 20:29:05 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-
-#include "mi.h"
-#include "mispans.h"
-
-#include "iplmskbits.h"
-#include "iplmergerop.h"
-
-#define STORE(p) INTER_MROP_PREBUILT_SOLID(srcpix, p, p)
-
-#define Expand(left,right) {\
- while (h--) { \
- INTER_COPY(psrc+srcy*INTER_PLANES, srcpix); \
- INTER_MROP_PREBUILD(srcpix); \
- ++srcy; \
- if (srcy == tileHeight) \
- srcy = 0; \
- left \
- ngw = ngwMiddle; \
- while (ngw--) \
- { \
- STORE(p); \
- INTER_NEXT_GROUP(p); \
- } \
- right \
- p += ngwExtra; \
- } \
-}
-
-void
-INTER_MROP_NAME(iplFillRectTile32) (pDrawable, pGC, nBox, pBox)
- DrawablePtr pDrawable;
- GCPtr pGC;
- int nBox; /* number of boxes to fill */
- BoxPtr pBox; /* pointer to list of boxes to fill */
-{
- INTER_DECLAREGP(srcpix);
- INTER_DECLAREG(*psrc); /* pointer to bits in tile, if needed */
- int tileHeight; /* height of the tile */
-
- int ngwDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- register int h; /* height of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask); /* masks for reggedy bits at either end of line */
- int ngwMiddle; /* number of longwords between sides of boxes */
- int ngwExtra; /* to get from right of box to left of next span */
- register int ngw; /* loop version of ngwMiddle */
- INTER_DECLAREG(*p); /* pointer to bits we're writing */
- int y; /* current scan line */
- int srcy; /* current tile position */
-
- INTER_DECLAREG(*pbits); /* pointer to start of pixmap */
- PixmapPtr tile; /* rotated, expanded tile */
- INTER_MROP_DECLARE_REG()
- INTER_MROP_PREBUILT_DECLARE()
-
- tile = pGC->pRotatedPixmap;
- tileHeight = tile->drawable.height;
- psrc = (unsigned short *)tile->devPrivate.ptr;
-
- INTER_MROP_INITIALIZE(pGC->alu, pGC->planemask);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwDst, pbits)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- y = pBox->y1;
- p = pbits + (y * ngwDst) + (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- srcy = y % tileHeight;
-
- if ( ((pBox->x1 & INTER_PIM) + w) <= INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, startmask);
- ngwExtra = ngwDst;
- while (h--)
- {
- INTER_COPY(psrc+srcy*INTER_PLANES, srcpix);
- INTER_MROP_PREBUILD(srcpix);
- ++srcy;
- if (srcy == tileHeight)
- srcy = 0;
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- p += ngwExtra;
- }
- }
- else
- {
- INTER_maskbits(pBox->x1, w, startmask, endmask, ngwMiddle);
- ngwExtra = ngwDst - ngwMiddle * INTER_PLANES;
-
- if (startmask)
- {
- ngwExtra -= INTER_PLANES;
- if (endmask)
- {
- Expand(
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- INTER_NEXT_GROUP(p);,
- INTER_MROP_PREBUILT_MASK(srcpix, p, endmask, p));
- }
- else
- {
- Expand(
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- INTER_NEXT_GROUP(p);,
- ;)
- }
- }
- else
- {
- if (endmask)
- {
- Expand(;,
- INTER_MROP_PREBUILT_MASK(srcpix, p, endmask, p));
- }
- else
- {
- Expand(;,
- ;)
- }
- }
- }
- pBox++;
- }
-}
-
-void
-INTER_MROP_NAME(iplTile32FS)(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 */
- DDXPointPtr ppt; /* pointer to list of start points */
- int *pwidth;/* pointer to list of n widths */
- INTER_DECLAREG(*pbits); /* pointer to start of bitmap */
- int ngwDst; /* width in longwords of bitmap */
- INTER_DECLAREG(*p); /* pointer to current longword in bitmap */
- register int w; /* current span width */
- register int ngw;
- register int x;
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);
- INTER_DECLAREGP(srcpix);
- int y;
- int *pwidthFree;/* copies of the pointers to free */
- DDXPointPtr pptFree;
- PixmapPtr tile;
- INTER_DECLAREG(*psrc); /* pointer to bits in tile */
- int tileHeight;/* height of the tile */
- INTER_MROP_DECLARE_REG ()
- INTER_MROP_PREBUILT_DECLARE()
-
- n = nInit * miFindMaxBand( iplGetCompositeClip(pGC) );
- pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int));
- pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec));
- if(!pptFree || !pwidthFree)
- {
- if (pptFree) DEALLOCATE_LOCAL(pptFree);
- if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree);
- return;
- }
- pwidth = pwidthFree;
- ppt = pptFree;
- n = miClipSpans( iplGetCompositeClip(pGC),
- pptInit, pwidthInit, nInit,
- ppt, pwidth, fSorted);
-
- tile = pGC->pRotatedPixmap;
- tileHeight = tile->drawable.height;
- psrc = (unsigned short *)tile->devPrivate.ptr;
-
- INTER_MROP_INITIALIZE(pGC->alu, pGC->planemask);
-
- iplGetGroupWidthAndPointer (pDrawable, ngwDst, pbits)
-
- {
- while (n--)
- {
- x = ppt->x;
- y = ppt->y;
- ++ppt;
- w = *pwidth++;
- p = pbits + (y * ngwDst) + (x >> INTER_PGSH) * INTER_PLANES;
- INTER_COPY(psrc +(y % tileHeight)*INTER_PLANES,srcpix);
- INTER_MROP_PREBUILD(srcpix);
-
- if ((x & INTER_PIM) + w < INTER_PPG)
- {
- INTER_maskpartialbits(x, w, startmask);
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- }
- else
- {
- INTER_maskbits(x, w, startmask, endmask, ngw);
- if (startmask)
- {
- INTER_MROP_PREBUILT_MASK(srcpix, p, startmask, p);
- INTER_NEXT_GROUP(p);
- }
- while (ngw--)
- {
- STORE(p);
- INTER_NEXT_GROUP(p);
- }
- if (endmask)
- {
- INTER_MROP_PREBUILT_MASK(srcpix, p, endmask, p);
- }
- }
- }
- }
- DEALLOCATE_LOCAL(pptFree);
- DEALLOCATE_LOCAL(pwidthFree);
-}
diff --git a/iplan2p4/ipltileodd.c b/iplan2p4/ipltileodd.c
deleted file mode 100644
index 7230a5621..000000000
--- a/iplan2p4/ipltileodd.c
+++ /dev/null
@@ -1,869 +0,0 @@
-/* $XFree86$ */
-/*
- * Fill odd tiled rectangles and spans.
- * no depth dependencies.
- */
-
-/*
-
-Copyright (c) 1989 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-*/
-
-/* $XConsortium: ipltileodd.c,v 1.16 94/04/17 20:29:06 dpw Exp $ */
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "servermd.h"
-#include "gcstruct.h"
-#include "window.h"
-#include "pixmapstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-
-#include "ipl.h"
-
-#include "iplmskbits.h"
-#include "iplmergerop.h"
-
-#define LEFTSHIFT_AMT 0
-
-#define LastTileBits {\
- INTER_COPY(bits, tmp); \
- if (tileEndPart) \
- INTER_MSKINSM(tileEndMask, 0, pSrc, \
- ~0, tileEndLeftShift, pSrcLine, bits) \
- else \
- INTER_COPY(pSrc, bits); \
-}
-
-#define ResetTileBits {\
- pSrc = pSrcLine; \
- nlwSrc = widthSrc;\
- if (tileEndPart) { \
- if (INTER_PPG - xoff + tileEndPart <= INTER_PPG) {\
- INTER_COPY(pSrc, bits); INTER_NEXT_GROUP(pSrc); \
- nlwSrc--; \
- } else \
- INTER_MSKINSM(~0, tileEndLeftShift, tmp, \
- ~0, tileEndRightShift, bits, bits); \
- xoff = (xoff + xoffStep) & INTER_PIM; \
- leftShift = xoff << LEFTSHIFT_AMT; \
- rightShift = INTER_PGSZ - leftShift; \
- }\
-}
-
-#define NextTileBits {\
- if (nlwSrc == 1) {\
- LastTileBits\
- } else { \
- if (nlwSrc == 0) {\
- ResetTileBits\
- } \
- if (nlwSrc == 1) {\
- LastTileBits\
- } else {\
- INTER_COPY(bits, tmp); \
- INTER_COPY(pSrc, bits); INTER_NEXT_GROUP(pSrc); \
- }\
- }\
- nlwSrc--; \
-}
-
-void
-INTER_MROP_NAME(iplFillBoxTileOdd) (pDrawable, nBox, pBox, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* tile */
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile in pixels */
- int tileHeight; /* height of the tile */
- int widthSrc;
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- int h; /* height of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);/* masks for reggedy bits at either end of line */
- int nlwMiddle; /* number of longwords between sides of boxes */
- int nlwSrc; /* number of whole longwords in source */
-
- register int nlw; /* loop version of nlwMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int xoffDst, xoffSrc;
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pDstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pDstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*pSrcBase); /* pointer to start of source */
- INTER_DECLAREG(*pSrcLine); /* pointer to start of source line */
- INTER_DECLAREG(*pDst);
- INTER_DECLAREG(*pSrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(tmp);
- INTER_DECLAREGP(tmp1);
- register int nlwPart;
- int xoffStart, xoff;
- int leftShiftStart, rightShiftStart, nlwSrcStart;
- INTER_DECLAREG(tileEndMask);
- int tileEndLeftShift, tileEndRightShift;
- int xoffStep;
- int tileEndPart;
- int needFirst;
- unsigned short narrow[2 * INTER_PLANES];
- INTER_DECLAREG(narrowMask);
- int narrowShift;
- Bool narrowTile;
- int narrowRep;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
- narrowTile = FALSE;
-
- if (widthSrc == 1)
- {
- narrowRep = INTER_PPG / tileWidth;
- narrowMask = iplendpartial [tileWidth];
- tileWidth *= narrowRep;
- narrowShift = tileWidth;
- tileWidth *= 2;
- widthSrc = 2;
- narrowTile = TRUE;
- }
- pSrcBase = (unsigned short *)tile->devPrivate.ptr;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pDstBase)
-
- tileEndPart = tileWidth & INTER_PIM;
- tileEndMask = iplendpartial[tileEndPart];
- tileEndLeftShift = (tileEndPart) << LEFTSHIFT_AMT;
- tileEndRightShift = INTER_PGSZ - tileEndLeftShift;
- xoffStep = INTER_PPG - tileEndPart;
- /*
- * current assumptions: tile > 32 bits wide.
- */
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
- modulus (pBox->x1 - xrot, tileWidth, srcx);
- modulus (pBox->y1 - yrot, tileHeight, srcy);
- xoffDst = pBox->x1 & INTER_PIM;
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, startmask);
- endmask = 0;
- nlwMiddle = 0;
- }
- else
- {
- INTER_maskbits (pBox->x1, w, startmask, endmask, nlwMiddle)
- }
- pDstLine = pDstBase + (pBox->y1 * widthDst) +
- (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- pSrcLine = pSrcBase + (srcy * widthSrc) * INTER_PLANES;
- xoffSrc = srcx & INTER_PIM;
- if (xoffSrc >= xoffDst)
- {
- xoffStart = xoffSrc - xoffDst;
- needFirst = 1;
- }
- else
- {
- xoffStart = INTER_PPG - (xoffDst - xoffSrc);
- needFirst = 0;
- }
- leftShiftStart = (xoffStart) << LEFTSHIFT_AMT;
- rightShiftStart = INTER_PGSZ - leftShiftStart;
- nlwSrcStart = (widthSrc - (srcx >> INTER_PGSH));
- while (h--)
- {
- /* XXX only works when narrowShift >= INTER_PPG/2 */
- if (narrowTile)
- {
- int tmpnarrowRep;
- int shift=narrowShift/narrowRep;
- INTER_ANDMSK(pSrcBase + srcy * INTER_PLANES, narrowMask, tmp);
- tmpnarrowRep=narrowRep;
- /* copy tile until its nearly a whole group wide */
- while (--tmpnarrowRep)
- INTER_MSKINSM(~0,0,tmp,~0,shift,tmp,tmp);
- INTER_MSKINSM(~0, 0, tmp, ~0, narrowShift, tmp, narrow);
- INTER_MSKINSM(~0, INTER_PPG - narrowShift, tmp,
- ~0, 2 * narrowShift - INTER_PPG, tmp,
- narrow + INTER_PLANES);
- pSrcLine = narrow;
- }
- xoff = xoffStart;
- leftShift = leftShiftStart;
- rightShift = rightShiftStart;
- nlwSrc = nlwSrcStart;
- pSrc = pSrcLine + (srcx >> INTER_PGSH) * INTER_PLANES;
- pDst = pDstLine;
- INTER_CLR(bits);
- if (needFirst)
- {
- NextTileBits
- }
- if (startmask)
- {
- NextTileBits
- INTER_SCRLEFT(leftShift, tmp, tmp);
- if (rightShift != INTER_PGSZ)
- INTER_MSKINSM(~0, 0, tmp, ~0, rightShift, bits, tmp)
- INTER_MROP_MASK (tmp, pDst, startmask, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- nlw = nlwMiddle;
- while (nlw)
- {
- {
- NextTileBits
- if (rightShift != INTER_PGSZ)
- {
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits,
- tmp1);
- INTER_MROP_SOLID(tmp1, pDst, pDst);
- }
- else
- {
- INTER_MROP_SOLID (tmp, pDst, pDst);
- }
- INTER_NEXT_GROUP(pDst);
- nlw--;
- }
- }
- if (endmask)
- {
- NextTileBits
- if (rightShift == INTER_PGSZ)
- INTER_CLR(bits);
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits, tmp1);
- INTER_MROP_MASK(tmp1, pDst, endmask, pDst);
- }
- pDstLine += widthDst;
- pSrcLine += widthSrc * INTER_PLANES;
- if (++srcy == tileHeight)
- {
- srcy = 0;
- pSrcLine = pSrcBase;
- }
- }
- pBox++;
- }
-}
-
-void
-INTER_MROP_NAME(iplFillSpanTileOdd) (pDrawable, n, ppt, pwidth, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int n;
- DDXPointPtr ppt;
- int *pwidth;
- PixmapPtr tile;
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile in pixels */
- int tileHeight; /* height of the tile */
- int widthSrc;
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current span */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG (endmask); /* masks for reggedy bits at either end of line */
- int nlwSrc; /* number of whole longwords in source */
-
- register int nlw; /* loop version of nlwMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int xoffDst, xoffSrc;
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pDstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pDstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*pSrcBase); /* pointer to start of source */
- INTER_DECLAREG(*pSrcLine); /* pointer to start of source line */
- INTER_DECLAREG(*pDst);
- INTER_DECLAREG(*pSrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(tmp);
- INTER_DECLAREGP(tmp1);
- register int nlwPart;
- int xoffStart, xoff;
- int leftShiftStart, rightShiftStart, nlwSrcStart;
- INTER_DECLAREG(tileEndMask);
- int tileEndLeftShift, tileEndRightShift;
- int xoffStep;
- int tileEndPart;
- int needFirst;
- unsigned short narrow[2 * INTER_PLANES];
- INTER_DECLAREG(narrowMask);
- int narrowShift;
- Bool narrowTile;
- int narrowRep;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
- narrowTile = FALSE;
- if (widthSrc == 1)
- {
- narrowRep = INTER_PPG / tileWidth;
- narrowMask = iplendpartial [tileWidth];
- tileWidth *= narrowRep;
- narrowShift = tileWidth;
- tileWidth *= 2;
- widthSrc = 2;
- narrowTile = TRUE;
- }
- pSrcBase = (unsigned short *)tile->devPrivate.ptr;
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pDstBase)
-
- tileEndPart = tileWidth & INTER_PIM;
- tileEndMask = iplendpartial[tileEndPart];
- tileEndLeftShift = (tileEndPart) << LEFTSHIFT_AMT;
- tileEndRightShift = INTER_PGSZ - tileEndLeftShift;
- xoffStep = INTER_PPG - tileEndPart;
- while (n--)
- {
- w = *pwidth++;
- modulus (ppt->x - xrot, tileWidth, srcx);
- modulus (ppt->y - yrot, tileHeight, srcy);
- xoffDst = ppt->x & INTER_PIM;
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(ppt->x, w, startmask);
- endmask = 0;
- nlw = 0;
- }
- else
- {
- INTER_maskbits (ppt->x, w, startmask, endmask, nlw)
- }
- pDstLine = pDstBase + (ppt->y * widthDst) +
- (ppt->x >> INTER_PGSH) * INTER_PLANES;
- pSrcLine = pSrcBase + (srcy * widthSrc) * INTER_PLANES;
- xoffSrc = srcx & INTER_PIM;
- if (xoffSrc >= xoffDst)
- {
- xoffStart = xoffSrc - xoffDst;
- needFirst = 1;
- }
- else
- {
- xoffStart = INTER_PPG - (xoffDst - xoffSrc);
- needFirst = 0;
- }
- leftShiftStart = (xoffStart) << LEFTSHIFT_AMT;
- rightShiftStart = INTER_PGSZ - leftShiftStart;
- nlwSrcStart = widthSrc - (srcx >> INTER_PGSH);
- /* XXX only works when narrowShift >= INTER_PPG/2 */
- if (narrowTile)
- {
- int tmpnarrowRep;
- int shift=narrowShift/narrowRep;
- INTER_ANDMSK(pSrcBase + srcy * INTER_PLANES, narrowMask, tmp);
- tmpnarrowRep=narrowRep;
- /* copy tile until its nearly a whole group wide */
- while (--tmpnarrowRep)
- INTER_MSKINSM(~0,0,tmp,~0,shift,tmp,tmp);
- INTER_MSKINSM(~0, 0, tmp, ~0, narrowShift, tmp, narrow);
- INTER_MSKINSM(~0, INTER_PPG - narrowShift, tmp,
- ~0, 2 * narrowShift - INTER_PPG, tmp,
- narrow + INTER_PLANES);
- pSrcLine = narrow;
- }
- xoff = xoffStart;
- leftShift = leftShiftStart;
- rightShift = rightShiftStart;
- nlwSrc = nlwSrcStart;
- pSrc = pSrcLine + (srcx >> INTER_PGSH) * INTER_PLANES;
- pDst = pDstLine;
- INTER_CLR(bits);
- if (needFirst)
- {
- NextTileBits
- }
- if (startmask)
- {
- NextTileBits
- INTER_SCRLEFT(leftShift, tmp, tmp);
- if (rightShift != INTER_PGSZ)
- INTER_MSKINSM(~0, 0, tmp, ~0, rightShift, bits, tmp);
- INTER_MROP_MASK (tmp, pDst, startmask, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- while (nlw)
- {
- {
- NextTileBits
- if (rightShift != INTER_PGSZ)
- {
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits,
- tmp1);
- INTER_MROP_SOLID(tmp1, pDst, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- else
- {
- INTER_MROP_SOLID (tmp, pDst, pDst);
- INTER_NEXT_GROUP(pDst);
- }
- nlw--;
- }
- }
- if (endmask)
- {
- NextTileBits
- if (rightShift == INTER_PGSZ)
- INTER_CLR(bits);
-
- INTER_MSKINSM(~0, leftShift, tmp, ~0, rightShift, bits, tmp1);
- INTER_MROP_MASK(tmp1, pDst, endmask, pDst);
- }
- ppt++;
- }
-}
-
-# include "fastblt.h"
-
-#define IncSrcPtr INTER_NEXT_GROUP(psrc); if (!--srcRemaining) { srcRemaining = widthSrc; psrc = psrcStart; }
-
-void
-INTER_MROP_NAME(iplFillBoxTile32s) (pDrawable, nBox, pBox, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int nBox; /* number of boxes to fill */
- register BoxPtr pBox; /* pointer to list of boxes to fill */
- PixmapPtr tile; /* tile */
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile */
- int tileHeight; /* height of the tile */
- int widthSrc; /* width in longwords of the source tile */
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- int h; /* height of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask); /* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
-
- register int nl; /* loop version of nlMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int srcRemaining; /* number of longwords remaining in source */
- int xoffDst, xoffSrc;
- int srcStart; /* number of longwords source offset at left of box */
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pdstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pdstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*psrcBase); /* pointer to start of source */
- INTER_DECLAREG(*psrcLine); /* pointer to fetch point of source */
- INTER_DECLAREG(*psrcStart); /* pointer to start of source line */
- INTER_DECLAREG(*pdst);
- INTER_DECLAREG(*psrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(bits1);
- register int nlTemp;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- psrcBase = (unsigned short *)tile->devPrivate.ptr;
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (nBox--)
- {
- w = pBox->x2 - pBox->x1;
- h = pBox->y2 - pBox->y1;
-
- /* set up source */
- modulus (pBox->x1 - xrot, tileWidth, srcx);
- modulus (pBox->y1 - yrot, tileHeight, srcy);
- xoffSrc = srcx & INTER_PIM;
- srcStart = srcx >> INTER_PGSH;
- psrcStart = psrcBase + (srcy * widthSrc) * INTER_PLANES;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
-
- /* set up dest */
- xoffDst = pBox->x1 & INTER_PIM;
- pdstLine = pdstBase + (pBox->y1 * widthDst) +
- (pBox->x1 >> INTER_PGSH) * INTER_PLANES;
- /* set up masks */
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(pBox->x1, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- INTER_maskbits (pBox->x1, w, startmask, endmask, nlMiddle)
- }
- if (xoffSrc == xoffDst)
- {
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- srcRemaining = widthSrc - srcStart;
- if (startmask)
- {
- INTER_MROP_MASK (psrc, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- IncSrcPtr
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_MROP_SOLID (psrc, pdst, pdst);
- INTER_NEXT_GROUP(pdst); INTER_NEXT_GROUP(psrc);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
- if (endmask)
- {
- INTER_MROP_MASK (psrc, pdst, endmask, pdst);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc * INTER_PLANES;
- psrcStart += widthSrc * INTER_PLANES;
- if (++srcy == tileHeight)
- {
- psrcStart = psrcBase;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
- srcy = 0;
- }
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst) << LEFTSHIFT_AMT;
- rightShift = INTER_PGSZ - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc) << LEFTSHIFT_AMT;
- leftShift = INTER_PGSZ - rightShift;
- }
- while (h--)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- INTER_CLR(bits);
- srcRemaining = widthSrc - srcStart;
- if (xoffSrc > xoffDst)
- {
- INTER_COPY(psrc, bits);
- IncSrcPtr
- }
- if (startmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits);
- IncSrcPtr
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits); INTER_NEXT_GROUP(psrc);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_SOLID (bits1, pdst, pdst);
- INTER_NEXT_GROUP(pdst);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
-
- if (endmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- if (endmask << rightShift)
- {
- INTER_COPY(psrc, bits);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- }
- INTER_MROP_MASK (bits1, pdst, endmask, pdst);
- }
- pdstLine += widthDst;
- psrcLine += widthSrc * INTER_PLANES;
- psrcStart += widthSrc * INTER_PLANES;
- if (++srcy == tileHeight)
- {
- psrcStart = psrcBase;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
- srcy = 0;
- }
- }
- }
- pBox++;
- }
-}
-
-void
-INTER_MROP_NAME(iplFillSpanTile32s) (pDrawable, n, ppt, pwidth, tile, xrot, yrot, alu, planemask)
- DrawablePtr pDrawable;
- int n;
- DDXPointPtr ppt;
- int *pwidth;
- PixmapPtr tile;
- int xrot, yrot;
- int alu;
- unsigned long planemask;
-{
- int tileWidth; /* width of tile */
- int tileHeight; /* height of the tile */
- int widthSrc; /* width in longwords of the source tile */
-
- int widthDst; /* width in longwords of the dest pixmap */
- int w; /* width of current box */
- INTER_DECLAREG(startmask);
- INTER_DECLAREG(endmask);/* masks for reggedy bits at either end of line */
- int nlMiddle; /* number of longwords between sides of boxes */
-
- register int nl; /* loop version of nlMiddle */
- int srcy; /* current tile y position */
- int srcx; /* current tile x position */
- int srcRemaining; /* number of longwords remaining in source */
- int xoffDst, xoffSrc;
- int srcStart; /* number of longwords source offset at left of box */
- int leftShift, rightShift;
-
- INTER_MROP_DECLARE_REG()
-
- INTER_DECLAREG(*pdstBase); /* pointer to start of dest */
- INTER_DECLAREG(*pdstLine); /* poitner to start of dest box */
- INTER_DECLAREG(*psrcBase); /* pointer to start of source */
- INTER_DECLAREG(*psrcLine); /* pointer to fetch point of source */
- INTER_DECLAREG(*psrcStart); /* pointer to start of source line */
- INTER_DECLAREG(*pdst);
- INTER_DECLAREG(*psrc);
- INTER_DECLAREGP(bits);
- INTER_DECLAREGP(bits1);
- register int nlTemp;
-
- INTER_MROP_INITIALIZE (alu, planemask)
-
- psrcBase = (unsigned short *)tile->devPrivate.ptr;
- tileHeight = tile->drawable.height;
- tileWidth = tile->drawable.width;
- widthSrc = tile->devKind / (INTER_PGSZB * INTER_PLANES);
-
- iplGetGroupWidthAndPointer (pDrawable, widthDst, pdstBase)
-
- while (n--)
- {
- w = *pwidth++;
-
- /* set up source */
- modulus (ppt->x - xrot, tileWidth, srcx);
- modulus (ppt->y - yrot, tileHeight, srcy);
- xoffSrc = srcx & INTER_PIM;
- srcStart = srcx >> INTER_PGSH;
- psrcStart = psrcBase + (srcy * widthSrc) * INTER_PLANES;
- psrcLine = psrcStart + srcStart * INTER_PLANES;
-
- /* set up dest */
- xoffDst = ppt->x & INTER_PIM;
- pdstLine = pdstBase + (ppt->y * widthDst) +
- (ppt->x >> INTER_PGSH) * INTER_PLANES;
- /* set up masks */
- if (xoffDst + w < INTER_PPG)
- {
- INTER_maskpartialbits(ppt->x, w, startmask);
- endmask = 0;
- nlMiddle = 0;
- }
- else
- {
- INTER_maskbits (ppt->x, w, startmask, endmask, nlMiddle)
- }
-
- if (xoffSrc == xoffDst)
- {
- psrc = psrcLine;
- pdst = pdstLine;
- srcRemaining = widthSrc - srcStart;
- if (startmask)
- {
- INTER_MROP_MASK (psrc, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- IncSrcPtr
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_MROP_SOLID (psrc, pdst, pdst);
- INTER_NEXT_GROUP(pdst); INTER_NEXT_GROUP(psrc);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
- if (endmask)
- {
- INTER_MROP_MASK (psrc, pdst, endmask, pdst);
- }
- }
- else
- {
- if (xoffSrc > xoffDst)
- {
- leftShift = (xoffSrc - xoffDst) << LEFTSHIFT_AMT;
- rightShift = INTER_PGSZ - leftShift;
- }
- else
- {
- rightShift = (xoffDst - xoffSrc) << LEFTSHIFT_AMT;
- leftShift = INTER_PGSZ - rightShift;
- }
- psrc = psrcLine;
- pdst = pdstLine;
- INTER_CLR(bits);
- srcRemaining = widthSrc - srcStart;
- if (xoffSrc > xoffDst)
- {
- INTER_COPY(psrc, bits);
- IncSrcPtr
- }
- if (startmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits);
- IncSrcPtr
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_MASK(bits1, pdst, startmask, pdst);
- INTER_NEXT_GROUP(pdst);
- }
- nlTemp = nlMiddle;
- while (nlTemp)
- {
- nl = nlTemp;
- if (nl > srcRemaining)
- nl = srcRemaining;
-
- nlTemp -= nl;
- srcRemaining -= nl;
-
- while (nl--) {
- INTER_SCRLEFT(leftShift, bits, bits1);
- INTER_COPY(psrc, bits); INTER_NEXT_GROUP(psrc);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- INTER_MROP_SOLID(bits1, pdst, pdst);
- INTER_NEXT_GROUP(pdst);
- }
-
- if (!srcRemaining)
- {
- srcRemaining = widthSrc;
- psrc = psrcStart;
- }
- }
-
- if (endmask)
- {
- INTER_SCRLEFT(leftShift, bits, bits1);
- if (endmask << rightShift)
- {
- INTER_COPY(psrc, bits);
- INTER_MSKINSM(~0, 0, bits1, ~0, rightShift, bits, bits1);
- }
- INTER_MROP_MASK (bits1, pdst, endmask, pdst);
- }
- }
- ppt++;
- }
-}
diff --git a/iplan2p4/iplwindow.c b/iplan2p4/iplwindow.c
deleted file mode 100644
index 511e753b3..000000000
--- a/iplan2p4/iplwindow.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/* $XFree86: xc/programs/Xserver/iplan2p4/iplwindow.c,v 3.0tsi Exp $ */
-/* $XConsortium: iplwindow.c,v 5.22 94/04/17 20:29:07 dpw Exp $ */
-/***********************************************************
-
-Copyright (c) 1987 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-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
-X CONSORTIUM 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 X Consortium 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 X Consortium.
-
-
-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.
-
-******************************************************************/
-
-/* Modified nov 94 by Martin Schaller (Martin_Schaller@maus.r.de) for use with
-interleaved planes */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "ipl.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "iplmskbits.h"
-
-extern WindowPtr *WindowTable;
-
-Bool
-iplCreateWindow(pWin)
- WindowPtr pWin;
-{
- iplPrivWin *pPrivWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
- pPrivWin->oldRotate.x = 0;
- pPrivWin->oldRotate.y = 0;
-
-#ifdef PIXMAP_PER_WINDOW
- /* Setup pointer to Screen pixmap */
- pWin->devPrivates[frameWindowPrivateIndex].ptr =
- (pointer) iplGetScreenPixmap(pWin->drawable.pScreen);
-#endif
-
- return TRUE;
-}
-
-Bool
-iplDestroyWindow(pWin)
- WindowPtr pWin;
-{
- iplPrivWin *pPrivWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
-
- if (pPrivWin->pRotatedBorder)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder);
- if (pPrivWin->pRotatedBackground)
- (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground);
- return(TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-iplMapWindow(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.)
- iplChangeWindowAttributes() has already put a copy of the pixmap
-in pPrivWin->pRotated*
-*/
-/*ARGSUSED*/
-Bool
-iplPositionWindow(pWin, x, y)
- WindowPtr pWin;
- int x, y;
-{
- iplPrivWin *pPrivWin;
- int setxy = 0;
-
- pPrivWin = iplGetWindowPrivate(pWin);
- if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground)
- {
- iplXRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBackground,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- setxy = 1;
- }
-
- if (!pWin->borderIsPixel && pPrivWin->fastBorder)
- {
- while (pWin->backgroundState == ParentRelative)
- pWin = pWin->parent;
- iplXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- setxy = 1;
- }
- if (setxy)
- {
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- return (TRUE);
-}
-
-/*ARGSUSED*/
-Bool
-iplUnmapWindow(pWindow)
- WindowPtr pWindow;
-{
- return (TRUE);
-}
-
-/* UNCLEAN!
- this code calls the bitblt helper code directly.
-
- iplCopyWindow copies only the parts of the destination that are
-visible in the source.
-*/
-
-
-void
-iplCopyWindow(pWin, ptOldOrg, prgnSrc)
- WindowPtr pWin;
- DDXPointRec ptOldOrg;
- RegionPtr prgnSrc;
-{
- DDXPointPtr pptSrc;
- register DDXPointPtr ppt;
- RegionRec rgnDst;
- register BoxPtr pbox;
- register int dx, dy;
- register int i, nbox;
- WindowPtr pwinRoot;
-
- pwinRoot = WindowTable[pWin->drawable.pScreen->myNum];
-
- REGION_NULL(pWin->drawable.pScreen, &rgnDst);
-
- 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, &rgnDst, &pWin->borderClip, prgnSrc);
-
- pbox = REGION_RECTS(&rgnDst);
- nbox = REGION_NUM_RECTS(&rgnDst);
- if(!nbox || !(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec))))
- {
- REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
- return;
- }
- ppt = pptSrc;
-
- for (i = nbox; --i >= 0; ppt++, pbox++)
- {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- iplDoBitbltCopy((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot,
- GXcopy, &rgnDst, pptSrc, ~0L);
- DEALLOCATE_LOCAL(pptSrc);
- REGION_UNINIT(pWin->drawable.pScreen, &rgnDst);
-}
-
-
-
-/* swap in correct PaintWindow* routine. If we can use a fast output
-routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy
-of it in devPrivates[iplWindowPrivateIndex].ptr.
-*/
-Bool
-iplChangeWindowAttributes(pWin, mask)
- WindowPtr pWin;
- unsigned long mask;
-{
- register unsigned long index;
- register iplPrivWin *pPrivWin;
- int width;
- WindowPtr pBgWin;
-
- pPrivWin = iplGetWindowPrivate(pWin);
-
- /*
- * When background state changes from ParentRelative and
- * we had previously rotated the fast border pixmap to match
- * the parent relative origin, rerotate to match window
- */
- if (mask & (CWBackPixmap | CWBackPixel) &&
- pWin->backgroundState != ParentRelative &&
- pPrivWin->fastBorder &&
- (pPrivWin->oldRotate.x != pWin->drawable.x ||
- pPrivWin->oldRotate.y != pWin->drawable.y))
- {
- iplXRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBorder,
- pWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- while(mask)
- {
- index = lowbit (mask);
- mask &= ~index;
- switch(index)
- {
- case CWBackPixmap:
- if (pWin->backgroundState == None)
- {
- pPrivWin->fastBackground = FALSE;
- }
- else if (pWin->backgroundState == ParentRelative)
- {
- pPrivWin->fastBackground = FALSE;
- /* Rotate border to match parent origin */
- if (pPrivWin->pRotatedBorder) {
- for (pBgWin = pWin->parent;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- iplXRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.x - pPrivWin->oldRotate.x);
- iplYRotatePixmap(pPrivWin->pRotatedBorder,
- pBgWin->drawable.y - pPrivWin->oldRotate.y);
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- }
- else if (((width = (pWin->background.pixmap->drawable.width))
- <= INTER_PGSZ) && !(width & (width - 1)))
- {
- iplCopyRotatePixmap(pWin->background.pixmap,
- &pPrivWin->pRotatedBackground,
- pWin->drawable.x,
- pWin->drawable.y);
- if (pPrivWin->pRotatedBackground)
- {
- pPrivWin->fastBackground = TRUE;
- pPrivWin->oldRotate.x = pWin->drawable.x;
- pPrivWin->oldRotate.y = pWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBackground = FALSE;
- }
- break;
-
- case CWBackPixel:
- pPrivWin->fastBackground = FALSE;
- break;
-
- case CWBorderPixmap:
- if (((width = (pWin->border.pixmap->drawable.width)) <= INTER_PGSZ) &&
- !(width & (width - 1)))
- {
- for (pBgWin = pWin;
- pBgWin->backgroundState == ParentRelative;
- pBgWin = pBgWin->parent);
- iplCopyRotatePixmap(pWin->border.pixmap,
- &pPrivWin->pRotatedBorder,
- pBgWin->drawable.x,
- pBgWin->drawable.y);
- if (pPrivWin->pRotatedBorder)
- {
- pPrivWin->fastBorder = TRUE;
- pPrivWin->oldRotate.x = pBgWin->drawable.x;
- pPrivWin->oldRotate.y = pBgWin->drawable.y;
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- }
- else
- {
- pPrivWin->fastBorder = FALSE;
- }
- break;
- case CWBorderPixel:
- pPrivWin->fastBorder = FALSE;
- break;
- }
- }
- return (TRUE);
-}
-