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

📄 cfbbstore.c

📁 远程桌面连接工具
💻 C
字号:
/*- * cfbbstore.c -- *	Functions required by the backing-store implementation in MI. * * Copyright (c) 1987 by the Regents of the University of California * * 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.  The University of California * makes no representations about the suitability of this * software for any purpose.  It is provided "as is" without * express or implied warranty. * * */#ifndef lintstatic char rcsid[] ="$XConsortium: cfbbstore.c,v 5.8 93/12/13 17:21:51 dpw Exp $ SPRITE (Berkeley)";#endif#include    "cfb.h"#include    "X.h"#include    "mibstore.h"#include    "regionstr.h"#include    "scrnintstr.h"#include    "pixmapstr.h"#include    "windowstr.h"/*- *----------------------------------------------------------------------- * cfbSaveAreas -- *	Function called by miSaveAreas to actually fetch the areas to be *	saved into the backing pixmap. This is very simple to do, since *	cfbDoBitblt is designed for this very thing. The region to save is *	already destination-relative and we're given the offset to the *	window origin, so we have only to create an array of points of the *	u.l. corners of the boxes in the region translated to the screen *	coordinate system and fetch the screen pixmap out of its devPrivate *	field.... * * Results: *	None. * * Side Effects: *	Data are copied from the screen into the pixmap. * *----------------------------------------------------------------------- */voidcfbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin)    PixmapPtr	  	pPixmap;  	/* Backing pixmap */    RegionPtr	  	prgnSave; 	/* Region to save (pixmap-relative) */    int	    	  	xorg;	    	/* X origin of region */    int	    	  	yorg;	    	/* Y origin of region */    WindowPtr		pWin;{    register DDXPointPtr pPt;    DDXPointPtr		pPtsInit;    register BoxPtr	pBox;    register int	i;    ScreenPtr		pScreen = pPixmap->drawable.pScreen;    PixmapPtr		pScrPix;        i = REGION_NUM_RECTS(prgnSave);    pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec));    if (!pPtsInit)	return;        pBox = REGION_RECTS(prgnSave);    pPt = pPtsInit;    while (--i >= 0) {	pPt->x = pBox->x1 + xorg;	pPt->y = pBox->y1 + yorg;	pPt++;	pBox++;    }#ifdef CFB_NEED_SCREEN_PRIVATE    pScrPix = (PixmapPtr) pScreen->devPrivates[cfbScreenPrivateIndex].ptr;#else    pScrPix = (PixmapPtr) pScreen->devPrivate;#endif    cfbDoBitbltCopy((DrawablePtr) pScrPix, (DrawablePtr)pPixmap,		    GXcopy, prgnSave, pPtsInit, ~0L);    DEALLOCATE_LOCAL (pPtsInit);}/*- *----------------------------------------------------------------------- * cfbRestoreAreas -- *	Function called by miRestoreAreas to actually fetch the areas to be *	restored from the backing pixmap. This is very simple to do, since *	cfbDoBitblt is designed for this very thing. The region to restore is *	already destination-relative and we're given the offset to the *	window origin, so we have only to create an array of points of the *	u.l. corners of the boxes in the region translated to the pixmap *	coordinate system and fetch the screen pixmap out of its devPrivate *	field.... * * Results: *	None. * * Side Effects: *	Data are copied from the pixmap into the screen. * *----------------------------------------------------------------------- */voidcfbRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin)    PixmapPtr	  	pPixmap;  	/* Backing pixmap */    RegionPtr	  	prgnRestore; 	/* Region to restore (screen-relative)*/    int	    	  	xorg;	    	/* X origin of window */    int	    	  	yorg;	    	/* Y origin of window */    WindowPtr		pWin;{    register DDXPointPtr pPt;    DDXPointPtr		pPtsInit;    register BoxPtr	pBox;    register int	i;    ScreenPtr		pScreen = pPixmap->drawable.pScreen;    PixmapPtr		pScrPix;        i = REGION_NUM_RECTS(prgnRestore);    pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i*sizeof(DDXPointRec));    if (!pPtsInit)	return;        pBox = REGION_RECTS(prgnRestore);    pPt = pPtsInit;    while (--i >= 0) {	pPt->x = pBox->x1 - xorg;	pPt->y = pBox->y1 - yorg;	pPt++;	pBox++;    }#ifdef CFB_NEED_SCREEN_PRIVATE    pScrPix = (PixmapPtr) pScreen->devPrivates[cfbScreenPrivateIndex].ptr;#else    pScrPix = (PixmapPtr) pScreen->devPrivate;#endif    cfbDoBitbltCopy((DrawablePtr)pPixmap, (DrawablePtr) pScrPix,		    GXcopy, prgnRestore, pPtsInit, ~0L);    DEALLOCATE_LOCAL (pPtsInit);}

⌨️ 快捷键说明

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