Merge remote branch 'jamey/for-keith'
This commit is contained in:
		
						commit
						95074538cc
					
				
							
								
								
									
										117
									
								
								dix/gc.c
								
								
								
								
							
							
						
						
									
										117
									
								
								dix/gc.c
								
								
								
								
							| 
						 | 
					@ -263,78 +263,68 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
	    case GCTile:
 | 
						    case GCTile:
 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
		XID newpix = 0;
 | 
					 | 
				
			||||||
		if (pUnion)
 | 
							if (pUnion)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    NEXT_PTR(PixmapPtr, pPixmap);
 | 
							    NEXT_PTR(PixmapPtr, pPixmap);
 | 
				
			||||||
		    rc = Success;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
							    XID newpix;
 | 
				
			||||||
		    NEXTVAL(XID, newpix);
 | 
							    NEXTVAL(XID, newpix);
 | 
				
			||||||
		    rc = dixLookupResourceByType((pointer *)&pPixmap, newpix,
 | 
							    rc = dixLookupResourceByType((pointer *)&pPixmap, newpix,
 | 
				
			||||||
					   RT_PIXMAP, client, DixReadAccess);
 | 
										   RT_PIXMAP, client, DixReadAccess);
 | 
				
			||||||
 | 
							    if (rc != Success)
 | 
				
			||||||
 | 
							    {
 | 
				
			||||||
 | 
								clientErrorValue = newpix;
 | 
				
			||||||
 | 
								error = (rc == BadValue) ? BadPixmap : rc;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							    }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (rc == Success)
 | 
							if ((pPixmap->drawable.depth != pGC->depth) ||
 | 
				
			||||||
 | 
							    (pPixmap->drawable.pScreen != pGC->pScreen))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    if ((pPixmap->drawable.depth != pGC->depth) ||
 | 
							    error = BadMatch;
 | 
				
			||||||
			(pPixmap->drawable.pScreen != pGC->pScreen))
 | 
					 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
			error = BadMatch;
 | 
					 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		    else
 | 
					 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
			pPixmap->refcnt++;
 | 
					 | 
				
			||||||
			if (!pGC->tileIsPixel)
 | 
					 | 
				
			||||||
			    (* pGC->pScreen->DestroyPixmap)(pGC->tile.pixmap);
 | 
					 | 
				
			||||||
			pGC->tileIsPixel = FALSE;
 | 
					 | 
				
			||||||
			pGC->tile.pixmap = pPixmap;
 | 
					 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    clientErrorValue = newpix;
 | 
							    pPixmap->refcnt++;
 | 
				
			||||||
		    error = (rc == BadValue) ? BadPixmap : rc;
 | 
							    if (!pGC->tileIsPixel)
 | 
				
			||||||
 | 
								(* pGC->pScreen->DestroyPixmap)(pGC->tile.pixmap);
 | 
				
			||||||
 | 
							    pGC->tileIsPixel = FALSE;
 | 
				
			||||||
 | 
							    pGC->tile.pixmap = pPixmap;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	    case GCStipple:
 | 
						    case GCStipple:
 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
		XID newstipple = 0;
 | 
					 | 
				
			||||||
		if (pUnion)
 | 
							if (pUnion)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    NEXT_PTR(PixmapPtr, pPixmap);
 | 
							    NEXT_PTR(PixmapPtr, pPixmap);
 | 
				
			||||||
		    rc = Success;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
							    XID newstipple;
 | 
				
			||||||
		    NEXTVAL(XID, newstipple)
 | 
							    NEXTVAL(XID, newstipple)
 | 
				
			||||||
		    rc = dixLookupResourceByType((pointer *)&pPixmap, newstipple,
 | 
							    rc = dixLookupResourceByType((pointer *)&pPixmap, newstipple,
 | 
				
			||||||
					   RT_PIXMAP, client, DixReadAccess);
 | 
										   RT_PIXMAP, client, DixReadAccess);
 | 
				
			||||||
 | 
							    if (rc != Success)
 | 
				
			||||||
 | 
							    {
 | 
				
			||||||
 | 
								clientErrorValue = newstipple;
 | 
				
			||||||
 | 
								error = (rc == BadValue) ? BadPixmap : rc;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							    }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (rc == Success)
 | 
							if ((pPixmap->drawable.depth != 1) ||
 | 
				
			||||||
 | 
							    (pPixmap->drawable.pScreen != pGC->pScreen))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    if ((pPixmap->drawable.depth != 1) ||
 | 
							    error = BadMatch;
 | 
				
			||||||
			(pPixmap->drawable.pScreen != pGC->pScreen))
 | 
					 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
			error = BadMatch;
 | 
					 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		    else
 | 
					 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
			pPixmap->refcnt++;
 | 
					 | 
				
			||||||
			if (pGC->stipple)
 | 
					 | 
				
			||||||
			    (* pGC->pScreen->DestroyPixmap)(pGC->stipple);
 | 
					 | 
				
			||||||
			pGC->stipple = pPixmap;
 | 
					 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    clientErrorValue = newstipple;
 | 
							    pPixmap->refcnt++;
 | 
				
			||||||
		    error = (rc == BadValue) ? BadPixmap : rc;
 | 
							    if (pGC->stipple)
 | 
				
			||||||
 | 
								(* pGC->pScreen->DestroyPixmap)(pGC->stipple);
 | 
				
			||||||
 | 
							    pGC->stipple = pPixmap;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	    case GCTileStipXOrigin:
 | 
						    case GCTileStipXOrigin:
 | 
				
			||||||
		NEXTVAL(INT16, pGC->patOrg.x);
 | 
							NEXTVAL(INT16, pGC->patOrg.x);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
| 
						 | 
					@ -344,30 +334,27 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr
 | 
				
			||||||
	    case GCFont:
 | 
						    case GCFont:
 | 
				
			||||||
    	    {
 | 
					    	    {
 | 
				
			||||||
		FontPtr	pFont;
 | 
							FontPtr	pFont;
 | 
				
			||||||
		XID newfont = 0;
 | 
					 | 
				
			||||||
		if (pUnion)
 | 
							if (pUnion)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    NEXT_PTR(FontPtr, pFont);
 | 
							    NEXT_PTR(FontPtr, pFont);
 | 
				
			||||||
		    rc = Success;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
							    XID newfont;
 | 
				
			||||||
		    NEXTVAL(XID, newfont)
 | 
							    NEXTVAL(XID, newfont)
 | 
				
			||||||
		    rc = dixLookupResourceByType((pointer *)&pFont, newfont,
 | 
							    rc = dixLookupResourceByType((pointer *)&pFont, newfont,
 | 
				
			||||||
					   RT_FONT, client, DixUseAccess);
 | 
										   RT_FONT, client, DixUseAccess);
 | 
				
			||||||
 | 
							    if (rc != Success)
 | 
				
			||||||
 | 
							    {
 | 
				
			||||||
 | 
								clientErrorValue = newfont;
 | 
				
			||||||
 | 
								error = (rc == BadValue) ? BadFont : rc;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							    }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (rc == Success)
 | 
							pFont->refcnt++;
 | 
				
			||||||
		{
 | 
							if (pGC->font)
 | 
				
			||||||
		    pFont->refcnt++;
 | 
							    CloseFont(pGC->font, (Font)0);
 | 
				
			||||||
		    if (pGC->font)
 | 
							pGC->font = pFont;
 | 
				
			||||||
    		        CloseFont(pGC->font, (Font)0);
 | 
					 | 
				
			||||||
		    pGC->font = pFont;
 | 
					 | 
				
			||||||
		 }
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		    clientErrorValue = newfont;
 | 
					 | 
				
			||||||
		    error = (rc == BadValue) ? BadFont : rc;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
	    case GCSubwindowMode:
 | 
						    case GCSubwindowMode:
 | 
				
			||||||
| 
						 | 
					@ -403,22 +390,16 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr
 | 
				
			||||||
		NEXTVAL(INT16, pGC->clipOrg.y);
 | 
							NEXTVAL(INT16, pGC->clipOrg.y);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    case GCClipMask:
 | 
						    case GCClipMask:
 | 
				
			||||||
	    {
 | 
					 | 
				
			||||||
		Pixmap pid = 0;
 | 
					 | 
				
			||||||
		int    clipType = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (pUnion)
 | 
							if (pUnion)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		    NEXT_PTR(PixmapPtr, pPixmap);
 | 
							    NEXT_PTR(PixmapPtr, pPixmap);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
							    Pixmap pid;
 | 
				
			||||||
		    NEXTVAL(Pixmap, pid)
 | 
							    NEXTVAL(Pixmap, pid)
 | 
				
			||||||
		    if (pid == None)
 | 
							    if (pid == None)
 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
			clipType = CT_NONE;
 | 
					 | 
				
			||||||
			pPixmap = NullPixmap;
 | 
								pPixmap = NullPixmap;
 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		    else {
 | 
							    else {
 | 
				
			||||||
			rc = dixLookupResourceByType((pointer *)&pPixmap, pid,
 | 
								rc = dixLookupResourceByType((pointer *)&pPixmap, pid,
 | 
				
			||||||
					       RT_PIXMAP, client,
 | 
										       RT_PIXMAP, client,
 | 
				
			||||||
| 
						 | 
					@ -426,6 +407,7 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr
 | 
				
			||||||
			if (rc != Success) {
 | 
								if (rc != Success) {
 | 
				
			||||||
			    clientErrorValue = pid;
 | 
								    clientErrorValue = pid;
 | 
				
			||||||
			    error = (rc == BadValue) ? BadPixmap : rc;
 | 
								    error = (rc == BadValue) ? BadPixmap : rc;
 | 
				
			||||||
 | 
								    break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		    }
 | 
							    }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -436,20 +418,13 @@ dixChangeGC(ClientPtr client, GC *pGC, BITS32 mask, CARD32 *pC32, ChangeGCValPtr
 | 
				
			||||||
			(pPixmap->drawable.pScreen != pGC->pScreen))
 | 
								(pPixmap->drawable.pScreen != pGC->pScreen))
 | 
				
			||||||
		    {
 | 
							    {
 | 
				
			||||||
			error = BadMatch;
 | 
								error = BadMatch;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
		    }
 | 
							    }
 | 
				
			||||||
		    else
 | 
							    pPixmap->refcnt++;
 | 
				
			||||||
		    {
 | 
					 | 
				
			||||||
			clipType = CT_PIXMAP;
 | 
					 | 
				
			||||||
			pPixmap->refcnt++;
 | 
					 | 
				
			||||||
		    }
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(error == Success)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		    (*pGC->funcs->ChangeClip)(pGC, clipType,
 | 
					 | 
				
			||||||
					      (pointer)pPixmap, 0);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							(*pGC->funcs->ChangeClip)(pGC, pPixmap ? CT_PIXMAP : CT_NONE,
 | 
				
			||||||
 | 
										  (pointer)pPixmap, 0);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	    }
 | 
					 | 
				
			||||||
	    case GCDashOffset:
 | 
						    case GCDashOffset:
 | 
				
			||||||
		NEXTVAL(INT16, pGC->dashOffset);
 | 
							NEXTVAL(INT16, pGC->dashOffset);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,6 +73,9 @@ miPolyPoint(
 | 
				
			||||||
    int			i;
 | 
					    int			i;
 | 
				
			||||||
    xPoint 		*ppt;
 | 
					    xPoint 		*ppt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(!(pwidthInit = xalloc(npt * sizeof(int))))
 | 
				
			||||||
 | 
						return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* make pointlist origin relative */
 | 
					    /* make pointlist origin relative */
 | 
				
			||||||
    if (mode == CoordModePrevious)
 | 
					    if (mode == CoordModePrevious)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					@ -107,8 +110,6 @@ miPolyPoint(
 | 
				
			||||||
	DoChangeGC(pGC, GCFillStyle, &fsNew, 0);
 | 
						DoChangeGC(pGC, GCFillStyle, &fsNew, 0);
 | 
				
			||||||
	ValidateGC(pDrawable, pGC);
 | 
						ValidateGC(pDrawable, pGC);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if(!(pwidthInit = xalloc(npt * sizeof(int))))
 | 
					 | 
				
			||||||
	return;
 | 
					 | 
				
			||||||
    pwidth = pwidthInit;
 | 
					    pwidth = pwidthInit;
 | 
				
			||||||
    for(i = 0; i < npt; i++)
 | 
					    for(i = 0; i < npt; i++)
 | 
				
			||||||
	*pwidth++ = 1;
 | 
						*pwidth++ = 1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,6 +52,33 @@ from The Open Group.
 | 
				
			||||||
#include "miwideline.h"
 | 
					#include "miwideline.h"
 | 
				
			||||||
#include "mi.h"
 | 
					#include "mi.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * interface data to span-merging polygon filler
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _SpanData {
 | 
				
			||||||
 | 
					    SpanGroup	fgGroup, bgGroup;
 | 
				
			||||||
 | 
					} SpanDataRec, *SpanDataPtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					AppendSpanGroup(GCPtr pGC, unsigned long pixel, Spans *spanPtr, SpanDataPtr spanData)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SpanGroup *group, *othergroup = NULL;
 | 
				
			||||||
 | 
					    if (pixel == pGC->fgPixel)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
						group = &spanData->fgGroup;
 | 
				
			||||||
 | 
						if (pGC->lineStyle == LineDoubleDash)
 | 
				
			||||||
 | 
						    othergroup = &spanData->bgGroup;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
						group = &spanData->bgGroup;
 | 
				
			||||||
 | 
						othergroup = &spanData->fgGroup;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    miAppendSpans (group, othergroup, spanPtr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void miLineArc(DrawablePtr pDraw, GCPtr pGC,
 | 
					static void miLineArc(DrawablePtr pDraw, GCPtr pGC,
 | 
				
			||||||
		      unsigned long pixel, SpanDataPtr spanData,
 | 
							      unsigned long pixel, SpanDataPtr spanData,
 | 
				
			||||||
		      LineFacePtr leftFace,
 | 
							      LineFacePtr leftFace,
 | 
				
			||||||
| 
						 | 
					@ -138,8 +165,31 @@ miFillPolyHelper (DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel,
 | 
				
			||||||
    while ((left_count || left_height) &&
 | 
					    while ((left_count || left_height) &&
 | 
				
			||||||
	   (right_count || right_height))
 | 
						   (right_count || right_height))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
	MIPOLYRELOADLEFT
 | 
						if (!left_height && left_count)
 | 
				
			||||||
	MIPOLYRELOADRIGHT
 | 
						{
 | 
				
			||||||
 | 
						    left_height = left->height;
 | 
				
			||||||
 | 
						    left_x = left->x;
 | 
				
			||||||
 | 
						    left_stepx = left->stepx;
 | 
				
			||||||
 | 
						    left_signdx = left->signdx;
 | 
				
			||||||
 | 
						    left_e = left->e;
 | 
				
			||||||
 | 
						    left_dy = left->dy;
 | 
				
			||||||
 | 
						    left_dx = left->dx;
 | 
				
			||||||
 | 
						    --left_count;
 | 
				
			||||||
 | 
						    ++left;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!right_height && right_count)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						    right_height = right->height;
 | 
				
			||||||
 | 
						    right_x = right->x;
 | 
				
			||||||
 | 
						    right_stepx = right->stepx;
 | 
				
			||||||
 | 
						    right_signdx = right->signdx;
 | 
				
			||||||
 | 
						    right_e = right->e;
 | 
				
			||||||
 | 
						    right_dy = right->dy;
 | 
				
			||||||
 | 
						    right_dx = right->dx;
 | 
				
			||||||
 | 
						    --right_count;
 | 
				
			||||||
 | 
						    ++right;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	height = left_height;
 | 
						height = left_height;
 | 
				
			||||||
	if (height > right_height)
 | 
						if (height > right_height)
 | 
				
			||||||
| 
						 | 
					@ -157,11 +207,23 @@ miFillPolyHelper (DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel,
 | 
				
			||||||
		ppt++;
 | 
							ppt++;
 | 
				
			||||||
		*pwidth++ = right_x - left_x + 1;
 | 
							*pwidth++ = right_x - left_x + 1;
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
    	    y++;
 | 
						    y++;
 | 
				
			||||||
    	
 | 
					 | 
				
			||||||
	    MIPOLYSTEPLEFT
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    MIPOLYSTEPRIGHT
 | 
						    left_x += left_stepx;
 | 
				
			||||||
 | 
						    left_e += left_dx;
 | 
				
			||||||
 | 
						    if (left_e > 0)
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
							left_x += left_signdx;
 | 
				
			||||||
 | 
							left_e -= left_dy;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    right_x += right_stepx;
 | 
				
			||||||
 | 
						    right_e += right_dx;
 | 
				
			||||||
 | 
						    if (right_e > 0)
 | 
				
			||||||
 | 
						    {
 | 
				
			||||||
 | 
							right_x += right_signdx;
 | 
				
			||||||
 | 
							right_e -= right_dy;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!spanData)
 | 
					    if (!spanData)
 | 
				
			||||||
| 
						 | 
					@ -178,7 +240,7 @@ miFillPolyHelper (DrawablePtr pDrawable, GCPtr pGC, unsigned long pixel,
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
	spanRec.count = ppt - spanRec.points;
 | 
						spanRec.count = ppt - spanRec.points;
 | 
				
			||||||
	AppendSpanGroup (pGC, pixel, &spanRec, spanData)
 | 
						AppendSpanGroup (pGC, pixel, &spanRec, spanData);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -247,7 +309,7 @@ miFillRectPolyHelper (
 | 
				
			||||||
	    y++;
 | 
						    y++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	spanRec.count = ppt - spanRec.points;
 | 
						spanRec.count = ppt - spanRec.points;
 | 
				
			||||||
	AppendSpanGroup (pGC, pixel, &spanRec, spanData)
 | 
						AppendSpanGroup (pGC, pixel, &spanRec, spanData);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1097,7 +1159,7 @@ miLineArc (
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
	spanRec.count = n;
 | 
						spanRec.count = n;
 | 
				
			||||||
	AppendSpanGroup (pGC, pixel, &spanRec, spanData)
 | 
						AppendSpanGroup (pGC, pixel, &spanRec, spanData);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,30 +31,6 @@ from The Open Group.
 | 
				
			||||||
#include "mispans.h"
 | 
					#include "mispans.h"
 | 
				
			||||||
#include "mifpoly.h" /* for ICEIL */
 | 
					#include "mifpoly.h" /* for ICEIL */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 
 | 
					 | 
				
			||||||
 * interface data to span-merging polygon filler
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct _SpanData {
 | 
					 | 
				
			||||||
    SpanGroup	fgGroup, bgGroup;
 | 
					 | 
				
			||||||
} SpanDataRec, *SpanDataPtr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define AppendSpanGroup(pGC, pixel, spanPtr, spanData) { \
 | 
					 | 
				
			||||||
	SpanGroup   *group, *othergroup = NULL; \
 | 
					 | 
				
			||||||
	if (pixel == pGC->fgPixel) \
 | 
					 | 
				
			||||||
	{ \
 | 
					 | 
				
			||||||
	    group = &spanData->fgGroup; \
 | 
					 | 
				
			||||||
	    if (pGC->lineStyle == LineDoubleDash) \
 | 
					 | 
				
			||||||
		othergroup = &spanData->bgGroup; \
 | 
					 | 
				
			||||||
	} \
 | 
					 | 
				
			||||||
	else \
 | 
					 | 
				
			||||||
	{ \
 | 
					 | 
				
			||||||
	    group = &spanData->bgGroup; \
 | 
					 | 
				
			||||||
	    othergroup = &spanData->fgGroup; \
 | 
					 | 
				
			||||||
	} \
 | 
					 | 
				
			||||||
	miAppendSpans (group, othergroup, spanPtr); \
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Polygon edge description for integer wide-line routines
 | 
					 * Polygon edge description for integer wide-line routines
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -99,46 +75,6 @@ typedef struct _LineFace {
 | 
				
			||||||
 * macros for polygon fillers
 | 
					 * macros for polygon fillers
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MIPOLYRELOADLEFT    if (!left_height && left_count) { \
 | 
					 | 
				
			||||||
	    	    	    	left_height = left->height; \
 | 
					 | 
				
			||||||
	    	    	    	left_x = left->x; \
 | 
					 | 
				
			||||||
	    	    	    	left_stepx = left->stepx; \
 | 
					 | 
				
			||||||
	    	    	    	left_signdx = left->signdx; \
 | 
					 | 
				
			||||||
	    	    	    	left_e = left->e; \
 | 
					 | 
				
			||||||
	    	    	    	left_dy = left->dy; \
 | 
					 | 
				
			||||||
	    	    	    	left_dx = left->dx; \
 | 
					 | 
				
			||||||
	    	    	    	--left_count; \
 | 
					 | 
				
			||||||
	    	    	    	++left; \
 | 
					 | 
				
			||||||
			    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MIPOLYRELOADRIGHT   if (!right_height && right_count) { \
 | 
					 | 
				
			||||||
	    	    	    	right_height = right->height; \
 | 
					 | 
				
			||||||
	    	    	    	right_x = right->x; \
 | 
					 | 
				
			||||||
	    	    	    	right_stepx = right->stepx; \
 | 
					 | 
				
			||||||
	    	    	    	right_signdx = right->signdx; \
 | 
					 | 
				
			||||||
	    	    	    	right_e = right->e; \
 | 
					 | 
				
			||||||
	    	    	    	right_dy = right->dy; \
 | 
					 | 
				
			||||||
	    	    	    	right_dx = right->dx; \
 | 
					 | 
				
			||||||
	    	    	    	--right_count; \
 | 
					 | 
				
			||||||
	    	    	    	++right; \
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MIPOLYSTEPLEFT  left_x += left_stepx; \
 | 
					 | 
				
			||||||
    	    	    	left_e += left_dx; \
 | 
					 | 
				
			||||||
    	    	    	if (left_e > 0) \
 | 
					 | 
				
			||||||
    	    	    	{ \
 | 
					 | 
				
			||||||
	    	    	    left_x += left_signdx; \
 | 
					 | 
				
			||||||
	    	    	    left_e -= left_dy; \
 | 
					 | 
				
			||||||
    	    	    	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MIPOLYSTEPRIGHT right_x += right_stepx; \
 | 
					 | 
				
			||||||
    	    	    	right_e += right_dx; \
 | 
					 | 
				
			||||||
    	    	    	if (right_e > 0) \
 | 
					 | 
				
			||||||
    	    	    	{ \
 | 
					 | 
				
			||||||
	    	    	    right_x += right_signdx; \
 | 
					 | 
				
			||||||
	    	    	    right_e -= right_dy; \
 | 
					 | 
				
			||||||
    	    	    	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MILINESETPIXEL(pDrawable, pGC, pixel, oldPixel) { \
 | 
					#define MILINESETPIXEL(pDrawable, pGC, pixel, oldPixel) { \
 | 
				
			||||||
    oldPixel = pGC->fgPixel; \
 | 
					    oldPixel = pGC->fgPixel; \
 | 
				
			||||||
    if (pixel != oldPixel) { \
 | 
					    if (pixel != oldPixel) { \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue