PropertyManager: Added copy_to method.
git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@1176 fdac6126-5c0c-442c-9429-916003d36597
This commit is contained in:
@@ -57,7 +57,7 @@ namespace OpenMesh {
|
|||||||
*
|
*
|
||||||
* \code
|
* \code
|
||||||
* TriMesh mesh;
|
* TriMesh mesh;
|
||||||
* PropertyManager<VPropHandleT<bool>, MeshT> visited(mesh, "visited.plugin-example.i8.informatik.rwth-aachen.de");
|
* PropertyManager<VPropHandleT<bool>, TriMesh> visited(mesh, "visited.plugin-example.i8.informatik.rwth-aachen.de");
|
||||||
*
|
*
|
||||||
* for (TriMesh::VertexIter vh_it = mesh.begin(); ... ; ...) {
|
* for (TriMesh::VertexIter vh_it = mesh.begin(); ... ; ...) {
|
||||||
* if (!visited[*vh_it]) {
|
* if (!visited[*vh_it]) {
|
||||||
@@ -320,6 +320,40 @@ class PropertyManager {
|
|||||||
(*this)[*begin] = value;
|
(*this)[*begin] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conveniently transfer the values managed by one property manager
|
||||||
|
* onto the values managed by a different property manager.
|
||||||
|
*
|
||||||
|
* @param begin Start iterator. Needs to dereference to HandleType. Will
|
||||||
|
* be used with this property manager.
|
||||||
|
* @param end End iterator. (Exclusive.) Will be used with this property
|
||||||
|
* manager.
|
||||||
|
* @param dst_propmanager The destination property manager.
|
||||||
|
* @param dst_begin Start iterator. Needs to dereference to the
|
||||||
|
* HandleType of dst_propmanager. Will be used with dst_propmanager.
|
||||||
|
* @param dst_end End iterator. (Exclusive.)
|
||||||
|
* Will be used with dst_propmanager. Used to double check the bounds.
|
||||||
|
*/
|
||||||
|
template<typename HandleTypeIterator, typename PROPTYPE_2,
|
||||||
|
typename MeshT_2, typename HandleTypeIterator_2>
|
||||||
|
void copy_to(HandleTypeIterator begin, HandleTypeIterator end,
|
||||||
|
PropertyManager<PROPTYPE_2, MeshT_2> &dst_propmanager,
|
||||||
|
HandleTypeIterator_2 dst_begin, HandleTypeIterator_2 dst_end) const {
|
||||||
|
|
||||||
|
for (; begin != end && dst_begin != dst_end; ++begin, ++dst_begin) {
|
||||||
|
dst_propmanager[dst_begin] = (*this)[*begin];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename RangeType, typename PROPTYPE_2,
|
||||||
|
typename MeshT_2, typename RangeType_2>
|
||||||
|
void copy_to(RangeType range,
|
||||||
|
PropertyManager<PROPTYPE_2, MeshT_2> &dst_propmanager,
|
||||||
|
RangeType_2 dst_range) const {
|
||||||
|
copy_to(range.begin(), range.end(), dst_propmanager,
|
||||||
|
dst_range.begin(), dst_range.end());
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void deleteProperty() {
|
void deleteProperty() {
|
||||||
if (!retain_)
|
if (!retain_)
|
||||||
|
|||||||
Reference in New Issue
Block a user