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 | 1x 1x | import macro from 'vtk.js/Sources/macros'; // ---------------------------------------------------------------------------- // vtkVariantArray methods // ---------------------------------------------------------------------------- function vtkVariantArray(publicAPI, model) { // Set our className model.classHierarchy.push('vtkVariantArray'); // Description: // Return the data component at the location specified by tupleIdx and // compIdx. publicAPI.getComponent = (tupleIdx, compIdx = 0) => model.values[tupleIdx * model.numberOfComponents + compIdx]; // Description: // Set the data component at the location specified by tupleIdx and compIdx // to value. // Note that i is less than NumberOfTuples and j is less than // NumberOfComponents. Make sure enough memory has been allocated // (use SetNumberOfTuples() and SetNumberOfComponents()). publicAPI.setComponent = (tupleIdx, compIdx, value) => { if (value !== model.values[tupleIdx * model.numberOfComponents + compIdx]) { model.values[tupleIdx * model.numberOfComponents + compIdx] = value; publicAPI.modified(); } }; publicAPI.getData = () => model.values; publicAPI.getTuple = (idx, tupleToFill = []) => { const numberOfComponents = model.numberOfComponents || 1; if (tupleToFill.length) { tupleToFill.length = numberOfComponents; } const offset = idx * numberOfComponents; for (let i = 0; i < numberOfComponents; i++) { tupleToFill[i] = model.values[offset + i]; } return tupleToFill; }; publicAPI.getTupleLocation = (idx = 1) => idx * model.numberOfComponents; publicAPI.getNumberOfComponents = () => model.numberOfComponents; publicAPI.getNumberOfValues = () => model.values.length; publicAPI.getNumberOfTuples = () => model.values.length / model.numberOfComponents; publicAPI.getDataType = () => model.dataType; /* eslint-disable no-use-before-define */ publicAPI.newClone = () => newInstance({ name: model.name, numberOfComponents: model.numberOfComponents, }); /* eslint-enable no-use-before-define */ publicAPI.getName = () => { if (!model.name) { publicAPI.modified(); model.name = `vtkVariantArray${publicAPI.getMTime()}`; } return model.name; }; publicAPI.setData = (array, numberOfComponents) => { model.values = array; model.size = array.length; if (numberOfComponents) { model.numberOfComponents = numberOfComponents; } if (model.size % model.numberOfComponents !== 0) { model.numberOfComponents = 1; } publicAPI.modified(); }; } // ---------------------------------------------------------------------------- // Object factory // ---------------------------------------------------------------------------- const DEFAULT_VALUES = { name: '', numberOfComponents: 1, size: 0, // values: null, dataType: 'JSON', }; // ---------------------------------------------------------------------------- export function extend(publicAPI, model, initialValues = {}) { Object.assign(model, DEFAULT_VALUES, initialValues); if (!model.empty && !model.values && !model.size) { throw new TypeError( 'Cannot create vtkVariantArray object without: size > 0, values' ); } if (!model.values) { model.values = []; } else if (Array.isArray(model.values)) { model.values = [...model.values]; } if (model.values) { model.size = model.values.length; } // Object methods macro.obj(publicAPI, model); macro.set(publicAPI, model, ['name']); // Object specific methods vtkVariantArray(publicAPI, model); } // ---------------------------------------------------------------------------- export const newInstance = macro.newInstance(extend, 'vtkVariantArray'); // ---------------------------------------------------------------------------- export default { newInstance, extend }; |