aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xfree86/xf4bpp/ppcGC.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/xfree86/xf4bpp/ppcGC.c')
-rw-r--r--xorg-server/hw/xfree86/xf4bpp/ppcGC.c446
1 files changed, 0 insertions, 446 deletions
diff --git a/xorg-server/hw/xfree86/xf4bpp/ppcGC.c b/xorg-server/hw/xfree86/xf4bpp/ppcGC.c
deleted file mode 100644
index 7ef312d39..000000000
--- a/xorg-server/hw/xfree86/xf4bpp/ppcGC.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
-
-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 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 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 <stdlib.h>
-
-#include "xf4bpp.h"
-#include "mfbmap.h"
-#include "mfb.h"
-#include "mi.h"
-#include "scrnintstr.h"
-#include "ppcGCstr.h"
-#include "vgaVideo.h"
-#include "ibmTrace.h"
-
-#define ppcGCInterestValidateMask \
-( GCLineStyle | GCLineWidth | GCJoinStyle | GCBackground | GCForeground \
-| GCFunction | GCPlaneMask | GCFillStyle | GC_CALL_VALIDATE_BIT \
-| GCClipXOrigin | GCClipYOrigin | GCClipMask | GCSubwindowMode )
-
-static void xf4bppValidateGC(GCPtr, unsigned long, DrawablePtr);
-static void xf4bppDestroyGC(GC *);
-
-static GCFuncs vgaGCFuncs = {
- xf4bppValidateGC,
- (void (*)(GCPtr, unsigned long))NoopDDA,
- (void (*)(GCPtr, unsigned long, GCPtr))NoopDDA,
- xf4bppDestroyGC,
- xf4bppChangeClip,
- xf4bppDestroyClip,
- xf4bppCopyClip,
- { NULL }
-};
-
-
-static ppcPrivGC vgaPrototypeGCPriv = {
- GXcopy, /* unsigned char rop */
- 0, /* unsigned char ropOpStip */
- 0, /* unsigned char ropFillArea */
- {0, }, /* unsigned char unused[sizeof(long) - 3] */
- NULL, /* mfbFillAreaProcPtr FillArea */
- {
- VGA_ALLPLANES, /* unsigned long planemask */
- 1, /* unsigned long fgPixel */
- 0, /* unsigned long bgPixel */
- GXcopy, /* int alu */
- FillSolid, /* int fillStyle */
- }, /* ppcReducedRrop colorRrop */
- -1, /* short lastDrawableType */
- -1, /* short lastDrawableDepth */
- 0 /* pointer devPriv */
-} ;
-
-static GCOps vgaGCOps = {
- xf4bppSolidWindowFS, /* void (* FillSpans)() */
- xf4bppSetSpans, /* void (* SetSpans)() */
- miPutImage, /* void (* PutImage)() */
- xf4bppCopyArea, /* RegionPtr (* CopyArea)() */
- miCopyPlane, /* void (* CopyPlane)() */
- xf4bppPolyPoint, /* void (* PolyPoint)() */
- miZeroLine, /* void (* Polylines)() */
- miPolySegment, /* void (* PolySegment)() */
- miPolyRectangle, /* void (* PolyRectangle)() */
- xf4bppZeroPolyArc, /* void (* PolyArc)() */
- miFillPolygon, /* void (* FillPolygon)() */
- miPolyFillRect, /* void (* PolyFillRect)() */
- xf4bppPolyFillArc, /* void (* PolyFillArc)() */
- miPolyText8, /* int (* PolyText8)() */
- miPolyText16, /* int (* PolyText16)() */
- miImageText8, /* void (* ImageText8)() */
- miImageText16, /* void (* ImageText16)() */
- xf4bppImageGlyphBlt, /* GJA -- void (* ImageGlyphBlt)() */
- miPolyGlyphBlt, /* GJA -- void (* PolyGlyphBlt)() */
- miPushPixels, /* void (* PushPixels)() */
- {NULL} /* devPrivate */
-};
-
-Bool
-xf4bppCreateGC( pGC )
-register GCPtr pGC ;
-{
- ppcPrivGC *pPriv ;
- GCOps *pOps ;
-
- if ( pGC->depth == 1 )
- {
- return (mfbCreateGC(pGC));
- }
-
- if ( !( pPriv = xalloc( sizeof( ppcPrivGC ) ) ) )
- return FALSE ;
-
- if ( !( pOps = xalloc( sizeof( GCOps ) ) ) ) {
- xfree(pPriv);
- return FALSE;
- }
-
- /* Now we initialize the GC fields */
- pGC->miTranslate = 1;
- pGC->unused = 0;
- pGC->planemask = VGA_ALLPLANES;
- pGC->fgPixel = VGA_BLACK_PIXEL;
- pGC->bgPixel = VGA_WHITE_PIXEL;
- pGC->funcs = &vgaGCFuncs;
- /* ops, -- see below */
-
- pGC->fExpose = TRUE;
- pGC->freeCompClip = FALSE;
-
- /* GJA: I don't like this code:
- * they allocated a mfbPrivGC, ignore the allocated data and place
- * a pointer to a ppcPrivGC in its slot.
- */
- *pPriv = vgaPrototypeGCPriv;
- dixSetPrivate(&pGC->devPrivates, mfbGetGCPrivateKey(), pPriv);
-
- /* Set the vgaGCOps */
- *pOps = vgaGCOps;
- pOps->devPrivate.val = 1;
- pGC->ops = pOps;
-
- return TRUE ;
-}
-
-static void
-xf4bppDestroyGC( pGC )
- register GC *pGC ;
-
-{
- TRACE( ( "xf4bppDestroyGC(pGC=0x%x)\n", pGC ) ) ;
-
- if ( pGC->freeCompClip && pGC->pCompositeClip )
- REGION_DESTROY(pGC->pScreen, pGC->pCompositeClip);
- if(pGC->ops->devPrivate.val) xfree( pGC->ops );
- xfree(dixLookupPrivate(&pGC->devPrivates, mfbGetGCPrivateKey()));
- return ;
-}
-
-static Mask
-ppcChangePixmapGC
-(
- register GC *pGC,
- register Mask changes
-)
-{
-register ppcPrivGCPtr devPriv = (ppcPrivGCPtr)dixLookupPrivate(&pGC->devPrivates, mfbGetGCPrivateKey());
-register unsigned long int idx ; /* used for stepping through bitfields */
-
-#define LOWBIT( x ) ( x & - x ) /* Two's complement */
-while ((idx = LOWBIT(changes))) {
- switch ( idx ) {
-
- case GCLineStyle:
- case GCLineWidth:
- pGC->ops->Polylines = ( ! pGC->lineWidth )
- ? miZeroLine
- : ( ( pGC->lineStyle == LineSolid )
- ? miWideLine : miWideDash ) ;
- changes &= ~( GCLineStyle | GCLineWidth ) ;
- break ;
-
- case GCJoinStyle:
- changes &= ~ idx ; /* i.e. changes &= ~ GCJoinStyle */
- break ;
-
- case GCBackground:
- if ( pGC->fillStyle != FillOpaqueStippled ) {
- changes &= ~ idx ; /* i.e. changes &= ~GCBackground */
- break ;
- } /* else Fall Through */
- case GCForeground:
- if ( pGC->fillStyle == FillTiled ) {
- changes &= ~ idx ; /* i.e. changes &= ~GCForeground */
- break ;
- } /* else Fall Through */
- case GCFunction:
- case GCPlaneMask:
- case GCFillStyle:
- { /* new_fill */
- int fillStyle = devPriv->colorRrop.fillStyle ;
- /* install a suitable fillspans */
- if ( fillStyle == FillSolid )
- pGC->ops->FillSpans = xf4bppSolidPixmapFS ;
- else if ( fillStyle == FillStippled )
- pGC->ops->FillSpans = xf4bppStipplePixmapFS ;
- else if ( fillStyle == FillOpaqueStippled )
- pGC->ops->FillSpans = xf4bppOpStipplePixmapFS ;
- else /* fillStyle == FillTiled */
- pGC->ops->FillSpans = xf4bppTilePixmapFS ;
- changes &= ~( GCBackground | GCForeground
- | GCFunction | GCPlaneMask | GCFillStyle ) ;
- break ;
- } /* end of new_fill */
-
- default:
- ErrorF( "ppcChangePixmapGC: Unexpected GC Change\n" ) ;
- changes &= ~ idx ; /* Remove it anyway */
- break ;
- }
-}
-
-return 0 ;
-}
-
-/* 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
-*/
-
-static void
-xf4bppValidateGC( pGC, changes, pDrawable )
- GCPtr pGC;
- unsigned long changes;
- DrawablePtr pDrawable;
-{
- register ppcPrivGCPtr devPriv ;
- WindowPtr pWin ;
-
- devPriv = (ppcPrivGCPtr)dixLookupPrivate(&pGC->devPrivates,
- mfbGetGCPrivateKey());
- if ( pDrawable->type != devPriv->lastDrawableType ) {
- devPriv->lastDrawableType = pDrawable->type ;
- xf4bppChangeGCtype( pGC, devPriv ) ;
- changes = (unsigned)~0 ;
- }
-
- if ( pDrawable->depth == 1 ) {
-/* ibmAbort(); */
- xf4bppNeverCalled();
- }
-
- if ( pDrawable->type == DRAWABLE_WINDOW ) {
- pWin = (WindowPtr) pDrawable ;
- pGC->lastWinOrg.x = pWin->drawable.x ;
- pGC->lastWinOrg.y = pWin->drawable.y ;
- }
- else {
- pWin = (WindowPtr) NULL ;
- pGC->lastWinOrg.x = 0 ;
- pGC->lastWinOrg.y = 0 ;
- }
-
- changes &= ppcGCInterestValidateMask ;
- /* If Nothing REALLY Changed, Just Return */
- if ( pDrawable->serialNumber == (pGC->serialNumber & DRAWABLE_SERIAL_BITS) )
- if ( !( changes &= ~ GC_CALL_VALIDATE_BIT ) )
- return ;
-
- /* GJA -- start of cfb code */
- /*
- * 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))
- )
- {
- if (pWin) {
- 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(pGC->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(pGC->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(pGC->pScreen, pregWin);
- }
- else if (freeTmpClip)
- {
- REGION_INTERSECT(pGC->pScreen, pregWin, pregWin,
- pGC->clientClip);
- pGC->pCompositeClip = pregWin;
- }
- else
- {
- pGC->pCompositeClip = REGION_CREATE(pGC->pScreen, NullBox, 0);
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pregWin, pGC->clientClip);
- }
- pGC->freeCompClip = TRUE;
- REGION_TRANSLATE(pGC->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(pGC->pScreen, pGC->pCompositeClip, &pixbounds);
- } else {
- pGC->freeCompClip = TRUE;
- pGC->pCompositeClip = REGION_CREATE(pGC->pScreen, &pixbounds, 1);
- }
-
- if (pGC->clientClipType == CT_REGION)
- {
- REGION_TRANSLATE(pGC->pScreen, pGC->pCompositeClip,
- -pGC->clipOrg.x, -pGC->clipOrg.y);
- REGION_INTERSECT(pGC->pScreen, pGC->pCompositeClip,
- pGC->pCompositeClip, pGC->clientClip);
- REGION_TRANSLATE(pGC->pScreen, pGC->pCompositeClip,
- pGC->clipOrg.x, pGC->clipOrg.y);
- }
- } /* end of composute clip for pixmap */
- }
- /* GJA -- End of cfb code */
-
- changes &= ~ ( GCClipXOrigin | GCClipYOrigin | GCClipMask | GCSubwindowMode
- | GC_CALL_VALIDATE_BIT ) ;
-
- /* If needed, Calculate the Color Reduced Raster-Op */
- if ( changes & ( GCFillStyle | GCBackground | GCForeground
- | GCPlaneMask | GCFunction ) )
- xf4bppGetReducedColorRrop( pGC, pDrawable->depth,
- &devPriv->colorRrop ) ;
-
- (* ( ( pDrawable->type == DRAWABLE_WINDOW )
- ? xf4bppChangeWindowGC
- : ppcChangePixmapGC ) )( pGC, changes ) ;
-
- return ;
-}