diff options
Diffstat (limited to 'xorg-server/hw/xfree86/xf4bpp/ppcGetSp.c')
-rw-r--r-- | xorg-server/hw/xfree86/xf4bpp/ppcGetSp.c | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/xorg-server/hw/xfree86/xf4bpp/ppcGetSp.c b/xorg-server/hw/xfree86/xf4bpp/ppcGetSp.c new file mode 100644 index 000000000..d88abe02b --- /dev/null +++ b/xorg-server/hw/xfree86/xf4bpp/ppcGetSp.c @@ -0,0 +1,141 @@ +/* + * Copyright IBM Corporation 1987,1988,1989 + * + * 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 IBM not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * + * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + * IBM 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. + * +*/ + +/*********************************************************** + +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. + +******************************************************************/ + +#ifdef HAVE_XORG_CONFIG_H +#include <xorg-config.h> +#endif + +#include <string.h> +#include "xf4bpp.h" +#include "OScompiler.h" +#include "mfbmap.h" +#include "mfb.h" +#include "servermd.h" +#include "ibmTrace.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 +xf4bppGetSpans( pDrawable, wMax, ppt, pwidth, nspans, pdstStart ) + DrawablePtr pDrawable ; /* drawable from which to get bits */ + int wMax ; /* largest value of all *pwidths */ + DDXPointPtr ppt ; /* points to start copying from */ + int *pwidth ; /* list of number of bits to copy */ + int nspans ; /* number of scanlines to copy */ + char *pdstStart ; +{ + register int j ; + register unsigned char *pdst ; /* where to put the bits */ + register unsigned char *psrc ; /* where to get the bits */ + register int pixmapStride ; + + + TRACE( ( "xf4bppGetSpans(pDrawable=0x%x,wMax=%d,ppt=0x%x,pwidth=0x%x,nspans=%d)\n", + pDrawable, wMax, ppt, pwidth, nspans ) ) ; + + if ( ( pDrawable->depth == 1 ) && ( pDrawable->type == DRAWABLE_PIXMAP ) ) + { + mfbGetSpans( pDrawable, wMax, ppt, pwidth, nspans, pdstStart ) ; + return; + } + + pixmapStride = PixmapBytePad( wMax, pDrawable->depth ) ; + pdst = (unsigned char *) /* GJA */ pdstStart ; + + if ( pDrawable->type == DRAWABLE_WINDOW ) { + for ( ; nspans-- ; ppt++, pwidth++ ) { + xf4bppReadColorImage( (WindowPtr)pDrawable, + ppt->x, ppt->y, j = *pwidth, 1, pdst, pixmapStride ) ; + pdst += j ; /* width is in 32 bit words */ + j = ( -j ) & 3 ; + while ( j-- ) /* Pad out to 32-bit boundary */ + *pdst++ = 0 ; + } + } + else { /* OK, if we are here, we had better be a DRAWABLE PIXMAP */ + register int widthSrc = /* width of pixmap in bytes */ + (int) ( (PixmapPtr) pDrawable )->devKind ; + + psrc = (unsigned char *) ( (PixmapPtr) pDrawable )->devPrivate.ptr ; + for ( ; nspans-- ; ppt++, pwidth++ ) { + MOVE( psrc + ( ppt->y * widthSrc ) + ppt->x, + pdst, j = *pwidth ) ; + pdst += j ; + j = ( -j ) & 3 ; + while ( j-- ) /* Pad out to 32-bit boundary */ + *pdst++ = 0 ; + } + } + return ; +} |