| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | /// @file test/integration/CompareGrids.h | ||
| 5 | /// | ||
| 6 | /// @authors Francisco Gochez, Nick Avramoussis | ||
| 7 | /// | ||
| 8 | /// @brief Functions for comparing entire VDB grids and generating | ||
| 9 | /// reports on their differences | ||
| 10 | /// | ||
| 11 | |||
| 12 | #ifndef OPENVDB_POINTS_UNITTEST_COMPARE_GRIDS_INCLUDED | ||
| 13 | #define OPENVDB_POINTS_UNITTEST_COMPARE_GRIDS_INCLUDED | ||
| 14 | |||
| 15 | #include <openvdb/openvdb.h> | ||
| 16 | #include <openvdb/points/PointDataGrid.h> | ||
| 17 | #include <openvdb/tree/LeafManager.h> | ||
| 18 | #include <openvdb/tools/Prune.h> | ||
| 19 | |||
| 20 | namespace unittest_util | ||
| 21 | { | ||
| 22 | |||
| 23 | |||
| 24 | struct ComparisonSettings | ||
| 25 | { | ||
| 26 | bool mCheckTransforms = true; // Check grid transforms | ||
| 27 | bool mCheckTopologyStructure = true; // Checks node (voxel/leaf/tile) layout | ||
| 28 | bool mCheckActiveStates = true; // Checks voxel active states match | ||
| 29 | bool mCheckBufferValues = true; // Checks voxel buffer values match | ||
| 30 | |||
| 31 | bool mCheckDescriptors = true; // Check points leaf descriptors | ||
| 32 | bool mCheckArrayValues = true; // Checks attribute array sizes and values | ||
| 33 | bool mCheckArrayFlags = true; // Checks attribute array flags | ||
| 34 | }; | ||
| 35 | |||
| 36 | /// @brief The results collected from compareGrids() | ||
| 37 | /// | ||
| 38 | struct ComparisonResult | ||
| 39 | { | ||
| 40 | 5383 | ComparisonResult(std::ostream& os = std::cout) | |
| 41 | 5383 | : mOs(os) | |
| 42 | , mDifferingTopology(openvdb::MaskGrid::create()) | ||
| 43 | 10766 | , mDifferingValues(openvdb::MaskGrid::create()) {} | |
| 44 | |||
| 45 | std::ostream& mOs; | ||
| 46 | openvdb::MaskGrid::Ptr mDifferingTopology; // Always empty if mCheckActiveStates is false | ||
| 47 | openvdb::MaskGrid::Ptr mDifferingValues; // Always empty if mCheckBufferValues is false | ||
| 48 | // or if mCheckBufferValues and mCheckArrayValues | ||
| 49 | // is false for point data grids | ||
| 50 | }; | ||
| 51 | |||
| 52 | template <typename GridType> | ||
| 53 | bool compareGrids(ComparisonResult& resultData, | ||
| 54 | const GridType& firstGrid, | ||
| 55 | const GridType& secondGrid, | ||
| 56 | const ComparisonSettings& settings, | ||
| 57 | const openvdb::MaskGrid::ConstPtr maskGrid, | ||
| 58 | const typename GridType::ValueType tolerance = | ||
| 59 | openvdb::zeroVal<typename GridType::ValueType>()); | ||
| 60 | |||
| 61 | bool compareUntypedGrids(ComparisonResult& resultData, | ||
| 62 | const openvdb::GridBase& firstGrid, | ||
| 63 | const openvdb::GridBase& secondGrid, | ||
| 64 | const ComparisonSettings& settings, | ||
| 65 | const openvdb::MaskGrid::ConstPtr maskGrid); | ||
| 66 | |||
| 67 | } // namespace unittest_util | ||
| 68 | |||
| 69 | #endif // OPENVDB_POINTS_UNITTEST_COMPARE_GRIDS_INCLUDED | ||
| 70 | |||
| 71 |