Exemple #1
0
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;
	}