Convenience class that contains a pointer to a tree to be stolen or deep copied depending on the tag dispatch class used and a subset of methods to retrieve data from the tree.
More...
|
| | TreeToMerge ()=delete |
| |
| | TreeToMerge (TreeType &tree, Steal) |
| | Non-const pointer tree constructor for stealing data. More...
|
| |
| | TreeToMerge (typename TreeType::Ptr treePtr, Steal) |
| | Non-const shared pointer tree constructor for stealing data. More...
|
| |
| | TreeToMerge (const TreeType &tree, DeepCopy, bool initialize=true) |
| | Const tree pointer constructor for deep-copying data. As the tree is not mutable and thus cannot be pruned, a lightweight mask tree with the same topology is created that can be pruned to use as a reference. Initialization of this mask tree can optionally be disabled for delayed construction. More...
|
| |
| | TreeToMerge (TreeType &tree, DeepCopy tag, bool initialize=true) |
| | Non-const tree pointer constructor for deep-copying data. The tree is not intended to be modified so is not pruned, instead a lightweight mask tree with the same topology is created that can be pruned to use as a reference. Initialization of this mask tree can optionally be disabled for delayed construction. More...
|
| |
| void | reset (typename TreeType::Ptr treePtr, Steal) |
| | Reset the non-const tree shared pointer. This is primarily used to preserve the order of trees to merge in a container but have the data in the tree be lazily loaded or resampled. More...
|
| |
| TreeType * | treeToSteal () |
| | Return a pointer to the tree to be stolen. More...
|
| |
| const TreeType * | treeToDeepCopy () |
| | Return a pointer to the tree to be deep-copied. More...
|
| |
| const RootNodeType * | rootPtr () const |
| | Retrieve a const pointer to the root node. More...
|
| |
| template<typename NodeT > |
| const NodeT * | probeConstNode (const Coord &ijk) const |
| | Return a pointer to the node of type NodeT that contains voxel (x, y, z). If no such node exists, return nullptr. More...
|
| |
| template<typename NodeT > |
| std::unique_ptr< NodeT > | stealOrDeepCopyNode (const Coord &ijk) |
| | Return a pointer to the node of type NodeT that contains voxel (x, y, z). If the tree is non-const, steal the node and replace it with an inactive background-value tile. If the tree is const, deep-copy the node and modify the mask tree to prune the node. More...
|
| |
| template<typename NodeT > |
| void | addTile (const Coord &ijk, const ValueType &value, bool active) |
| | Add a tile containing voxel (x, y, z) at the level of NodeT, deleting the existing branch if necessary. More...
|
| |
| void | initializeMask () |
| |
| bool | hasMask () const |
| |
| MaskTreeType * | mask () |
| |
| const MaskTreeType * | mask () const |
| |
template<typename TreeT>
struct openvdb::v8_2::tools::TreeToMerge< TreeT >
Convenience class that contains a pointer to a tree to be stolen or deep copied depending on the tag dispatch class used and a subset of methods to retrieve data from the tree.
The primary purpose of this class is to be able to create an array of TreeToMerge objects that each store a tree to be stolen or a tree to be deep-copied in an arbitrary order. Certain operations such as floating-point addition are non-associative so the order in which they are merged is important for the operation to remain deterministic regardless of how the data is being extracted from the tree.
- Note
- Stealing data requires a non-const tree pointer. There is a constructor to pass in a tree shared pointer for cases where it is desirable for this class to maintain shared ownership.