@thewtex/vtk.js-esm
Version:
Visualization Toolkit for the Web
121 lines (97 loc) • 4.5 kB
JavaScript
import macro from '../../macro.js';
import vtkActor from '../../Rendering/Core/Actor.js';
import vtkHandleRepresentation from './HandleRepresentation.js';
import vtkMapper from '../../Rendering/Core/Mapper.js';
import vtkPolyData from '../../Common/DataModel/PolyData.js';
import { a as subtract, d as dot } from '../../vendor/gl-matrix/esm/vec3.js';
// vtkRectangleContextRepresentation methods
// ----------------------------------------------------------------------------
function vtkRectangleContextRepresentation(publicAPI, model) {
// Set our className
model.classHierarchy.push('vtkRectangleContextRepresentation'); // --------------------------------------------------------------------------
// Generic rendering pipeline
// --------------------------------------------------------------------------
model.mapper = vtkMapper.newInstance();
model.actor = vtkActor.newInstance();
model.mapper.setInputConnection(publicAPI.getOutputPort());
model.actor.setMapper(model.mapper);
model.actor.getProperty().setOpacity(0.2);
model.actor.getProperty().setColor(0, 1, 0);
publicAPI.addActor(model.actor); // --------------------------------------------------------------------------
publicAPI.setDrawBorder = function (draw) {
model.drawBorder = draw;
}; // --------------------------------------------------------------------------
publicAPI.setDrawFace = function (draw) {
model.drawFace = draw;
}; // --------------------------------------------------------------------------
publicAPI.setOpacity = function (opacity) {
model.actor.getProperty().setOpacity(opacity);
}; // --------------------------------------------------------------------------
publicAPI.requestData = function (inData, outData) {
if (model.deleted) {
return;
}
var list = publicAPI.getRepresentationStates(inData[0]);
var state = list[0];
var dataset = vtkPolyData.newInstance();
if (state.getVisible()) {
var point1 = state.getOrigin();
var point2 = state.getCorner();
var diagonal = [0, 0, 0];
subtract(diagonal, point2, point1);
var up = state.getUp();
var upComponent = dot(diagonal, up);
var points = new Float32Array(4 * 3);
points[0] = point1[0];
points[1] = point1[1];
points[2] = point1[2];
points[3] = point1[0] + upComponent * up[0];
points[4] = point1[1] + upComponent * up[1];
points[5] = point1[2] + upComponent * up[2];
points[6] = point2[0];
points[7] = point2[1];
points[8] = point2[2];
points[9] = point2[0] - upComponent * up[0];
points[10] = point2[1] - upComponent * up[1];
points[11] = point2[2] - upComponent * up[2];
dataset.getPoints().setData(points, 3);
if (model.drawFace) {
var polys = new Uint32Array([4, 0, 1, 2, 3]);
dataset.getPolys().setData(polys, 1);
}
if (model.drawBorder) {
var line = new Uint32Array([5, 0, 1, 2, 3, 0]);
dataset.getLines().setData(line, 1);
}
} else {
dataset.getPoints().setData([], 0);
dataset.getPolys().setData([], 0);
dataset.getLines().setData([], 0);
}
outData[0] = dataset;
};
publicAPI.getSelectedState = function (prop, compositeID) {
return model.state;
};
} // ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
var DEFAULT_VALUES = {
drawBorder: false,
drawFace: true
}; // ----------------------------------------------------------------------------
function extend(publicAPI, model) {
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
Object.assign(model, DEFAULT_VALUES, initialValues);
vtkHandleRepresentation.extend(publicAPI, model, initialValues);
macro.setGetArray(publicAPI, model, ['color'], 1);
macro.get(publicAPI, model, ['mapper', 'actor']); // Object specific methods
vtkRectangleContextRepresentation(publicAPI, model);
} // ----------------------------------------------------------------------------
var newInstance = macro.newInstance(extend, 'vtkRectangleContextRepresentation'); // ----------------------------------------------------------------------------
var vtkRectangleContextRepresentation$1 = {
newInstance: newInstance,
extend: extend
};
export default vtkRectangleContextRepresentation$1;
export { extend, newInstance };