//============================================================================ // 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_filter_ImageConnectivity_hxx #define vtk_m_filter_ImageConnectivity_hxx #include #include #include namespace vtkm { namespace filter { VTKM_CONT ImageConnectivity::ImageConnectivity() { this->SetOutputFieldName("component"); } template inline VTKM_CONT vtkm::cont::DataSet ImageConnectivity::DoExecute( const vtkm::cont::DataSet& input, const vtkm::cont::ArrayHandle& field, const vtkm::filter::FieldMetadata& fieldMetadata, const vtkm::filter::PolicyBase& policy) { if (fieldMetadata.GetAssociation() != vtkm::cont::Field::Association::POINTS) { throw vtkm::cont::ErrorBadValue("Active field for ImageConnectivity must be a cell field."); } vtkm::cont::ArrayHandle component; vtkm::worklet::connectivity::ImageConnectivity().Run( vtkm::filter::ApplyPolicy(input.GetCellSet(this->GetActiveCellSetIndex()), policy), field, component); auto result = internal::CreateResult(input, component, this->GetOutputFieldName(), vtkm::cont::Field::Association::POINTS, fieldMetadata.GetCellSetName()); return result; } } } #endif //vtk_m_filter_ImageConnectivity_hxx