diff options
author | marha <marha@users.sourceforge.net> | 2012-03-23 10:05:55 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-23 10:05:55 +0100 |
commit | 0f834b91a4768673833ab4917e87d86c237bb1a6 (patch) | |
tree | 363489504ed4b2d360259b8de4c9e392918e5d02 /xorg-server/hw/xfree86/xaa/xaaGCmisc.c | |
parent | fc72edebf875378459368c5383d9023730cbca54 (diff) | |
download | vcxsrv-0f834b91a4768673833ab4917e87d86c237bb1a6.tar.gz vcxsrv-0f834b91a4768673833ab4917e87d86c237bb1a6.tar.bz2 vcxsrv-0f834b91a4768673833ab4917e87d86c237bb1a6.zip |
libX11 xserver fontconfig mesa pixman xkbcomp xkeyboard-config git update
23 Mar 2012
Diffstat (limited to 'xorg-server/hw/xfree86/xaa/xaaGCmisc.c')
-rw-r--r-- | xorg-server/hw/xfree86/xaa/xaaGCmisc.c | 709 |
1 files changed, 346 insertions, 363 deletions
diff --git a/xorg-server/hw/xfree86/xaa/xaaGCmisc.c b/xorg-server/hw/xfree86/xaa/xaaGCmisc.c index 5823cc064..ca69aae74 100644 --- a/xorg-server/hw/xfree86/xaa/xaaGCmisc.c +++ b/xorg-server/hw/xfree86/xaa/xaaGCmisc.c @@ -20,162 +20,149 @@ #include "pixmapstr.h" void -XAAValidateCopyArea( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidateCopyArea(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - - if(infoRec->CopyArea && - CHECK_PLANEMASK(pGC,infoRec->CopyAreaFlags) && - CHECK_ROP(pGC,infoRec->CopyAreaFlags) && - CHECK_ROPSRC(pGC,infoRec->CopyAreaFlags) - ) - pGC->ops->CopyArea = infoRec->CopyArea; - else - pGC->ops->CopyArea = XAAFallbackOps.CopyArea; + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + + if (infoRec->CopyArea && + CHECK_PLANEMASK(pGC, infoRec->CopyAreaFlags) && + CHECK_ROP(pGC, infoRec->CopyAreaFlags) && + CHECK_ROPSRC(pGC, infoRec->CopyAreaFlags) + ) + pGC->ops->CopyArea = infoRec->CopyArea; + else + pGC->ops->CopyArea = XAAFallbackOps.CopyArea; } void -XAAValidatePutImage( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidatePutImage(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - - if(infoRec->PutImage && - CHECK_PLANEMASK(pGC,infoRec->PutImageFlags) && - CHECK_ROP(pGC,infoRec->PutImageFlags) && - CHECK_ROPSRC(pGC,infoRec->PutImageFlags) && - CHECK_COLORS(pGC,infoRec->PutImageFlags) - ) - pGC->ops->PutImage = infoRec->PutImage; - else - pGC->ops->PutImage = XAAFallbackOps.PutImage; + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + + if (infoRec->PutImage && + CHECK_PLANEMASK(pGC, infoRec->PutImageFlags) && + CHECK_ROP(pGC, infoRec->PutImageFlags) && + CHECK_ROPSRC(pGC, infoRec->PutImageFlags) && + CHECK_COLORS(pGC, infoRec->PutImageFlags) + ) + pGC->ops->PutImage = infoRec->PutImage; + else + pGC->ops->PutImage = XAAFallbackOps.PutImage; } void -XAAValidateCopyPlane( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidateCopyPlane(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - - if(infoRec->CopyPlane && - CHECK_PLANEMASK(pGC,infoRec->CopyPlaneFlags) && - CHECK_ROP(pGC,infoRec->CopyPlaneFlags) && - CHECK_ROPSRC(pGC,infoRec->CopyPlaneFlags) && - CHECK_COLORS(pGC,infoRec->CopyPlaneFlags) - ) - pGC->ops->CopyPlane = infoRec->CopyPlane; - else - pGC->ops->CopyPlane = XAAFallbackOps.CopyPlane; + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + + if (infoRec->CopyPlane && + CHECK_PLANEMASK(pGC, infoRec->CopyPlaneFlags) && + CHECK_ROP(pGC, infoRec->CopyPlaneFlags) && + CHECK_ROPSRC(pGC, infoRec->CopyPlaneFlags) && + CHECK_COLORS(pGC, infoRec->CopyPlaneFlags) + ) + pGC->ops->CopyPlane = infoRec->CopyPlane; + else + pGC->ops->CopyPlane = XAAFallbackOps.CopyPlane; } void -XAAValidatePushPixels( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidatePushPixels(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - - if(infoRec->PushPixelsSolid && - (pGC->fillStyle == FillSolid) && - CHECK_PLANEMASK(pGC,infoRec->PushPixelsFlags) && - CHECK_ROP(pGC,infoRec->PushPixelsFlags) && - CHECK_ROPSRC(pGC,infoRec->PushPixelsFlags) && - CHECK_FG(pGC,infoRec->PushPixelsFlags) && - (!(infoRec->PushPixelsFlags & TRANSPARENCY_GXCOPY_ONLY) || - (pGC->alu == GXcopy)) - ) - pGC->ops->PushPixels = infoRec->PushPixelsSolid; - else - pGC->ops->PushPixels = XAAFallbackOps.PushPixels; + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + + if (infoRec->PushPixelsSolid && + (pGC->fillStyle == FillSolid) && + CHECK_PLANEMASK(pGC, infoRec->PushPixelsFlags) && + CHECK_ROP(pGC, infoRec->PushPixelsFlags) && + CHECK_ROPSRC(pGC, infoRec->PushPixelsFlags) && + CHECK_FG(pGC, infoRec->PushPixelsFlags) && + (!(infoRec->PushPixelsFlags & TRANSPARENCY_GXCOPY_ONLY) || + (pGC->alu == GXcopy)) + ) + pGC->ops->PushPixels = infoRec->PushPixelsSolid; + else + pGC->ops->PushPixels = XAAFallbackOps.PushPixels; } - /* We make the assumption that the FillSpans, PolyFillRect, FillPolygon and PolyFillArc functions are linked in a way that they all have the same rop/color/planemask restrictions. If the driver provides a GC level replacement for these, it will need to supply a new Validate functions if it breaks this assumption */ - void -XAAValidateFillSpans( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidateFillSpans(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - - if(pGC->fillStyle != FillTiled) changes &= ~GCTile; - if((pGC->fillStyle == FillTiled) || (pGC->fillStyle == FillSolid)) - changes &= ~GCStipple; - if(!changes) return; - - - pGC->ops->FillSpans = XAAFallbackOps.FillSpans; - pGC->ops->PolyFillRect = XAAFallbackOps.PolyFillRect; - pGC->ops->FillPolygon = XAAFallbackOps.FillPolygon; - pGC->ops->PolyFillArc = XAAFallbackOps.PolyFillArc; - - switch(pGC->fillStyle){ - case FillSolid: - if(infoRec->FillSpansSolid && - CHECK_PLANEMASK(pGC,infoRec->FillSpansSolidFlags) && - CHECK_ROP(pGC,infoRec->FillSpansSolidFlags) && - CHECK_ROPSRC(pGC,infoRec->FillSpansSolidFlags) && - CHECK_FG(pGC,infoRec->FillSpansSolidFlags) - ) { - pGC->ops->FillSpans = infoRec->FillSpansSolid; - pGC->ops->PolyFillRect = infoRec->PolyFillRectSolid; - pGC->ops->FillPolygon = infoRec->FillPolygonSolid; - pGC->ops->PolyFillArc = infoRec->PolyFillArcSolid; - } - break; - /* The [Stippled/OpaqueStippled/Tiled]FillChooser - functions do the validating */ - case FillStippled: - if(infoRec->FillSpansStippled) { - pGC->ops->FillSpans = infoRec->FillSpansStippled; - pGC->ops->PolyFillRect = infoRec->PolyFillRectStippled; - if(infoRec->FillPolygonStippled) - pGC->ops->FillPolygon = infoRec->FillPolygonStippled; - else pGC->ops->FillPolygon = miFillPolygon; - pGC->ops->PolyFillArc = miPolyFillArc; - } - break; - case FillOpaqueStippled: - if(infoRec->FillSpansOpaqueStippled) { - pGC->ops->FillSpans = infoRec->FillSpansOpaqueStippled; - pGC->ops->PolyFillRect = infoRec->PolyFillRectOpaqueStippled; - if(infoRec->FillPolygonOpaqueStippled) - pGC->ops->FillPolygon = infoRec->FillPolygonOpaqueStippled; - else pGC->ops->FillPolygon = miFillPolygon; - pGC->ops->PolyFillArc = miPolyFillArc; - } - break; - case FillTiled: - if(infoRec->FillSpansTiled) { - pGC->ops->FillSpans = infoRec->FillSpansTiled; - pGC->ops->PolyFillRect = infoRec->PolyFillRectTiled; - if(infoRec->FillPolygonTiled) - pGC->ops->FillPolygon = infoRec->FillPolygonTiled; - else pGC->ops->FillPolygon = miFillPolygon; - pGC->ops->PolyFillArc = miPolyFillArc; - } - break; - default: return; - } + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + + if (pGC->fillStyle != FillTiled) + changes &= ~GCTile; + if ((pGC->fillStyle == FillTiled) || (pGC->fillStyle == FillSolid)) + changes &= ~GCStipple; + if (!changes) + return; + + pGC->ops->FillSpans = XAAFallbackOps.FillSpans; + pGC->ops->PolyFillRect = XAAFallbackOps.PolyFillRect; + pGC->ops->FillPolygon = XAAFallbackOps.FillPolygon; + pGC->ops->PolyFillArc = XAAFallbackOps.PolyFillArc; + + switch (pGC->fillStyle) { + case FillSolid: + if (infoRec->FillSpansSolid && + CHECK_PLANEMASK(pGC, infoRec->FillSpansSolidFlags) && + CHECK_ROP(pGC, infoRec->FillSpansSolidFlags) && + CHECK_ROPSRC(pGC, infoRec->FillSpansSolidFlags) && + CHECK_FG(pGC, infoRec->FillSpansSolidFlags) + ) { + pGC->ops->FillSpans = infoRec->FillSpansSolid; + pGC->ops->PolyFillRect = infoRec->PolyFillRectSolid; + pGC->ops->FillPolygon = infoRec->FillPolygonSolid; + pGC->ops->PolyFillArc = infoRec->PolyFillArcSolid; + } + break; + /* The [Stippled/OpaqueStippled/Tiled]FillChooser + functions do the validating */ + case FillStippled: + if (infoRec->FillSpansStippled) { + pGC->ops->FillSpans = infoRec->FillSpansStippled; + pGC->ops->PolyFillRect = infoRec->PolyFillRectStippled; + if (infoRec->FillPolygonStippled) + pGC->ops->FillPolygon = infoRec->FillPolygonStippled; + else + pGC->ops->FillPolygon = miFillPolygon; + pGC->ops->PolyFillArc = miPolyFillArc; + } + break; + case FillOpaqueStippled: + if (infoRec->FillSpansOpaqueStippled) { + pGC->ops->FillSpans = infoRec->FillSpansOpaqueStippled; + pGC->ops->PolyFillRect = infoRec->PolyFillRectOpaqueStippled; + if (infoRec->FillPolygonOpaqueStippled) + pGC->ops->FillPolygon = infoRec->FillPolygonOpaqueStippled; + else + pGC->ops->FillPolygon = miFillPolygon; + pGC->ops->PolyFillArc = miPolyFillArc; + } + break; + case FillTiled: + if (infoRec->FillSpansTiled) { + pGC->ops->FillSpans = infoRec->FillSpansTiled; + pGC->ops->PolyFillRect = infoRec->PolyFillRectTiled; + if (infoRec->FillPolygonTiled) + pGC->ops->FillPolygon = infoRec->FillPolygonTiled; + else + pGC->ops->FillPolygon = miFillPolygon; + pGC->ops->PolyFillArc = miPolyFillArc; + } + break; + default: + return; + } } - /* We make the assumption that these Text8/16 and GlyphBlt functions are linked in a way that they all have the same rop/color/planemask restrictions. If the driver provides a GC level replacement for @@ -183,247 +170,243 @@ XAAValidateFillSpans( this assumption */ void -XAAValidatePolyGlyphBlt( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidatePolyGlyphBlt(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - Bool BigFont = FALSE; - - pGC->ops->PolyText8 = XAAFallbackOps.PolyText8; - pGC->ops->PolyText16 = XAAFallbackOps.PolyText16; - pGC->ops->PolyGlyphBlt = XAAFallbackOps.PolyGlyphBlt; - - if(!pGC->font) return; - if(pGC->fillStyle != FillSolid) return; - - if((FONTMAXBOUNDS(pGC->font, rightSideBearing) - - FONTMINBOUNDS(pGC->font, leftSideBearing) > 32)) - BigFont = TRUE; - - /* no funny business */ - if((FONTMINBOUNDS(pGC->font, characterWidth) <= 0) || - ((FONTASCENT(pGC->font) + FONTDESCENT(pGC->font)) <= 0)) - return; - - /* Check for TE Fonts */ - if(!TERMINALFONT(pGC->font) || BigFont) { - if(infoRec->PolyGlyphBltNonTE && - CHECK_PLANEMASK(pGC,infoRec->PolyGlyphBltNonTEFlags) && - CHECK_ROP(pGC,infoRec->PolyGlyphBltNonTEFlags) && - CHECK_ROPSRC(pGC,infoRec->PolyGlyphBltNonTEFlags) && - CHECK_FG(pGC,infoRec->PolyGlyphBltNonTEFlags) && - (!(infoRec->PolyGlyphBltNonTEFlags & TRANSPARENCY_GXCOPY_ONLY) || - (pGC->alu == GXcopy)) - ) { - pGC->ops->PolyText8 = infoRec->PolyText8NonTE; - pGC->ops->PolyText16 = infoRec->PolyText16NonTE; - pGC->ops->PolyGlyphBlt = infoRec->PolyGlyphBltNonTE; - } - } else { - if(infoRec->PolyGlyphBltTE && - CHECK_PLANEMASK(pGC,infoRec->PolyGlyphBltTEFlags) && - CHECK_ROP(pGC,infoRec->PolyGlyphBltTEFlags) && - CHECK_ROPSRC(pGC,infoRec->PolyGlyphBltNonTEFlags) && - CHECK_FG(pGC,infoRec->PolyGlyphBltTEFlags) && - (!(infoRec->PolyGlyphBltTEFlags & TRANSPARENCY_GXCOPY_ONLY) || - (pGC->alu == GXcopy)) - ) { - pGC->ops->PolyText8 = infoRec->PolyText8TE; - pGC->ops->PolyText16 = infoRec->PolyText16TE; - pGC->ops->PolyGlyphBlt = infoRec->PolyGlyphBltTE; - } - } + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + Bool BigFont = FALSE; + + pGC->ops->PolyText8 = XAAFallbackOps.PolyText8; + pGC->ops->PolyText16 = XAAFallbackOps.PolyText16; + pGC->ops->PolyGlyphBlt = XAAFallbackOps.PolyGlyphBlt; + + if (!pGC->font) + return; + if (pGC->fillStyle != FillSolid) + return; + + if ((FONTMAXBOUNDS(pGC->font, rightSideBearing) - + FONTMINBOUNDS(pGC->font, leftSideBearing) > 32)) + BigFont = TRUE; + + /* no funny business */ + if ((FONTMINBOUNDS(pGC->font, characterWidth) <= 0) || + ((FONTASCENT(pGC->font) + FONTDESCENT(pGC->font)) <= 0)) + return; + + /* Check for TE Fonts */ + if (!TERMINALFONT(pGC->font) || BigFont) { + if (infoRec->PolyGlyphBltNonTE && + CHECK_PLANEMASK(pGC, infoRec->PolyGlyphBltNonTEFlags) && + CHECK_ROP(pGC, infoRec->PolyGlyphBltNonTEFlags) && + CHECK_ROPSRC(pGC, infoRec->PolyGlyphBltNonTEFlags) && + CHECK_FG(pGC, infoRec->PolyGlyphBltNonTEFlags) && + (!(infoRec->PolyGlyphBltNonTEFlags & TRANSPARENCY_GXCOPY_ONLY) || + (pGC->alu == GXcopy)) + ) { + pGC->ops->PolyText8 = infoRec->PolyText8NonTE; + pGC->ops->PolyText16 = infoRec->PolyText16NonTE; + pGC->ops->PolyGlyphBlt = infoRec->PolyGlyphBltNonTE; + } + } + else { + if (infoRec->PolyGlyphBltTE && + CHECK_PLANEMASK(pGC, infoRec->PolyGlyphBltTEFlags) && + CHECK_ROP(pGC, infoRec->PolyGlyphBltTEFlags) && + CHECK_ROPSRC(pGC, infoRec->PolyGlyphBltNonTEFlags) && + CHECK_FG(pGC, infoRec->PolyGlyphBltTEFlags) && + (!(infoRec->PolyGlyphBltTEFlags & TRANSPARENCY_GXCOPY_ONLY) || + (pGC->alu == GXcopy)) + ) { + pGC->ops->PolyText8 = infoRec->PolyText8TE; + pGC->ops->PolyText16 = infoRec->PolyText16TE; + pGC->ops->PolyGlyphBlt = infoRec->PolyGlyphBltTE; + } + } } void -XAAValidateImageGlyphBlt( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidateImageGlyphBlt(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - Bool BigFont = FALSE; - - pGC->ops->ImageText8 = XAAFallbackOps.ImageText8; - pGC->ops->ImageText16 = XAAFallbackOps.ImageText16; - pGC->ops->ImageGlyphBlt = XAAFallbackOps.ImageGlyphBlt; - - if(!pGC->font) return; - - if((FONTMAXBOUNDS(pGC->font, rightSideBearing) - - FONTMINBOUNDS(pGC->font, leftSideBearing) > 32)) - BigFont = TRUE; - - /* no funny business */ - if((FONTMINBOUNDS(pGC->font, characterWidth) <= 0) || - ((FONTASCENT(pGC->font) + FONTDESCENT(pGC->font)) <= 0)) - return; - - - /* Check for TE Fonts */ - if(!TERMINALFONT(pGC->font) || BigFont || (pGC->depth == 32)) { - if(infoRec->ImageGlyphBltNonTE && - CHECK_PLANEMASK(pGC,infoRec->ImageGlyphBltNonTEFlags) && - CHECK_FG(pGC,infoRec->ImageGlyphBltNonTEFlags) && - infoRec->SetupForSolidFill && - CHECK_PLANEMASK(pGC,infoRec->SolidFillFlags) && - CHECK_BG(pGC,infoRec->SolidFillFlags)) - { - pGC->ops->ImageText8 = infoRec->ImageText8NonTE; - pGC->ops->ImageText16 = infoRec->ImageText16NonTE; - pGC->ops->ImageGlyphBlt = infoRec->ImageGlyphBltNonTE; - } - } else if(infoRec->ImageGlyphBltTE && - CHECK_PLANEMASK(pGC,infoRec->ImageGlyphBltTEFlags)){ - if(!(infoRec->ImageGlyphBltTEFlags & TRANSPARENCY_ONLY) && - CHECK_COLORS(pGC,infoRec->ImageGlyphBltTEFlags)) - { - pGC->ops->ImageText8 = infoRec->ImageText8TE; - pGC->ops->ImageText16 = infoRec->ImageText16TE; - pGC->ops->ImageGlyphBlt = infoRec->ImageGlyphBltTE; - } else { - if(CHECK_FG(pGC,infoRec->ImageGlyphBltTEFlags) && - infoRec->SetupForSolidFill && - CHECK_PLANEMASK(pGC,infoRec->SolidFillFlags) && - CHECK_BG(pGC,infoRec->SolidFillFlags)) - { - pGC->ops->ImageText8 = infoRec->ImageText8TE; - pGC->ops->ImageText16 = infoRec->ImageText16TE; - pGC->ops->ImageGlyphBlt = infoRec->ImageGlyphBltTE; - } - } + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + Bool BigFont = FALSE; + + pGC->ops->ImageText8 = XAAFallbackOps.ImageText8; + pGC->ops->ImageText16 = XAAFallbackOps.ImageText16; + pGC->ops->ImageGlyphBlt = XAAFallbackOps.ImageGlyphBlt; + + if (!pGC->font) + return; + + if ((FONTMAXBOUNDS(pGC->font, rightSideBearing) - + FONTMINBOUNDS(pGC->font, leftSideBearing) > 32)) + BigFont = TRUE; + + /* no funny business */ + if ((FONTMINBOUNDS(pGC->font, characterWidth) <= 0) || + ((FONTASCENT(pGC->font) + FONTDESCENT(pGC->font)) <= 0)) + return; + + /* Check for TE Fonts */ + if (!TERMINALFONT(pGC->font) || BigFont || (pGC->depth == 32)) { + if (infoRec->ImageGlyphBltNonTE && + CHECK_PLANEMASK(pGC, infoRec->ImageGlyphBltNonTEFlags) && + CHECK_FG(pGC, infoRec->ImageGlyphBltNonTEFlags) && + infoRec->SetupForSolidFill && + CHECK_PLANEMASK(pGC, infoRec->SolidFillFlags) && + CHECK_BG(pGC, infoRec->SolidFillFlags)) { + pGC->ops->ImageText8 = infoRec->ImageText8NonTE; + pGC->ops->ImageText16 = infoRec->ImageText16NonTE; + pGC->ops->ImageGlyphBlt = infoRec->ImageGlyphBltNonTE; + } + } + else if (infoRec->ImageGlyphBltTE && + CHECK_PLANEMASK(pGC, infoRec->ImageGlyphBltTEFlags)) { + if (!(infoRec->ImageGlyphBltTEFlags & TRANSPARENCY_ONLY) && + CHECK_COLORS(pGC, infoRec->ImageGlyphBltTEFlags)) { + pGC->ops->ImageText8 = infoRec->ImageText8TE; + pGC->ops->ImageText16 = infoRec->ImageText16TE; + pGC->ops->ImageGlyphBlt = infoRec->ImageGlyphBltTE; + } + else { + if (CHECK_FG(pGC, infoRec->ImageGlyphBltTEFlags) && + infoRec->SetupForSolidFill && + CHECK_PLANEMASK(pGC, infoRec->SolidFillFlags) && + CHECK_BG(pGC, infoRec->SolidFillFlags)) { + pGC->ops->ImageText8 = infoRec->ImageText8TE; + pGC->ops->ImageText16 = infoRec->ImageText16TE; + pGC->ops->ImageGlyphBlt = infoRec->ImageGlyphBltTE; + } + } } } - void -XAAValidatePolylines( - GCPtr pGC, - unsigned long changes, - DrawablePtr pDraw ) +XAAValidatePolylines(GCPtr pGC, unsigned long changes, DrawablePtr pDraw) { - XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); - XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&pGC->devPrivates, - XAAGetGCKey()); - - if(pGC->lineStyle == LineSolid) changes &= ~GCDashList; - if(!changes) return; - - pGC->ops->PolySegment = XAAFallbackOps.PolySegment; - pGC->ops->Polylines = XAAFallbackOps.Polylines; - pGC->ops->PolyRectangle = XAAFallbackOps.PolyRectangle; - pGC->ops->PolyArc = XAAFallbackOps.PolyArc; - - if((pGC->ops->FillSpans != XAAFallbackOps.FillSpans) && - (pGC->lineWidth > 0)){ - - pGC->ops->PolyArc = miPolyArc; - pGC->ops->PolySegment = miPolySegment; - pGC->ops->PolyRectangle = miPolyRectangle; - if(pGC->lineStyle == LineSolid) - pGC->ops->Polylines = miWideLine; - else - pGC->ops->Polylines = miWideDash; - } - - if((pGC->lineWidth == 0) && (pGC->fillStyle == FillSolid)) { - - if(pGC->lineStyle == LineSolid) { - - if(infoRec->PolyRectangleThinSolid && - CHECK_PLANEMASK(pGC,infoRec->PolyRectangleThinSolidFlags) && - CHECK_ROP(pGC,infoRec->PolyRectangleThinSolidFlags) && - CHECK_ROPSRC(pGC,infoRec->PolyRectangleThinSolidFlags) && - CHECK_FG(pGC,infoRec->PolyRectangleThinSolidFlags)) { - - pGC->ops->PolyRectangle = infoRec->PolyRectangleThinSolid; - } - - if(infoRec->PolySegmentThinSolid && - CHECK_PLANEMASK(pGC,infoRec->PolySegmentThinSolidFlags) && - CHECK_ROP(pGC,infoRec->PolySegmentThinSolidFlags) && - CHECK_ROPSRC(pGC,infoRec->PolySegmentThinSolidFlags) && - CHECK_FG(pGC,infoRec->PolySegmentThinSolidFlags)) { - - pGC->ops->PolySegment = infoRec->PolySegmentThinSolid; - } - - if(infoRec->PolylinesThinSolid && - CHECK_PLANEMASK(pGC,infoRec->PolylinesThinSolidFlags) && - CHECK_ROP(pGC,infoRec->PolylinesThinSolidFlags) && - CHECK_ROPSRC(pGC,infoRec->PolylinesThinSolidFlags) && - CHECK_FG(pGC,infoRec->PolylinesThinSolidFlags)) { - - pGC->ops->Polylines = infoRec->PolylinesThinSolid; - } - } else if((pGC->lineStyle == LineOnOffDash) && pGCPriv->DashPattern){ - - if(infoRec->PolySegmentThinDashed && - !(infoRec->PolySegmentThinDashedFlags & NO_TRANSPARENCY) && - ((pGC->alu == GXcopy) || !(infoRec->PolySegmentThinDashedFlags & - TRANSPARENCY_GXCOPY_ONLY)) && - CHECK_PLANEMASK(pGC,infoRec->PolySegmentThinDashedFlags) && - CHECK_ROP(pGC,infoRec->PolySegmentThinDashedFlags) && - CHECK_ROPSRC(pGC,infoRec->PolySegmentThinDashedFlags) && - CHECK_FG(pGC,infoRec->PolySegmentThinDashedFlags)) { - - pGC->ops->PolySegment = infoRec->PolySegmentThinDashed; - } - - if(infoRec->PolylinesThinDashed && - !(infoRec->PolylinesThinDashedFlags & NO_TRANSPARENCY) && - ((pGC->alu == GXcopy) || !(infoRec->PolylinesThinDashedFlags & - TRANSPARENCY_GXCOPY_ONLY)) && - CHECK_PLANEMASK(pGC,infoRec->PolylinesThinDashedFlags) && - CHECK_ROP(pGC,infoRec->PolylinesThinDashedFlags) && - CHECK_ROPSRC(pGC,infoRec->PolylinesThinDashedFlags) && - CHECK_FG(pGC,infoRec->PolylinesThinDashedFlags)) { - - pGC->ops->Polylines = infoRec->PolylinesThinDashed; - } - - if(pGC->ops->Polylines != XAAFallbackOps.Polylines) - pGC->ops->PolyRectangle = miPolyRectangle; - - } else if(pGCPriv->DashPattern && (pGC->depth != 32)) { - /* LineDoubleDash */ - if(infoRec->PolySegmentThinDashed && - !(infoRec->PolySegmentThinDashedFlags & TRANSPARENCY_ONLY) && - CHECK_PLANEMASK(pGC,infoRec->PolySegmentThinDashedFlags) && - CHECK_ROP(pGC,infoRec->PolySegmentThinDashedFlags) && - CHECK_ROPSRC(pGC,infoRec->PolySegmentThinDashedFlags) && - CHECK_COLORS(pGC,infoRec->PolySegmentThinDashedFlags)) { - - pGC->ops->PolySegment = infoRec->PolySegmentThinDashed; - } - - if(infoRec->PolylinesThinDashed && - !(infoRec->PolylinesThinDashedFlags & TRANSPARENCY_ONLY) && - CHECK_PLANEMASK(pGC,infoRec->PolylinesThinDashedFlags) && - CHECK_ROP(pGC,infoRec->PolylinesThinDashedFlags) && - CHECK_ROPSRC(pGC,infoRec->PolylinesThinDashedFlags) && - CHECK_COLORS(pGC,infoRec->PolylinesThinDashedFlags)) { - - pGC->ops->Polylines = infoRec->PolylinesThinDashed; - } - - if(pGC->ops->Polylines != XAAFallbackOps.Polylines) - pGC->ops->PolyRectangle = miPolyRectangle; - - } - } - - if(infoRec->PolylinesWideSolid && - (pGC->lineWidth > 0) && - (pGC->fillStyle == FillSolid) && - (pGC->lineStyle == LineSolid) && - CHECK_PLANEMASK(pGC,infoRec->PolylinesWideSolidFlags) && - CHECK_ROP(pGC,infoRec->PolylinesWideSolidFlags) && - CHECK_ROPSRC(pGC,infoRec->PolylinesWideSolidFlags) && - CHECK_FG(pGC,infoRec->PolylinesWideSolidFlags)) { - - pGC->ops->Polylines = infoRec->PolylinesWideSolid; - } + XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); + XAAGCPtr pGCPriv = (XAAGCPtr) dixLookupPrivate(&pGC->devPrivates, + XAAGetGCKey()); + + if (pGC->lineStyle == LineSolid) + changes &= ~GCDashList; + if (!changes) + return; + + pGC->ops->PolySegment = XAAFallbackOps.PolySegment; + pGC->ops->Polylines = XAAFallbackOps.Polylines; + pGC->ops->PolyRectangle = XAAFallbackOps.PolyRectangle; + pGC->ops->PolyArc = XAAFallbackOps.PolyArc; + + if ((pGC->ops->FillSpans != XAAFallbackOps.FillSpans) && + (pGC->lineWidth > 0)) { + + pGC->ops->PolyArc = miPolyArc; + pGC->ops->PolySegment = miPolySegment; + pGC->ops->PolyRectangle = miPolyRectangle; + if (pGC->lineStyle == LineSolid) + pGC->ops->Polylines = miWideLine; + else + pGC->ops->Polylines = miWideDash; + } + + if ((pGC->lineWidth == 0) && (pGC->fillStyle == FillSolid)) { + + if (pGC->lineStyle == LineSolid) { + + if (infoRec->PolyRectangleThinSolid && + CHECK_PLANEMASK(pGC, infoRec->PolyRectangleThinSolidFlags) && + CHECK_ROP(pGC, infoRec->PolyRectangleThinSolidFlags) && + CHECK_ROPSRC(pGC, infoRec->PolyRectangleThinSolidFlags) && + CHECK_FG(pGC, infoRec->PolyRectangleThinSolidFlags)) { + + pGC->ops->PolyRectangle = infoRec->PolyRectangleThinSolid; + } + + if (infoRec->PolySegmentThinSolid && + CHECK_PLANEMASK(pGC, infoRec->PolySegmentThinSolidFlags) && + CHECK_ROP(pGC, infoRec->PolySegmentThinSolidFlags) && + CHECK_ROPSRC(pGC, infoRec->PolySegmentThinSolidFlags) && + CHECK_FG(pGC, infoRec->PolySegmentThinSolidFlags)) { + + pGC->ops->PolySegment = infoRec->PolySegmentThinSolid; + } + + if (infoRec->PolylinesThinSolid && + CHECK_PLANEMASK(pGC, infoRec->PolylinesThinSolidFlags) && + CHECK_ROP(pGC, infoRec->PolylinesThinSolidFlags) && + CHECK_ROPSRC(pGC, infoRec->PolylinesThinSolidFlags) && + CHECK_FG(pGC, infoRec->PolylinesThinSolidFlags)) { + + pGC->ops->Polylines = infoRec->PolylinesThinSolid; + } + } + else if ((pGC->lineStyle == LineOnOffDash) && pGCPriv->DashPattern) { + + if (infoRec->PolySegmentThinDashed && + !(infoRec->PolySegmentThinDashedFlags & NO_TRANSPARENCY) && + ((pGC->alu == GXcopy) || !(infoRec->PolySegmentThinDashedFlags & + TRANSPARENCY_GXCOPY_ONLY)) && + CHECK_PLANEMASK(pGC, infoRec->PolySegmentThinDashedFlags) && + CHECK_ROP(pGC, infoRec->PolySegmentThinDashedFlags) && + CHECK_ROPSRC(pGC, infoRec->PolySegmentThinDashedFlags) && + CHECK_FG(pGC, infoRec->PolySegmentThinDashedFlags)) { + + pGC->ops->PolySegment = infoRec->PolySegmentThinDashed; + } + + if (infoRec->PolylinesThinDashed && + !(infoRec->PolylinesThinDashedFlags & NO_TRANSPARENCY) && + ((pGC->alu == GXcopy) || !(infoRec->PolylinesThinDashedFlags & + TRANSPARENCY_GXCOPY_ONLY)) && + CHECK_PLANEMASK(pGC, infoRec->PolylinesThinDashedFlags) && + CHECK_ROP(pGC, infoRec->PolylinesThinDashedFlags) && + CHECK_ROPSRC(pGC, infoRec->PolylinesThinDashedFlags) && + CHECK_FG(pGC, infoRec->PolylinesThinDashedFlags)) { + + pGC->ops->Polylines = infoRec->PolylinesThinDashed; + } + + if (pGC->ops->Polylines != XAAFallbackOps.Polylines) + pGC->ops->PolyRectangle = miPolyRectangle; + + } + else if (pGCPriv->DashPattern && (pGC->depth != 32)) { + /* LineDoubleDash */ + if (infoRec->PolySegmentThinDashed && + !(infoRec->PolySegmentThinDashedFlags & TRANSPARENCY_ONLY) && + CHECK_PLANEMASK(pGC, infoRec->PolySegmentThinDashedFlags) && + CHECK_ROP(pGC, infoRec->PolySegmentThinDashedFlags) && + CHECK_ROPSRC(pGC, infoRec->PolySegmentThinDashedFlags) && + CHECK_COLORS(pGC, infoRec->PolySegmentThinDashedFlags)) { + + pGC->ops->PolySegment = infoRec->PolySegmentThinDashed; + } + + if (infoRec->PolylinesThinDashed && + !(infoRec->PolylinesThinDashedFlags & TRANSPARENCY_ONLY) && + CHECK_PLANEMASK(pGC, infoRec->PolylinesThinDashedFlags) && + CHECK_ROP(pGC, infoRec->PolylinesThinDashedFlags) && + CHECK_ROPSRC(pGC, infoRec->PolylinesThinDashedFlags) && + CHECK_COLORS(pGC, infoRec->PolylinesThinDashedFlags)) { + + pGC->ops->Polylines = infoRec->PolylinesThinDashed; + } + + if (pGC->ops->Polylines != XAAFallbackOps.Polylines) + pGC->ops->PolyRectangle = miPolyRectangle; + + } + } + + if (infoRec->PolylinesWideSolid && + (pGC->lineWidth > 0) && + (pGC->fillStyle == FillSolid) && + (pGC->lineStyle == LineSolid) && + CHECK_PLANEMASK(pGC, infoRec->PolylinesWideSolidFlags) && + CHECK_ROP(pGC, infoRec->PolylinesWideSolidFlags) && + CHECK_ROPSRC(pGC, infoRec->PolylinesWideSolidFlags) && + CHECK_FG(pGC, infoRec->PolylinesWideSolidFlags)) { + + pGC->ops->Polylines = infoRec->PolylinesWideSolid; + } } |