ZRef<ZDCPixmapRep> ZDCPixmapRep::Touch() { if (this->IsShared() || fRaster->IsShared() || fRaster->GetCanModify() == false) { const RasterDesc& ourRasterDesc = fRaster->GetRasterDesc(); RasterDesc newRasterDesc = ourRasterDesc; newRasterDesc.fRowBytes = sCalcRowBytes(W(fBounds), newRasterDesc.fPixvalDesc.fDepth, 4); newRasterDesc.fRowCount = H(fBounds); ZRef<ZDCPixmapRep> newRep = sCreate(newRasterDesc, sRect(WH(fBounds)), fPixelDesc); newRep->CopyFrom(sPointPOD(0,0), fRaster->GetBaseAddress(), ourRasterDesc, fPixelDesc, fBounds); return newRep; } else { // Clear any cache we might have. fCache.Clear(); } return this; }