@acransac/vtk.js
Version:
Visualization Toolkit for the Web
72 lines (56 loc) • 2.68 kB
JavaScript
import macro from 'vtk.js/Sources/macro';
import vtkInteractorStyleManipulator from 'vtk.js/Sources/Interaction/Style/InteractorStyleManipulator';
import vtkMouseCameraUnicamManipulator from 'vtk.js/Sources/Interaction/Manipulators/MouseCameraUnicamManipulator';
// ----------------------------------------------------------------------------
// vtkInteractorStyleUnicam methods
// ----------------------------------------------------------------------------
function vtkInteractorStyleUnicam(publicAPI, model) {
model.classHierarchy.push('vtkInteractorStyleUnicam');
model.unicamManipulator = vtkMouseCameraUnicamManipulator.newInstance({
button: 1,
});
publicAPI.addMouseManipulator(model.unicamManipulator);
publicAPI.getUseWorldUpVec = () => model.unicamManipulator.getUseWorldUpVec();
publicAPI.setUseWorldUpVec = (useWorldUpVec) => {
model.unicamManipulator.setUseWorldUpVec(useWorldUpVec);
};
publicAPI.getWorldUpVec = () => model.unicamManipulator.getWorldUpVec();
publicAPI.setWorldUpVec = (x, y, z) => {
model.unicamManipulator.setWorldUpVec(x, y, z);
};
publicAPI.getUseHardwareSelector = () =>
model.unicamManipulator.getUseHardwareSelector();
publicAPI.setUseHardwareSelector = (useHardwareSelector) => {
model.unicamManipulator.setUseHardwareSelector(useHardwareSelector);
};
publicAPI.getFocusSphereColor = () => {
model.unicamManipulator.getFocusSphereColor();
};
publicAPI.setFocusSphereColor = (r, g, b) => {
model.unicamManipulator.setFocusSphereColor(r, g, b);
};
publicAPI.getFocusSphereRadiusFactor = () =>
model.unicamManipulator.getFocusSphereRadiusFactor();
publicAPI.setFocusSphereRadiusFactor = (focusSphereRadiusFactor) => {
model.unicamManipulator.setFocusSphereRadiusFactor(focusSphereRadiusFactor);
};
}
// ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
const DEFAULT_VALUES = {};
// ----------------------------------------------------------------------------
export function extend(publicAPI, model, initialValues = {}) {
Object.assign(model, DEFAULT_VALUES, initialValues);
// Inheritance
vtkInteractorStyleManipulator.extend(publicAPI, model, initialValues);
// Object specific methods
vtkInteractorStyleUnicam(publicAPI, model);
}
// ----------------------------------------------------------------------------
export const newInstance = macro.newInstance(
extend,
'vtkInteractorStyleUnicam'
);
// ----------------------------------------------------------------------------
export default { newInstance, extend };