From 3562e78743202e43aec8727005182a2558117eca Mon Sep 17 00:00:00 2001 From: marha Date: Sun, 28 Jun 2009 22:07:26 +0000 Subject: Checked in the following released items: xkeyboard-config-1.4.tar.gz ttf-bitstream-vera-1.10.tar.gz font-alias-1.0.1.tar.gz font-sun-misc-1.0.0.tar.gz font-sun-misc-1.0.0.tar.gz font-sony-misc-1.0.0.tar.gz font-schumacher-misc-1.0.0.tar.gz font-mutt-misc-1.0.0.tar.gz font-misc-misc-1.0.0.tar.gz font-misc-meltho-1.0.0.tar.gz font-micro-misc-1.0.0.tar.gz font-jis-misc-1.0.0.tar.gz font-isas-misc-1.0.0.tar.gz font-dec-misc-1.0.0.tar.gz font-daewoo-misc-1.0.0.tar.gz font-cursor-misc-1.0.0.tar.gz font-arabic-misc-1.0.0.tar.gz font-winitzki-cyrillic-1.0.0.tar.gz font-misc-cyrillic-1.0.0.tar.gz font-cronyx-cyrillic-1.0.0.tar.gz font-screen-cyrillic-1.0.1.tar.gz font-xfree86-type1-1.0.1.tar.gz font-adobe-utopia-type1-1.0.1.tar.gz font-ibm-type1-1.0.0.tar.gz font-bitstream-type1-1.0.0.tar.gz font-bitstream-speedo-1.0.0.tar.gz font-bh-ttf-1.0.0.tar.gz font-bh-type1-1.0.0.tar.gz font-bitstream-100dpi-1.0.0.tar.gz font-bh-lucidatypewriter-100dpi-1.0.0.tar.gz font-bh-100dpi-1.0.0.tar.gz font-adobe-utopia-100dpi-1.0.1.tar.gz font-adobe-100dpi-1.0.0.tar.gz font-util-1.0.1.tar.gz font-bitstream-75dpi-1.0.0.tar.gz font-bh-lucidatypewriter-75dpi-1.0.0.tar.gz font-adobe-utopia-75dpi-1.0.1.tar.gz font-bh-75dpi-1.0.0.tar.gz bdftopcf-1.0.1.tar.gz font-adobe-75dpi-1.0.0.tar.gz mkfontscale-1.0.6.tar.gz openssl-0.9.8k.tar.gz bigreqsproto-1.0.2.tar.gz xtrans-1.2.2.tar.gz resourceproto-1.0.2.tar.gz inputproto-1.4.4.tar.gz compositeproto-0.4.tar.gz damageproto-1.1.0.tar.gz zlib-1.2.3.tar.gz xkbcomp-1.0.5.tar.gz freetype-2.3.9.tar.gz pthreads-w32-2-8-0-release.tar.gz pixman-0.12.0.tar.gz kbproto-1.0.3.tar.gz evieext-1.0.2.tar.gz fixesproto-4.0.tar.gz recordproto-1.13.2.tar.gz randrproto-1.2.2.tar.gz scrnsaverproto-1.1.0.tar.gz renderproto-0.9.3.tar.gz xcmiscproto-1.1.2.tar.gz fontsproto-2.0.2.tar.gz xextproto-7.0.3.tar.gz xproto-7.0.14.tar.gz libXdmcp-1.0.2.tar.gz libxkbfile-1.0.5.tar.gz libfontenc-1.0.4.tar.gz libXfont-1.3.4.tar.gz libX11-1.1.5.tar.gz libXau-1.0.4.tar.gz libxcb-1.1.tar.gz xorg-server-1.5.3.tar.gz --- xorg-server/hw/xfree86/xf4bpp/ppcCReduce.c | 237 +++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 xorg-server/hw/xfree86/xf4bpp/ppcCReduce.c (limited to 'xorg-server/hw/xfree86/xf4bpp/ppcCReduce.c') diff --git a/xorg-server/hw/xfree86/xf4bpp/ppcCReduce.c b/xorg-server/hw/xfree86/xf4bpp/ppcCReduce.c new file mode 100644 index 000000000..c567e6fd1 --- /dev/null +++ b/xorg-server/hw/xfree86/xf4bpp/ppcCReduce.c @@ -0,0 +1,237 @@ +/* + * 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. + * +*/ + +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + +#include "xf4bpp.h" +#include "ppcGCstr.h" + +/* xf4bppGetReducedColorRrop( pGC, drawableDepth, returnLoc ) + * An attempt to do "strength reduction" on color raster-ops + * P. Shupak 1/88 + */ + +static void +ppcReduceGeneral +( + register int alu, + register unsigned long pm, + register unsigned long fg, + register unsigned long bg, + register int fillStyle, + int drawableDepth, + ppcReducedRrop *returnLoc +) +{ + +if ( ( alu == GXnoop ) + || !( pm &= ( ( 1 << drawableDepth ) - 1 ) ) ) { + returnLoc->alu = GXnoop ; + return ; +} + +#ifdef DELETE_THIS +switch ( fillStyle ) { + case FillTiled: + switch ( alu ) { + case GXclear: /* 0x0 Zero 0 */ + case GXinvert: /* 0xa NOT dst */ + case GXset: /* 0xf 1 */ + fillStyle = FillSolid ; + default: /* We Can't Do Much Here */ + break ; + } + break ; + case FillOpaqueStippled: + if ( ( fg & pm ) != ( bg & pm ) ) { /* else FillSolid */ + switch ( alu ) { + case GXclear: /* 0x0 Zero 0 */ + case GXset: /* 0xf 1 */ + case GXinvert: /* 0xa NOT dst */ + fillStyle = FillSolid ; + break ; + case GXnor: /* 0x8 NOT src AND NOT dst */ + case GXnand: /* 0xe NOT src OR NOT dst */ + case GXcopy: /* 0x3 src */ + break ; + case GXandReverse: /* 0x2 src AND NOT dst */ + fg = ~fg ; + bg = ~bg ; + alu = GXnor ; + break ; + case GXandInverted: /* 0x4 NOT src AND dst */ + fg = ~fg ; + bg = ~bg ; + alu = GXand ; /* Fall Through */ + case GXand: /* 0x1 src AND dst */ + pm &= ~( fg & bg ) ; + if ( ( bg & pm ) == pm ) { + fillStyle = FillStippled ; + alu = GXclear ; + } + break ; + case GXequiv: /* 0x9 NOT src XOR dst */ + fg = ~fg ; + bg = ~bg ; + alu = GXxor ; /* Fall Through */ + case GXxor: /* 0x6 src XOR dst */ + pm &= ( fg | bg ) ; + if ( !( bg & pm ) ) { + fillStyle = FillStippled ; + alu = GXinvert ; + } + break ; + case GXorReverse: /* 0xb src OR NOT dst */ + fg = ~fg ; + bg = ~bg ; + alu = GXnand ; + break ; + case GXcopyInverted: /* 0xc NOT src */ + fg = ~fg ; + bg = ~bg ; + alu = GXcopy ; + break ; + case GXorInverted: /* 0xd NOT src OR dst */ + fg = ~fg ; + bg = ~bg ; + alu = GXor ; /* Fall Through */ + case GXor: /* 0x7 src OR dst */ + pm &= ( fg | bg ) ; + if ( !( bg & pm ) ) { + fillStyle = FillStippled ; + alu = GXset ; + } + break ; + default: + ErrorF( + "xf4bppGetReducedColorRrop: Unknown Alu Raster-Op" ) ; + break ; + } + break ; /* Don't Fall Through */ + } + else + fillStyle = FillSolid ; + /* Fall Through */ + case FillStippled: + case FillSolid: + switch ( alu ) { + case GXclear: /* 0x0 Zero 0 */ + case GXset: /* 0xf 1 */ + case GXinvert: /* 0xa NOT dst */ + break ; + case GXand: /* 0x1 src AND dst */ + pm &= ~fg ; + alu = GXclear ; + break ; + case GXandReverse: /* 0x2 src AND NOT dst */ + fg = ~fg ; + alu = GXnor ; /* Fall Through */ + case GXnor: /* 0x8 NOT src AND NOT dst */ + if ( !( fg & pm ) ) + alu = GXclear ; + else if ( ( fg & pm ) == pm ) + alu = GXinvert ; + break ; + case GXandInverted: /* 0x4 NOT src AND dst */ + pm &= fg ; + alu = GXclear ; + break ; + case GXxor: /* 0x6 src XOR dst */ + pm &= fg ; + alu = GXinvert ; + break ; + case GXor: /* 0x7 src OR dst */ + pm &= fg ; + alu = GXset ; + break ; + case GXequiv: /* 0x9 NOT src XOR dst */ + pm &= ~fg ; + alu = GXinvert ; + break ; + case GXorReverse: /* 0xb src OR NOT dst */ + fg = ~fg ; + alu = GXnand ; /* Fall Through */ + case GXnand: /* 0xe NOT src OR NOT dst */ + if ( !( fg & pm ) ) + alu = GXset ; + else if ( ( fg & pm ) == pm ) + alu = GXinvert ; + break ; + case GXcopyInverted: /* 0xc NOT src */ + fg = ~fg ; + alu = GXcopy ; /* Fall Through */ + case GXcopy: /* 0x3 src */ + if ( !( fg & pm ) ) + alu = GXclear ; + else if ( ( fg & pm ) == pm ) + alu = GXset ; + break ; + case GXorInverted: /* 0xd NOT src OR dst */ + pm &= ~fg ; + alu = GXset ; + break ; + default: + ErrorF( + "xf4bppGetReducedColorRrop: Unknown Alu Raster-Op" ) ; + break ; + } + break; + default: + ErrorF("xf4bppGetReducedColorRrop: Bad Fillstyle\n"); + break; +} +#endif + +/* Final Test On Restricted Plane Mask */ +if ( !pm ) + alu = GXnoop ; + +/* Set Actual Returned Values */ +returnLoc->planemask = pm ; +returnLoc->fgPixel = fg ; +returnLoc->bgPixel = bg ; +returnLoc->alu = alu ; +returnLoc->fillStyle = fillStyle ; + +return ; +} + +void +xf4bppGetReducedColorRrop( pGC, drawableDepth, returnLoc ) +GC *pGC ; +int drawableDepth ; +ppcReducedRrop *returnLoc ; +{ + +ppcReduceGeneral( pGC->alu, + pGC->planemask, + pGC->fgPixel, + pGC->bgPixel, + pGC->fillStyle, + drawableDepth, + returnLoc ) ; + +return ; +} -- cgit v1.2.3