コード例 #1
0
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);

			}

		}

	}
コード例 #2
0
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;
}
コード例 #3
0
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;

	}