⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfbgc.c

📁 远程桌面连接工具
💻 C
📖 第 1 页 / 共 2 页
字号:
	case GCCapStyle:	    break;	case GCFillStyle:	    new_text = TRUE;	    new_fillspans = TRUE;	    new_line = TRUE;	    new_fillarea = TRUE;	    break;	case GCFillRule:	    break;	case GCTile:	    new_fillspans = TRUE;	    new_fillarea = TRUE;	    break;	case GCStipple:	    if (pGC->stipple)	    {		int width = pGC->stipple->drawable.width;		PixmapPtr nstipple;		if ((width <= PGSZ) && !(width & (width - 1)) &&		    (nstipple = cfbCopyPixmap(pGC->stipple)))		{		    cfbPadPixmap(nstipple);		    (*pGC->pScreen->DestroyPixmap)(pGC->stipple);		    pGC->stipple = nstipple;		}	    }	    new_fillspans = TRUE;	    new_fillarea = TRUE;	    break;	case GCTileStipXOrigin:	    new_rotate = TRUE;	    break;	case GCTileStipYOrigin:	    new_rotate = TRUE;	    break;	case GCFont:	    new_text = TRUE;	    break;	case GCSubwindowMode:	    break;	case GCGraphicsExposures:	    break;	case GCClipXOrigin:	    break;	case GCClipYOrigin:	    break;	case GCClipMask:	    break;	case GCDashOffset:	    break;	case GCDashList:	    break;	case GCArcMode:	    break;	default:	    break;	}    }    /*     * If the drawable has changed,  ensure suitable     * entries are in the proc vector.      */    if (pDrawable->serialNumber != (pGC->serialNumber & (DRAWABLE_SERIAL_BITS))) {	new_fillspans = TRUE;	/* deal with FillSpans later */    }    if (new_rotate || new_fillspans)    {	Bool new_pix = FALSE;	xrot = pGC->patOrg.x + pDrawable->x;	yrot = pGC->patOrg.y + pDrawable->y;	switch (pGC->fillStyle)	{	case FillTiled:	    if (!pGC->tileIsPixel)	    {		int width = pGC->tile.pixmap->drawable.width * PSZ;		if ((width <= PGSZ) && !(width & (width - 1)))		{		    cfbCopyRotatePixmap(pGC->tile.pixmap,					&devPriv->pRotatedPixmap,					xrot, yrot);		    new_pix = TRUE;		}	    }	    break;#ifdef FOUR_BIT_CODE	case FillStippled:	case FillOpaqueStippled:	    {		int width = pGC->stipple->drawable.width;		if ((width <= PGSZ) && !(width & (width - 1)))		{		    mfbCopyRotatePixmap(pGC->stipple,					&devPriv->pRotatedPixmap, xrot, yrot);		    new_pix = TRUE;		}	    }	    break;#endif	}	if (!new_pix && devPriv->pRotatedPixmap)	{	    (*pGC->pScreen->DestroyPixmap)(devPriv->pRotatedPixmap);	    devPriv->pRotatedPixmap = (PixmapPtr) NULL;	}    }    if (new_rrop)    {	int old_rrop;	old_rrop = devPriv->rop;	devPriv->rop = cfbReduceRasterOp (pGC->alu, pGC->fgPixel,					   pGC->planemask,					   &devPriv->and, &devPriv->xor);	if (old_rrop == devPriv->rop)	    new_rrop = FALSE;	else	{#ifdef PIXEL_ADDR	    new_line = TRUE;#endif#ifdef WriteBitGroup	    new_text = TRUE;#endif	    new_fillspans = TRUE;	    new_fillarea = TRUE;	}    }    if (new_rrop || new_fillspans || new_text || new_fillarea || new_line)    {	GCOps	*newops;	if (newops = cfbMatchCommon (pGC, devPriv)) 	{	    if (pGC->ops->devPrivate.val)		miDestroyGCOps (pGC->ops);	    pGC->ops = newops;	    new_rrop = new_line = new_fillspans = new_text = new_fillarea = 0;	} 	else 	{	    if (!pGC->ops->devPrivate.val)	    {		pGC->ops = miCreateGCOps (pGC->ops);		pGC->ops->devPrivate.val = 1;	    }	}    }    /* deal with the changes we've collected */    if (new_line)    {	pGC->ops->FillPolygon = miFillPolygon;#ifdef NO_ONE_RECT	if (pGC->fillStyle == FillSolid)	{	    switch (devPriv->rop) {	    case GXcopy:		pGC->ops->FillPolygon = cfbFillPoly1RectCopy;		break;	    default:		pGC->ops->FillPolygon = cfbFillPoly1RectGeneral;		break;	    }	}#else	if (devPriv->oneRect && pGC->fillStyle == FillSolid)	{	    switch (devPriv->rop) {	    case GXcopy:		pGC->ops->FillPolygon = cfbFillPoly1RectCopy;		break;	    default:		pGC->ops->FillPolygon = cfbFillPoly1RectGeneral;		break;	    }	}#endif	if (pGC->lineWidth == 0)	{#ifdef PIXEL_ADDR	    if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid))	    {		switch (devPriv->rop)		{		case GXxor:		    pGC->ops->PolyArc = cfbZeroPolyArcSS8Xor;		    break;		case GXcopy:		    pGC->ops->PolyArc = cfbZeroPolyArcSS8Copy;		    break;		default:		    pGC->ops->PolyArc = cfbZeroPolyArcSS8General;		    break;		}	    }	    else#endif		pGC->ops->PolyArc = miZeroPolyArc;	}	else	    pGC->ops->PolyArc = miPolyArc;	pGC->ops->PolySegment = miPolySegment;	switch (pGC->lineStyle)	{	case LineSolid:	    if(pGC->lineWidth == 0)	    {		if (pGC->fillStyle == FillSolid)		{#if defined(PIXEL_ADDR) && !defined(NO_ONE_RECT)		    if (devPriv->oneRect &&			((pDrawable->x >= pGC->pScreen->width - 32768) &&			 (pDrawable->y >= pGC->pScreen->height - 32768)))		    {			pGC->ops->Polylines = cfb8LineSS1Rect;			pGC->ops->PolySegment = cfb8SegmentSS1Rect;		    } else#endif#ifdef NO_ONE_RECT		    {			pGC->ops->Polylines = cfb8LineSS1Rect;			pGC->ops->PolySegment = cfb8SegmentSS1Rect;		    }#else		    {		    	pGC->ops->Polylines = cfbLineSS;		    	pGC->ops->PolySegment = cfbSegmentSS;		    }#endif		} 		else		    pGC->ops->Polylines = miZeroLine;	    }	    else		pGC->ops->Polylines = miWideLine;	    break;	case LineOnOffDash:	case LineDoubleDash:	    if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid)	    {		pGC->ops->Polylines = cfbLineSD;		pGC->ops->PolySegment = cfbSegmentSD;	    } else		pGC->ops->Polylines = miWideDash;	    break;	}    }    if (new_text && (pGC->font))    {        if (FONTMAXBOUNDS(pGC->font,rightSideBearing) -            FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 ||	    FONTMINBOUNDS(pGC->font,characterWidth) < 0)        {            pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;            pGC->ops->ImageGlyphBlt = miImageGlyphBlt;        }        else        {#ifdef WriteBitGroup	    if (pGC->fillStyle == FillSolid)	    {		if (devPriv->rop == GXcopy)		    pGC->ops->PolyGlyphBlt = cfbPolyGlyphBlt8;		else#ifdef FOUR_BIT_CODE		    pGC->ops->PolyGlyphBlt = cfbPolyGlyphRop8;#else		    pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;#endif	    }	    else#endif		pGC->ops->PolyGlyphBlt = miPolyGlyphBlt;            /* special case ImageGlyphBlt for terminal emulator fonts */#if !defined(WriteBitGroup) || PSZ == 8	    if (TERMINALFONT(pGC->font) &&		(pGC->planemask & PMSK) == PMSK#ifdef FOUR_BIT_CODE		&& FONTMAXBOUNDS(pGC->font,characterWidth) >= PGSZB#endif		)	    {		pGC->ops->ImageGlyphBlt = useTEGlyphBlt;	    }            else#endif	    {#ifdef WriteBitGroup		if (devPriv->rop == GXcopy &&		    pGC->fillStyle == FillSolid &&		    (pGC->planemask & PMSK) == PMSK)		    pGC->ops->ImageGlyphBlt = cfbImageGlyphBlt8;		else#endif		    pGC->ops->ImageGlyphBlt = miImageGlyphBlt;	    }        }    }        if (new_fillspans) {	switch (pGC->fillStyle) {	case FillSolid:	    switch (devPriv->rop) {	    case GXcopy:		pGC->ops->FillSpans = cfbSolidSpansCopy;		break;	    case GXxor:		pGC->ops->FillSpans = cfbSolidSpansXor;		break;	    default:		pGC->ops->FillSpans = cfbSolidSpansGeneral;		break;	    }	    break;	case FillTiled:	    if (devPriv->pRotatedPixmap)	    {		if (pGC->alu == GXcopy && (pGC->planemask & PMSK) == PMSK)		    pGC->ops->FillSpans = cfbTile32FSCopy;		else		    pGC->ops->FillSpans = cfbTile32FSGeneral;	    }	    else		pGC->ops->FillSpans = cfbUnnaturalTileFS;	    break;	case FillStippled:#ifdef FOUR_BIT_CODE	    if (devPriv->pRotatedPixmap)		pGC->ops->FillSpans = cfb8Stipple32FS;	    else#endif		pGC->ops->FillSpans = cfbUnnaturalStippleFS;	    break;	case FillOpaqueStippled:#ifdef FOUR_BIT_CODE	    if (devPriv->pRotatedPixmap)		pGC->ops->FillSpans = cfb8OpaqueStipple32FS;	    else#endif		pGC->ops->FillSpans = cfbUnnaturalStippleFS;	    break;	default:	    FatalError("cfbValidateGC: illegal fillStyle\n");	}    } /* end of new_fillspans */    if (new_fillarea) {#ifndef FOUR_BIT_CODE	pGC->ops->PolyFillRect = miPolyFillRect;	if (pGC->fillStyle == FillSolid || pGC->fillStyle == FillTiled)	{	    pGC->ops->PolyFillRect = cfbPolyFillRect;	}#endif#ifdef FOUR_BIT_CODE	pGC->ops->PushPixels = mfbPushPixels;	if (pGC->fillStyle == FillSolid && devPriv->rop == GXcopy)	    pGC->ops->PushPixels = cfbPushPixels8;#endif	pGC->ops->PolyFillArc = miPolyFillArc;	if (pGC->fillStyle == FillSolid)	{	    switch (devPriv->rop)	    {	    case GXcopy:		pGC->ops->PolyFillArc = cfbPolyFillArcSolidCopy;		break;	    default:		pGC->ops->PolyFillArc = cfbPolyFillArcSolidGeneral;		break;	    }	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -