31 #ifndef OPENVDB_UTIL_UTIL_HAS_BEEN_INCLUDED
32 #define OPENVDB_UTIL_UTIL_HAS_BEEN_INCLUDED
34 #include <openvdb/Types.h>
35 #include <openvdb/tree/Tree.h>
36 #include <openvdb/tools/ValueTransformer.h>
58 ijk[0] = int(std::floor(voxelCoord[0]));
59 ijk[1] = int(std::floor(voxelCoord[1]));
60 ijk[2] = int(std::floor(voxelCoord[2]));
70 template<
class TreeType1,
class TreeType2>
76 inline void operator()(
const typename TreeType1::LeafIter& lIter)
const {
78 typename TreeType1::LeafNodeType::ValueOnIter vIter = lIter.getLeaf()->beginValueOn();
79 for ( ; vIter; ++vIter) {
80 if (!otherValueAccessor.
isValueOn(vIter.getCoord())) vIter.setValueOff();
85 const TreeType2* mOtherTree;
91 template<
class TreeType1,
class TreeType2>
97 inline void operator()(
const typename TreeType1::LeafIter& lIter)
const {
99 typename TreeType1::LeafNodeType::ValueOnIter vIter = lIter.getLeaf()->beginValueOn();
100 for ( ; vIter; ++vIter) {
101 if (otherValueAccessor.
isValueOn(vIter.getCoord())) vIter.setValueOff();
106 const TreeType2* mOtherTree;
115 template<
class TreeType1,
class TreeType2>
116 inline typename TreeType1::template ValueConverter<bool>::Type::Ptr
119 typedef typename TreeType1::template ValueConverter<bool>::Type BoolTreeType;
121 typename BoolTreeType::Ptr topologyTree(
new BoolTreeType(
127 topologyTree->pruneInactive();
135 template<
class TreeType1,
class TreeType2>
136 inline typename TreeType1::template ValueConverter<bool>::Type::Ptr
139 typedef typename TreeType1::template ValueConverter<bool>::Type BoolTreeType;
141 typename BoolTreeType::Ptr topologyTree(
new BoolTreeType(
147 topologyTree->pruneInactive();
155 #endif // OPENVDB_UTIL_UTIL_HAS_BEEN_INCLUDED