Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | 9x 9x 975x 91x 91x 884x 65x 65x 209x 209x 65x 1x 4841x 4841x 4841x 258x 193x 65x 65x 65x 4841x 11x 2x 9x 9x 4841x 108x 108x 108x 108x 1x 1x 1x 4841x 961x 961x 961x 4841x 420x 420x 420x 4841x 17x 17x 17x 17x 17x 4841x 4841x 4841x 1x | import macro from 'vtk.js/Sources/macros'; import vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray'; import { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants'; // ---------------------------------------------------------------------------- // Global methods // ---------------------------------------------------------------------------- function extractCellSizes(cellArray) { let currentIdx = 0; return cellArray.filter((value, index) => { if (index === currentIdx) { currentIdx += value + 1; return true; } return false; }); } function getNumberOfCells(cellArray) { let cellId = 0; for (let cellArrayIndex = 0; cellArrayIndex < cellArray.length; ) { cellArrayIndex += cellArray[cellArrayIndex] + 1; cellId++; } return cellId; } // ---------------------------------------------------------------------------- // Static API // ---------------------------------------------------------------------------- export const STATIC = { extractCellSizes, getNumberOfCells, }; // ---------------------------------------------------------------------------- // vtkCellArray methods // ---------------------------------------------------------------------------- function vtkCellArray(publicAPI, model) { // Set our className model.classHierarchy.push('vtkCellArray'); const superClass = { ...publicAPI }; publicAPI.getNumberOfCells = (recompute) => { if (model.numberOfCells !== undefined && !recompute) { return model.numberOfCells; } Iif (model.cellSizes) { model.numberOfCells = model.cellSizes.length; } else { model.numberOfCells = getNumberOfCells(publicAPI.getData()); } return model.numberOfCells; }; publicAPI.getCellSizes = (recompute) => { if (model.cellSizes !== undefined && !recompute) { return model.cellSizes; } model.cellSizes = extractCellSizes(publicAPI.getData()); return model.cellSizes; }; /** * When `resize()` is being used, you then MUST use `insertNextCell()`. */ publicAPI.resize = (requestedNumTuples) => { const oldNumTuples = publicAPI.getNumberOfTuples(); superClass.resize(requestedNumTuples); const newNumTuples = publicAPI.getNumberOfTuples(); if (newNumTuples < oldNumTuples) { if (newNumTuples === 0) { model.numberOfCells = 0; model.cellSizes = []; } else E{ // We do not know how many cells are left. // Set to undefined to ensure insertNextCell works correctly. model.numberOfCells = undefined; model.cellSizes = undefined; } } }; publicAPI.setData = (typedArray) => { superClass.setData(typedArray, 1); model.numberOfCells = undefined; model.cellSizes = undefined; }; publicAPI.getCell = (loc) => { let cellLoc = loc; const numberOfPoints = model.values[cellLoc++]; return model.values.subarray(cellLoc, cellLoc + numberOfPoints); }; publicAPI.insertNextCell = (cellPointIds) => { const cellId = publicAPI.getNumberOfCells(); publicAPI.insertNextTuples([cellPointIds.length, ...cellPointIds]); // By computing the number of cells earlier, we made sure that numberOfCells is defined ++model.numberOfCells; Iif (model.cellSizes != null) { model.cellSizes.push(cellPointIds.length); } return cellId; }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- function defaultValues(initialValues) { return { empty: true, numberOfComponents: 1, dataType: VtkDataTypes.UNSIGNED_INT, ...initialValues, }; } // ---------------------------------------------------------------------------- export function extend(publicAPI, model, initialValues = {}) { vtkDataArray.extend(publicAPI, model, defaultValues(initialValues)); vtkCellArray(publicAPI, model); } // ---------------------------------------------------------------------------- export const newInstance = macro.newInstance(extend, 'vtkCellArray'); // ---------------------------------------------------------------------------- export default { newInstance, extend, ...STATIC }; |