//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt for details. // // This software is distributed WITHOUT ANY WARRANTY; without even // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the above copyright notice for more information. //============================================================================ #ifndef vtk_m_cont_DataSetBuilderUniform_h #define vtk_m_cont_DataSetBuilderUniform_h #include #include namespace vtkm { namespace cont { class VTKM_CONT_EXPORT DataSetBuilderUniform { using VecType = vtkm::Vec3f; public: VTKM_CONT DataSetBuilderUniform(); //1D uniform grid template VTKM_CONT static vtkm::cont::DataSet Create(const vtkm::Id& dimension, const T& origin, const T& spacing, std::string coordNm = "coords", std::string cellNm = "cells") { return DataSetBuilderUniform::CreateDataSet( vtkm::Id3(dimension, 1, 1), VecType(static_cast(origin), 0, 0), VecType(static_cast(spacing), 1, 1), coordNm, cellNm); } VTKM_CONT static vtkm::cont::DataSet Create(const vtkm::Id& dimension, std::string coordNm = "coords", std::string cellNm = "cells"); //2D uniform grids. template VTKM_CONT static vtkm::cont::DataSet Create(const vtkm::Id2& dimensions, const vtkm::Vec& origin, const vtkm::Vec& spacing, std::string coordNm = "coords", std::string cellNm = "cells") { return DataSetBuilderUniform::CreateDataSet(vtkm::Id3(dimensions[0], dimensions[1], 1), VecType(static_cast(origin[0]), static_cast(origin[1]), 0), VecType(static_cast(spacing[0]), static_cast(spacing[1]), 1), coordNm, cellNm); } VTKM_CONT static vtkm::cont::DataSet Create(const vtkm::Id2& dimensions, std::string coordNm = "coords", std::string cellNm = "cells"); //3D uniform grids. template VTKM_CONT static vtkm::cont::DataSet Create(const vtkm::Id3& dimensions, const vtkm::Vec& origin, const vtkm::Vec& spacing, std::string coordNm = "coords", std::string cellNm = "cells") { return DataSetBuilderUniform::CreateDataSet( vtkm::Id3(dimensions[0], dimensions[1], dimensions[2]), VecType(static_cast(origin[0]), static_cast(origin[1]), static_cast(origin[2])), VecType(static_cast(spacing[0]), static_cast(spacing[1]), static_cast(spacing[2])), coordNm, cellNm); } VTKM_CONT static vtkm::cont::DataSet Create(const vtkm::Id3& dimensions, std::string coordNm = "coords", std::string cellNm = "cells"); private: VTKM_CONT static vtkm::cont::DataSet CreateDataSet(const vtkm::Id3& dimensions, const vtkm::Vec3f& origin, const vtkm::Vec3f& spacing, std::string coordNm, std::string cellNm); }; } // namespace cont } // namespace vtkm #endif //vtk_m_cont_DataSetBuilderUniform_h