static RegionPtr cwCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int w, int h, int dstx, int dsty, unsigned long plane) { int odstx, odsty; RegionPtr exposed = NULL; SETUP_BACKING_DST(pDst, pGC); SETUP_BACKING_SRC(pSrc, pGC); PROLOGUE(pGC); odstx = dstx; odsty = dsty; CW_OFFSET_XY_DST(dstx, dsty); CW_OFFSET_XY_SRC(srcx, srcy); exposed = (*pBackingGC->ops->CopyPlane)(pBackingSrc, pBackingDst, pBackingGC, srcx, srcy, w, h, dstx, dsty, plane); if (exposed != NULL) REGION_TRANSLATE(pDst->pScreen, exposed, odstx - dstx, odsty - dsty); EPILOGUE(pGC); return exposed; }
static void cwGetImage(DrawablePtr pSrc, int x, int y, int w, int h, unsigned int format, unsigned long planemask, char *pdstLine) { ScreenPtr pScreen = pSrc->pScreen; DrawablePtr pBackingDrawable; int src_off_x, src_off_y; SCREEN_PROLOGUE(pScreen, GetImage); pBackingDrawable = cwGetBackingDrawable(pSrc, &src_off_x, &src_off_y); CW_OFFSET_XY_SRC(x, y); (*pScreen->GetImage)(pBackingDrawable, x, y, w, h, format, planemask, pdstLine); SCREEN_EPILOGUE(pScreen, GetImage, cwGetImage); }
static void cwGetSpans(DrawablePtr pSrc, int wMax, DDXPointPtr ppt, int *pwidth, int nspans, char *pdstStart) { ScreenPtr pScreen = pSrc->pScreen; DrawablePtr pBackingDrawable; int i; int src_off_x, src_off_y; SCREEN_PROLOGUE(pScreen, GetSpans); pBackingDrawable = cwGetBackingDrawable(pSrc, &src_off_x, &src_off_y); for (i = 0; i < nspans; i++) CW_OFFSET_XY_SRC(ppt[i].x, ppt[i].y); (*pScreen->GetSpans)(pBackingDrawable, wMax, ppt, pwidth, nspans, pdstStart); SCREEN_EPILOGUE(pScreen, GetSpans, cwGetSpans); }