MCPcopy Create free account
hub / github.com/Kitware/VTK / TransformData

Method TransformData

IO/MPIImage/vtkMPIImageReader.cxx:300–355  ·  view source on GitHub ↗

This method could be made a lot more efficient.

Source from the content-addressed store, hash-verified

298#ifdef VTK_USE_MPI_IO
299// This method could be made a lot more efficient.
300void vtkMPIImageReader::TransformData(vtkImageData* data)
301{
302 if (!this->Transform)
303 return;
304
305 vtkDataArray* fileData = data->GetPointData()->GetScalars();
306 vtkDataArray* dataData = fileData->NewInstance();
307 dataData->SetName(fileData->GetName());
308 dataData->SetNumberOfComponents(fileData->GetNumberOfComponents());
309 dataData->SetNumberOfTuples(fileData->GetNumberOfTuples());
310
311 int dataExtent[6];
312 data->GetExtent(dataExtent);
313
314 int fileExtent[6];
315 this->ComputeInverseTransformedExtent(dataExtent, fileExtent);
316
317 vtkIdType dataMinExtent[3];
318 vtkIdType fileMinExtent[3];
319 vtkIdType dataExtentSize[3];
320 vtkIdType fileExtentSize[3];
321 for (int i = 0; i < 3; i++)
322 {
323 dataMinExtent[i] = std::min(dataExtent[2 * i], dataExtent[2 * i + 1]);
324 fileMinExtent[i] = std::min(fileExtent[2 * i], fileExtent[2 * i + 1]);
325 dataExtentSize[i] = std::abs(dataExtent[2 * i + 1] - dataExtent[2 * i]) + 1;
326 fileExtentSize[i] = std::abs(fileExtent[2 * i + 1] - fileExtent[2 * i]) + 1;
327 }
328
329 for (vtkIdType file_k = 0; file_k < fileExtentSize[2]; file_k++)
330 {
331 for (vtkIdType file_j = 0; file_j < fileExtentSize[1]; file_j++)
332 {
333 for (vtkIdType file_i = 0; file_i < fileExtentSize[0]; file_i++)
334 {
335 double fileXYZ[3];
336 fileXYZ[0] = file_i + fileMinExtent[0];
337 fileXYZ[1] = file_j + fileMinExtent[1];
338 fileXYZ[2] = file_k + fileMinExtent[2];
339 double dataXYZ[3];
340 this->Transform->TransformPoint(fileXYZ, dataXYZ);
341 vtkIdType data_i = static_cast<vtkIdType>(dataXYZ[0]) - dataMinExtent[0];
342 vtkIdType data_j = static_cast<vtkIdType>(dataXYZ[1]) - dataMinExtent[1];
343 vtkIdType data_k = static_cast<vtkIdType>(dataXYZ[2]) - dataMinExtent[2];
344
345 vtkIdType fileTuple = ((file_k * fileExtentSize[1] + file_j) * fileExtentSize[0]) + file_i;
346 vtkIdType dataTuple = ((data_k * dataExtentSize[1] + data_j) * dataExtentSize[0]) + data_i;
347
348 dataData->SetTuple(dataTuple, fileTuple, fileData);
349 }
350 }
351 }
352
353 data->GetPointData()->SetScalars(dataData);
354 dataData->Delete();
355}
356#else // VTK_USE_MPI_IO
357void vtkMPIImageReader::TransformData(vtkImageData*)

Callers 1

Calls 15

SetScalarsMethod · 0.80
DeleteMethod · 0.65
minFunction · 0.50
absFunction · 0.50
GetScalarsMethod · 0.45
GetPointDataMethod · 0.45
NewInstanceMethod · 0.45
SetNameMethod · 0.45
GetNameMethod · 0.45
SetNumberOfComponentsMethod · 0.45
GetNumberOfComponentsMethod · 0.45

Tested by

no test coverage detected