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

Function vtkDataSetAttributesCopyValues

Common/DataModel/vtkDataSetAttributes.cxx:499–533  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

497// Handle vtkAbstractArrays that aren't vtkDataArrays.
498template <class iterT>
499void vtkDataSetAttributesCopyValues(iterT* destIter, const int* outExt, vtkIdType outIncs[3],
500 iterT* srcIter, const int* inExt, vtkIdType inIncs[3])
501{
502 int data_type_size = srcIter->GetArray()->GetDataTypeSize();
503 vtkIdType rowLength = outIncs[1];
504 unsigned char* inPtr;
505 unsigned char* outPtr;
506 unsigned char* inZPtr;
507 unsigned char* outZPtr;
508
509 // Get the starting input pointer.
510 inZPtr = static_cast<unsigned char*>(srcIter->GetArray()->GetVoidPointer(0));
511 // Shift to the start of the subextent.
512 inZPtr += (outExt[0] - inExt[0]) * inIncs[0] * data_type_size +
513 (outExt[2] - inExt[2]) * inIncs[1] * data_type_size +
514 (outExt[4] - inExt[4]) * inIncs[2] * data_type_size;
515
516 // Get output pointer.
517 outZPtr = static_cast<unsigned char*>(destIter->GetArray()->GetVoidPointer(0));
518
519 // Loop over z axis.
520 for (int zIdx = outExt[4]; zIdx <= outExt[5]; ++zIdx)
521 {
522 inPtr = inZPtr;
523 outPtr = outZPtr;
524 for (int yIdx = outExt[2]; yIdx <= outExt[3]; ++yIdx)
525 {
526 memcpy(outPtr, inPtr, rowLength * data_type_size);
527 inPtr += inIncs[1] * data_type_size;
528 outPtr += outIncs[1] * data_type_size;
529 }
530 inZPtr += inIncs[2] * data_type_size;
531 outZPtr += outIncs[2] * data_type_size;
532 }
533}
534
535//------------------------------------------------------------------------------
536// Specialize for vtkStringArray.

Callers 1

CopyStructuredDataMethod · 0.85

Calls 4

GetDataTypeSizeMethod · 0.45
GetArrayMethod · 0.45
GetVoidPointerMethod · 0.45
GetValueMethod · 0.45

Tested by

no test coverage detected