------------------------------------------------------------------------------
| 199 | |
| 200 | //------------------------------------------------------------------------------ |
| 201 | void vtkFieldDataSerializer::DeSerializeToSubExtent( |
| 202 | int subext[6], int gridExtent[6], vtkFieldData* fieldData, vtkMultiProcessStream& bytestream) |
| 203 | { |
| 204 | assert("pre: sub-extent outside grid-extent" && vtkStructuredExtent::Smaller(subext, gridExtent)); |
| 205 | |
| 206 | if (fieldData == nullptr) |
| 207 | { |
| 208 | vtkGenericWarningMacro("Field data is nullptr!"); |
| 209 | return; |
| 210 | } |
| 211 | |
| 212 | int numArrays = 0; |
| 213 | bytestream >> numArrays; |
| 214 | assert("post: numArrays mismatch!" && (numArrays == fieldData->GetNumberOfArrays())); |
| 215 | |
| 216 | int ijk[3]; |
| 217 | for (int array = 0; array < numArrays; ++array) |
| 218 | { |
| 219 | vtkDataArray* dataArray = nullptr; |
| 220 | bytestream.Pop(dataArray); |
| 221 | assert("post: dataArray is nullptr!" && (dataArray != nullptr)); |
| 222 | assert("post: fieldData does not have array!" && fieldData->HasArray(dataArray->GetName())); |
| 223 | |
| 224 | vtkDataArray* targetArray = fieldData->GetArray(dataArray->GetName()); |
| 225 | assert("post: ncomp mismatch!" && |
| 226 | (dataArray->GetNumberOfComponents() == targetArray->GetNumberOfComponents())); |
| 227 | |
| 228 | for (ijk[0] = subext[0]; ijk[0] <= subext[1]; ++ijk[0]) |
| 229 | { |
| 230 | for (ijk[1] = subext[2]; ijk[1] <= subext[3]; ++ijk[1]) |
| 231 | { |
| 232 | for (ijk[2] = subext[4]; ijk[2] <= subext[5]; ++ijk[2]) |
| 233 | { |
| 234 | vtkIdType sourceIdx = vtkStructuredData::ComputePointIdForExtent(subext, ijk); |
| 235 | assert("post: sourceIdx out-of-bounds!" && (sourceIdx >= 0) && |
| 236 | (sourceIdx < dataArray->GetNumberOfTuples())); |
| 237 | |
| 238 | vtkIdType targetIdx = vtkStructuredData::ComputePointIdForExtent(gridExtent, ijk); |
| 239 | assert("post: targetIdx out-of-bounds!" && (targetIdx >= 0) && |
| 240 | (targetIdx < targetArray->GetNumberOfTuples())); |
| 241 | |
| 242 | targetArray->SetTuple(targetIdx, sourceIdx, dataArray); |
| 243 | } // END for all k |
| 244 | } // END for all j |
| 245 | } // END for all i |
| 246 | |
| 247 | dataArray->Delete(); |
| 248 | } // END for all arrays |
| 249 | } |
| 250 | |
| 251 | //------------------------------------------------------------------------------ |
| 252 | vtkDataArray* vtkFieldDataSerializer::ExtractSubExtentData( |
nothing calls this directly
no test coverage detected