openvdb/python/pyGrid.h
| 97 | |
| 98 | // openvdb/python/pyGrid.h |
| 99 | openvdb::GridBase::Ptr getGridFromPyObject( const boost::python::object &gridObj ) |
| 100 | { |
| 101 | if( !gridObj ) |
| 102 | { |
| 103 | return openvdb::GridBase::Ptr(); |
| 104 | } |
| 105 | |
| 106 | #define CONVERT_GRID_TO_BASE( GridPtrType ) \ |
| 107 | { \ |
| 108 | boost::python::extract<GridPtrType> x(gridObj); \ |
| 109 | if (x.check()) return x(); \ |
| 110 | } |
| 111 | |
| 112 | // Extract a grid pointer of one of the supported types |
| 113 | // from the input object, then cast it to a base pointer. |
| 114 | CONVERT_GRID_TO_BASE( openvdb::FloatGrid::Ptr ); |
| 115 | CONVERT_GRID_TO_BASE( openvdb::Vec3SGrid::Ptr ); |
| 116 | CONVERT_GRID_TO_BASE( openvdb::BoolGrid::Ptr ); |
| 117 | CONVERT_GRID_TO_BASE( openvdb::DoubleGrid::Ptr ); |
| 118 | CONVERT_GRID_TO_BASE( openvdb::Int32Grid::Ptr ); |
| 119 | CONVERT_GRID_TO_BASE( openvdb::Int64Grid::Ptr ); |
| 120 | CONVERT_GRID_TO_BASE( openvdb::Vec3IGrid::Ptr ); |
| 121 | CONVERT_GRID_TO_BASE( openvdb::Vec3DGrid::Ptr ); |
| 122 | |
| 123 | #undef CONVERT_GRID_TO_BASE |
| 124 | |
| 125 | throw openvdb::TypeError( className( gridObj ) + " is not a supported OpenVDB grid type" ); |
| 126 | } |
| 127 | |
| 128 | } // namespace iepyopenvdb |
| 129 |
no test coverage detected