void dng_image::CopyArea (const dng_image &src, const dng_rect &area, uint32 srcPlane, uint32 dstPlane, uint32 planes) { if (&src == this) return; dng_tile_iterator destIter(*this, area); dng_rect destTileArea; while (destIter.GetOneTile(destTileArea)) { dng_tile_iterator srcIter(src, destTileArea); dng_rect srcTileArea; while (srcIter.GetOneTile(srcTileArea)) { dng_dirty_tile_buffer destTile(*this, srcTileArea); dng_const_tile_buffer srcTile(src, srcTileArea); destTile.CopyArea (srcTile, srcTileArea, srcPlane, dstPlane, planes); } } }
hsBool plMorphSequence::IResetShared(int iShare) { if( iShare >= fSharedMeshes.GetCount() || fSharedMeshes[iShare].fCurrDraw == nil) return false; plSharedMeshInfo& mInfo = fSharedMeshes[iShare]; // Now copy each shared mesh geometryspan into the drawable // to get it back to it's pristine condition. int i; for( i = 0; i < mInfo.fMesh->fSpans.GetCount(); i++ ) { plAccessSpan srcAcc; plAccessGeometry::Instance()->AccessSpanFromGeometrySpan(srcAcc, mInfo.fMesh->fSpans[i]); plAccessSpan dstAcc; plAccessGeometry::Instance()->OpenRW(mInfo.fCurrDraw, mInfo.fCurrIdx[i], dstAcc); plAccPosNormUVWIterator srcIter(&srcAcc.AccessVtx()); plAccPosNormUVWIterator dstIter(&dstAcc.AccessVtx()); const int numUVWs = srcAcc.AccessVtx().NumUVWs(); for( srcIter.Begin(), dstIter.Begin(); srcIter.More(); srcIter.Advance(), dstIter.Advance() ) { *dstIter.Position() = *srcIter.Position(); *dstIter.Normal() = *srcIter.Normal(); int j; for( j = 0; j < numUVWs; j++ ) *dstIter.UVW(j) = *srcIter.UVW(j); } } return true; }
bool dng_image::EqualArea (const dng_image &src, const dng_rect &area, uint32 plane, uint32 planes) const { if (&src == this) return true; dng_tile_iterator destIter (*this, area); dng_rect destTileArea; while (destIter.GetOneTile (destTileArea)) { dng_tile_iterator srcIter (src, destTileArea); dng_rect srcTileArea; while (srcIter.GetOneTile (srcTileArea)) { dng_const_tile_buffer destTile (*this, srcTileArea); dng_const_tile_buffer srcTile (src , srcTileArea); if (!destTile.EqualArea (srcTile, srcTileArea, plane, planes)) { return false; } } } return true; }