@kitware/vtk.js
Version:
Visualization Toolkit for the Web
59 lines (50 loc) • 1.83 kB
JavaScript
import vtkStateBuilder from '../../Core/StateBuilder.js';
import { AXES, handleTypeFromName } from './helpers.js';
function build() {
// create our state builder
var builder = vtkStateBuilder.createBuilder(); // add image data description fields
builder.addField({
name: 'indexToWorldT',
initialValue: Array(16).fill(0)
}).addField({
name: 'worldToIndexT',
initialValue: Array(16).fill(0)
}); // make cropping planes a sub-state so we can listen to it
// separately from the rest of the widget state.
var croppingState = vtkStateBuilder.createBuilder().addField({
name: 'planes',
// index space
initialValue: [0, 1, 0, 1, 0, 1]
}).build(); // add cropping planes state to our primary state
builder.addStateFromInstance({
labels: ['croppingPlanes'],
name: 'croppingPlanes',
instance: croppingState
}); // add all handle states
// default bounds is [-1, 1] in all dimensions
for (var i = -1; i < 2; i++) {
for (var j = -1; j < 2; j++) {
for (var k = -1; k < 2; k++) {
// skip center of box
if (i !== 0 || j !== 0 || k !== 0) {
var name = AXES[i + 1] + AXES[j + 1] + AXES[k + 1];
var type = handleTypeFromName(name); // since handle states are rendered via vtkSphereHandleRepresentation,
// we can dictate the handle origin, size (scale1), color, and visibility.
builder.addStateFromMixin({
labels: ['handles', name, type],
mixins: ['name', 'origin', 'color', 'scale1', 'visible', 'manipulator'],
name: name,
initialValues: {
scale1: 30,
origin: [i, j, k],
visible: true,
name: name
}
});
}
}
}
}
return builder.build();
}
export { build as default };