@kitware/vtk.js
Version:
Visualization Toolkit for the Web
120 lines (103 loc) • 3.93 kB
JavaScript
import { m as macro } from '../../macros2.js';
// ----------------------------------------------------------------------------
// vtkStringArray methods
// ----------------------------------------------------------------------------
function vtkStringArray(publicAPI, model) {
// Set our className
model.classHierarchy.push('vtkStringArray');
// 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,
empty: true
});
/* eslint-enable no-use-before-define */
publicAPI.getName = () => {
if (!model.name) {
publicAPI.setName(`vtkStringArray${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: 'string'
};
// ----------------------------------------------------------------------------
function extend(publicAPI, model, initialValues = {}) {
Object.assign(model, DEFAULT_VALUES, initialValues);
if (!model.empty && !model.values && !model.size) {
throw new TypeError('Cannot create vtkStringArray 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
vtkStringArray(publicAPI, model);
}
// ----------------------------------------------------------------------------
const newInstance = macro.newInstance(extend, 'vtkStringArray');
// ----------------------------------------------------------------------------
var vtkStringArray$1 = {
newInstance,
extend
};
export { vtkStringArray$1 as default, extend, newInstance };