@kitware/vtk.js
Version:
Visualization Toolkit for the Web
139 lines (119 loc) • 4.96 kB
JavaScript
import { m as macro } from '../../macros2.js';
import vtk from '../../vtk.js';
import vtkActor from '../../Rendering/Core/Actor.js';
import vtkProperty from '../../Rendering/Core/Property.js';
import vtkGlyph3DMapper from '../../Rendering/Core/Glyph3DMapper.js';
import vtkDataArray from '../../Common/Core/DataArray.js';
import vtkPolyData from '../../Common/DataModel/PolyData.js';
import vtkColorTransferFunction from '../../Rendering/Core/ColorTransferFunction.js';
import vtkAbstractRepresentationProxy from '../Core/AbstractRepresentationProxy.js';
import '../../Filters/Sources/ArcSource.js';
import '../../Filters/Sources/ArrowSource.js';
import '../../Filters/Sources/CircleSource.js';
import '../../Filters/Sources/ConcentricCylinderSource.js';
import '../../Filters/Sources/ConeSource.js';
import '../../Filters/Sources/CubeSource.js';
import '../../Filters/Sources/Cursor3D.js';
import '../../Filters/Sources/CylinderSource.js';
import '../../Filters/Sources/DiskSource.js';
import '../../Filters/Sources/EllipseArcSource.js';
import '../../Filters/Sources/ImageGridSource.js';
import '../../Filters/Sources/LineSource.js';
import '../../Filters/Sources/PlaneSource.js';
import '../../Filters/Sources/PlatonicSolidSource.js';
import '../../Filters/Sources/PointSource.js';
import '../../Filters/Sources/RTAnalyticSource.js';
import '../../Filters/Sources/SLICSource.js';
import '../../Filters/Sources/SphereSource.js';
import '../../Filters/Sources/TorusSource.js';
// ----------------------------------------------------------------------------
// vtkGlyphRepresentationProxy methods
// ----------------------------------------------------------------------------
function vtkGlyphRepresentationProxy(publicAPI, model) {
// Set our className
model.classHierarchy.push('vtkGlyphRepresentationProxy');
model.property = vtkProperty.newInstance();
function processJSON(description) {
model.actors.length = 0;
// Handle colors
const lookupTable = vtkColorTransferFunction.newInstance();
lookupTable.applyColorMap({
RGBPoints: description.rgbPoints
});
// Handle glyph
model.glyph = {};
let count = description.glyph.length;
while (count--) {
const glyph = description.glyph[count];
model.glyph[glyph.id] = vtk(glyph);
}
// Handle mapping
count = description.mapping.length;
while (count--) {
const sourceDesc = description.mapping[count];
const glyph = model.glyph[sourceDesc.glyphId];
const source = vtkPolyData.newInstance();
source.getPoints().setData(Float32Array.from(sourceDesc.coordinates), 3);
if (sourceDesc.scale) {
source.getPointData().addArray(vtkDataArray.newInstance({
name: 'scaling',
values: Float32Array.from(sourceDesc.scale),
numberOfComponents: 3
}));
}
const mapper = vtkGlyph3DMapper.newInstance({
useLookupTableScalarRange: true,
lookupTable,
orient: false,
scaling: !!sourceDesc.scale,
scaleArray: 'scaling',
scaleMode: vtkGlyph3DMapper.ScaleModes.SCALE_BY_COMPONENTS
});
const actor = vtkActor.newInstance();
if (model.property) {
actor.setProperty(model.property);
}
actor.setMapper(mapper);
mapper.setInputData(source, 0);
mapper.setInputConnection(glyph.getOutputPort(), 1);
model.actors.push(actor);
}
}
model.sourceDependencies.push({
setInputData: processJSON
});
// Add actors
// model.actors.push(model.sphereActor);
// model.actors.push(model.stickActor);
// API ----------------------------------------------------------------------
publicAPI.setColorBy = () => {};
publicAPI.getColorBy = () => [];
publicAPI.listDataArrays = () => [];
}
// ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
const DEFAULT_VALUES = {};
// ----------------------------------------------------------------------------
function extend(publicAPI, model) {
let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
Object.assign(model, DEFAULT_VALUES, initialValues);
// Object methods
vtkAbstractRepresentationProxy.extend(publicAPI, model, initialValues);
// Object specific methods
vtkGlyphRepresentationProxy(publicAPI, model);
macro.proxyPropertyMapping(publicAPI, model, {
edgeVisibility: {
modelKey: 'property',
property: 'edgeVisibility'
}
});
}
// ----------------------------------------------------------------------------
const newInstance = macro.newInstance(extend, 'vtkGlyphRepresentationProxy');
// ----------------------------------------------------------------------------
var vtkGlyphRepresentationProxy$1 = {
newInstance,
extend
};
export { vtkGlyphRepresentationProxy$1 as default, extend, newInstance };