8#ifndef OPENVDB_TOOLS_MASK_HAS_BEEN_INCLUDED 
    9#define OPENVDB_TOOLS_MASK_HAS_BEEN_INCLUDED 
   28template<
typename Gr
idType>
 
   29typename GridType::template ValueConverter<bool>::Type::Ptr
 
   30interiorMask(
const GridType& grid, 
const double isovalue = 0.0);
 
   37namespace mask_internal {
 
   38template<
typename Gr
idType>
 
   40    static const bool isBool = std::is_same<typename GridType::ValueType, bool>::value;
 
   41    using BoolGridType = 
typename GridType::template ValueConverter<bool>::Type;
 
   42    using BoolGridPtrType = 
typename BoolGridType::Ptr;
 
   45template<
typename Gr
idType>
 
   46inline typename std::enable_if<std::is_floating_point<typename GridType::ValueType>::value,
 
   47    typename mask_internal::Traits<GridType>::BoolGridPtrType>::type
 
   48doLevelSetInteriorMask(
const GridType& grid, 
const double isovalue)
 
   50    using GridValueT = 
typename GridType::ValueType;
 
   51    using MaskGridPtrT = 
typename mask_internal::Traits<GridType>::BoolGridPtrType;
 
   54    if (grid.getGridClass() == GRID_LEVEL_SET) {
 
   55        return tools::sdfInteriorMask(grid, 
static_cast<GridValueT
>(isovalue));
 
   57    return MaskGridPtrT{};
 
   61template<
typename Gr
idType>
 
   62inline typename std::enable_if<!std::is_floating_point<typename GridType::ValueType>::value,
 
   63    typename mask_internal::Traits<GridType>::BoolGridPtrType>::type
 
   64doLevelSetInteriorMask(
const GridType&, 
const double )
 
   66    using MaskGridPtrT = 
typename mask_internal::Traits<GridType>::BoolGridPtrType;
 
   67    return MaskGridPtrT{};
 
   70template<
typename Gr
idType>
 
   71inline typename std::enable_if<mask_internal::Traits<GridType>::isBool,
 
   72    typename mask_internal::Traits<GridType>::BoolGridPtrType>::type
 
   73doInteriorMask(
const GridType& grid, 
const double )
 
   76    return grid.deepCopy();
 
   79template<
typename Gr
idType>
 
   80inline typename std::enable_if<!(mask_internal::Traits<GridType>::isBool),
 
   81    typename mask_internal::Traits<GridType>::BoolGridPtrType>::type
 
   82doInteriorMask(
const GridType& grid, 
const double isovalue)
 
   84    using MaskGridT = 
typename mask_internal::Traits<GridType>::BoolGridType;
 
   87    if (
auto maskGridPtr = doLevelSetInteriorMask(grid, isovalue)) {
 
   92    auto maskGridPtr = MaskGridT::create(
false);
 
   93    maskGridPtr->setTransform(grid.transform().copy());
 
   94    maskGridPtr->topologyUnion(grid);
 
  103template<
typename Gr
idType>
 
  104typename GridType::template ValueConverter<bool>::Type::Ptr
 
  107    return mask_internal::doInteriorMask(grid, isovalue);
 
 
  116#ifdef OPENVDB_USE_EXPLICIT_INSTANTIATION 
  118#ifdef OPENVDB_INSTANTIATE_MASK 
  122#define _FUNCTION(TreeT) \ 
  123    Grid<TreeT>::ValueConverter<bool>::Type::Ptr interiorMask(const Grid<TreeT>&, const double) 
Miscellaneous utility methods that operate primarily or exclusively on level set grids.
Definition Exceptions.h:13
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218
#define OPENVDB_VOLUME_TREE_INSTANTIATE(Function)
Definition version.h.in:165