@@ -33,6 +33,7 @@ class ComputeDistanceMapImpl
3333 void operator ()() const
3434 {
3535 using DataArrayType = DataArray<T>;
36+ using DataStoreType = AbstractDataStore<T>;
3637
3738 const auto & selectedImageGeom = m_DataStructure.getDataRefAs <ImageGeom>(m_InputValues.InputImageGeometry );
3839
@@ -65,9 +66,21 @@ class ComputeDistanceMapImpl
6566
6667 const auto & featureIdsStore = m_DataStructure.getDataAs <Int32Array>(m_InputValues.FeatureIdsArrayPath )->getDataStoreRef ();
6768
68- auto * gbManhattanDistancesStore = m_DataStructure.template getDataAs <DataArrayType>(m_InputValues.GBDistancesArrayName )->getDataStore ();
69- auto * tjManhattanDistancesStore = m_DataStructure.template getDataAs <DataArrayType>(m_InputValues.TJDistancesArrayName )->getDataStore ();
70- auto * qpManhattanDistancesStore = m_DataStructure.template getDataAs <DataArrayType>(m_InputValues.QPDistancesArrayName )->getDataStore ();
69+ DataStoreType* gbManhattanDistancesStore = nullptr ;
70+ if (m_InputValues.DoBoundaries )
71+ {
72+ gbManhattanDistancesStore = m_DataStructure.template getDataAs <DataArrayType>(m_InputValues.GBDistancesArrayName )->getDataStore ();
73+ }
74+ DataStoreType* tjManhattanDistancesStore = nullptr ;
75+ if (m_InputValues.DoTripleLines )
76+ {
77+ tjManhattanDistancesStore = m_DataStructure.template getDataAs <DataArrayType>(m_InputValues.TJDistancesArrayName )->getDataStore ();
78+ }
79+ DataStoreType* qpManhattanDistancesStore = nullptr ;
80+ if (m_InputValues.DoQuadPoints )
81+ {
82+ qpManhattanDistancesStore = m_DataStructure.template getDataAs <DataArrayType>(m_InputValues.QPDistancesArrayName )->getDataStore ();
83+ }
7184
7285 auto * nearestNeighborsStore = m_DataStructure.getDataAs <Int32Array>(m_InputValues.NearestNeighborsArrayName )->getDataStore ();
7386
@@ -82,15 +95,15 @@ class ComputeDistanceMapImpl
8295 {
8396 voxel_NearestNeighbor[a] = -1 ;
8497 }
85- if (m_MapType == ComputeEuclideanDistMap::MapType::FeatureBoundary)
98+ if (m_InputValues. DoBoundaries && m_MapType == ComputeEuclideanDistMap::MapType::FeatureBoundary)
8699 {
87100 voxel_Distance[a] = static_cast <double >((*gbManhattanDistancesStore)[a]);
88101 }
89- else if (m_MapType == ComputeEuclideanDistMap::MapType::TripleJunction)
102+ else if (m_InputValues. DoTripleLines && m_MapType == ComputeEuclideanDistMap::MapType::TripleJunction)
90103 {
91104 voxel_Distance[a] = static_cast <double >((*tjManhattanDistancesStore)[a]);
92105 }
93- else if (m_MapType == ComputeEuclideanDistMap::MapType::QuadPoint)
106+ else if (m_InputValues. DoQuadPoints && m_MapType == ComputeEuclideanDistMap::MapType::QuadPoint)
94107 {
95108 voxel_Distance[a] = static_cast <double >((*qpManhattanDistancesStore)[a]);
96109 }
@@ -212,15 +225,15 @@ class ComputeDistanceMapImpl
212225 for (size_t a = 0 ; a < totalPoints; ++a)
213226 {
214227 (*nearestNeighborsStore)[a * 3 + static_cast <uint32_t >(m_MapType)] = voxel_NearestNeighbor[a];
215- if (m_MapType == ComputeEuclideanDistMap::MapType::FeatureBoundary)
228+ if (m_InputValues. DoBoundaries && m_MapType == ComputeEuclideanDistMap::MapType::FeatureBoundary)
216229 {
217230 (*gbManhattanDistancesStore)[a] = static_cast <T>(voxel_Distance[a]);
218231 }
219- else if (m_MapType == ComputeEuclideanDistMap::MapType::TripleJunction)
232+ else if (m_InputValues. DoTripleLines && m_MapType == ComputeEuclideanDistMap::MapType::TripleJunction)
220233 {
221234 (*tjManhattanDistancesStore)[a] = static_cast <T>(voxel_Distance[a]);
222235 }
223- else if (m_MapType == ComputeEuclideanDistMap::MapType::QuadPoint)
236+ else if (m_InputValues. DoQuadPoints && m_MapType == ComputeEuclideanDistMap::MapType::QuadPoint)
224237 {
225238 (*qpManhattanDistancesStore)[a] = static_cast <T>(voxel_Distance[a]);
226239 }
@@ -247,25 +260,29 @@ template <typename T>
247260void findDistanceMap (DataStructure& dataStructure, const ComputeEuclideanDistMapInputValues* inputValues)
248261{
249262 using DataArrayType = DataArray<T>;
263+ using DataStoreType = AbstractDataStore<T>;
250264
251265 const auto & featureIdsStore = dataStructure.getDataRefAs <Int32Array>(inputValues->FeatureIdsArrayPath ).getDataStoreRef ();
252266 size_t totalPoints = featureIdsStore.getNumberOfTuples ();
253267
254- auto * gbManhattanDistancesStore = dataStructure. template getDataAs <DataArrayType>(inputValues-> GBDistancesArrayName )-> getDataStore () ;
255- if (gbManhattanDistancesStore != nullptr )
268+ DataStoreType * gbManhattanDistancesStore = nullptr ;
269+ if (inputValues-> DoBoundaries )
256270 {
271+ gbManhattanDistancesStore = dataStructure.template getDataAs <DataArrayType>(inputValues->GBDistancesArrayName )->getDataStore ();
257272 gbManhattanDistancesStore->fill (static_cast <T>(-1 ));
258273 }
259274
260- auto * tjManhattanDistancesStore = dataStructure. template getDataAs <DataArrayType>(inputValues-> TJDistancesArrayName )-> getDataStore () ;
261- if (tjManhattanDistancesStore != nullptr )
275+ DataStoreType * tjManhattanDistancesStore = nullptr ;
276+ if (inputValues-> DoTripleLines )
262277 {
278+ tjManhattanDistancesStore = dataStructure.template getDataAs <DataArrayType>(inputValues->TJDistancesArrayName )->getDataStore ();
263279 tjManhattanDistancesStore->fill (static_cast <T>(-1 ));
264280 }
265281
266- auto * qpManhattanDistancesStore = dataStructure. template getDataAs <DataArrayType>(inputValues-> QPDistancesArrayName )-> getDataStore () ;
267- if (qpManhattanDistancesStore != nullptr )
282+ DataStoreType * qpManhattanDistancesStore = nullptr ;
283+ if (inputValues-> DoQuadPoints )
268284 {
285+ qpManhattanDistancesStore = dataStructure.template getDataAs <DataArrayType>(inputValues->QPDistancesArrayName )->getDataStore ();
269286 qpManhattanDistancesStore->fill (static_cast <T>(-1 ));
270287 }
271288
0 commit comments