| 58 | //------------------------------------------------------------------------------ |
| 59 | template <class T> |
| 60 | void vtkImageGridSourceExecute( |
| 61 | vtkImageGridSource* self, vtkImageData* data, T* outPtr, int outExt[6], int id) |
| 62 | { |
| 63 | int idxX, idxY, idxZ; |
| 64 | int xval, yval, zval; |
| 65 | vtkIdType outIncX, outIncY, outIncZ; |
| 66 | unsigned long count = 0; |
| 67 | unsigned long target; |
| 68 | |
| 69 | int gridSpacing[3], gridOrigin[3]; |
| 70 | self->GetGridSpacing(gridSpacing); |
| 71 | self->GetGridOrigin(gridOrigin); |
| 72 | |
| 73 | T fillValue = T(self->GetFillValue()); |
| 74 | T lineValue = T(self->GetLineValue()); |
| 75 | |
| 76 | // Get increments to march through data |
| 77 | data->GetContinuousIncrements(outExt, outIncX, outIncY, outIncZ); |
| 78 | |
| 79 | target = |
| 80 | static_cast<unsigned long>((outExt[5] - outExt[4] + 1) * (outExt[3] - outExt[2] + 1) / 50.0); |
| 81 | target++; |
| 82 | |
| 83 | // Loop through output pixel |
| 84 | for (idxZ = outExt[4]; idxZ <= outExt[5]; idxZ++) |
| 85 | { |
| 86 | if (gridSpacing[2]) |
| 87 | { |
| 88 | zval = (idxZ % gridSpacing[2] == gridOrigin[2]); |
| 89 | } |
| 90 | else |
| 91 | { |
| 92 | zval = 0; |
| 93 | } |
| 94 | for (idxY = outExt[2]; !self->GetAbortExecute() && idxY <= outExt[3]; idxY++) |
| 95 | { |
| 96 | if (gridSpacing[1]) |
| 97 | { |
| 98 | yval = (idxY % gridSpacing[1] == gridOrigin[1]); |
| 99 | } |
| 100 | else |
| 101 | { |
| 102 | yval = 0; |
| 103 | } |
| 104 | if (id == 0) |
| 105 | { |
| 106 | if (!(count % target)) |
| 107 | { |
| 108 | self->UpdateProgress(count / (50.0 * target)); |
| 109 | } |
| 110 | count++; |
| 111 | } |
| 112 | |
| 113 | if (gridSpacing[0]) |
| 114 | { |
| 115 | for (idxX = outExt[0]; idxX <= outExt[1]; idxX++) |
| 116 | { |
| 117 | xval = (idxX % gridSpacing[0] == gridOrigin[0]); |
no test coverage detected