@kitware/vtk.js
Version:
Visualization Toolkit for the Web
105 lines (82 loc) • 3.62 kB
JavaScript
import { m as macro } from '../../macros2.js';
import vtkCircleSource from '../../Filters/Sources/CircleSource.js';
import vtkGlyphRepresentation from './GlyphRepresentation.js';
import { Behavior } from './WidgetRepresentation/Constants.js';
import '../../Rendering/Core/Mapper/CoincidentTopologyHelper.js';
import { Resolve } from '../../Rendering/Core/Mapper/Static.js';
// ----------------------------------------------------------------------------
// vtkCircleContextRepresentation methods
// ----------------------------------------------------------------------------
function vtkCircleContextRepresentation(publicAPI, model) {
// Set our className
model.classHierarchy.push('vtkCircleContextRepresentation');
const superClass = {
...publicAPI
};
// --------------------------------------------------------------------------
// Generic rendering pipeline
// --------------------------------------------------------------------------
model._pipeline.actor.getProperty().setOpacity(0.2);
model._pipeline.mapper.setResolveCoincidentTopology(Resolve.PolygonOffset);
model._pipeline.mapper.setRelativeCoincidentTopologyPolygonOffsetParameters(-1, -1);
// --------------------------------------------------------------------------
publicAPI.setGlyphResolution = r => {
const res = superClass.setGlyphResolution(r);
model._pipeline.glyph.setResolution(r);
return res;
};
// --------------------------------------------------------------------------
publicAPI.setDrawBorder = draw => {
const res = superClass.setDrawBorder(draw);
model._pipeline.glyph.setLines(draw);
return res;
};
// --------------------------------------------------------------------------
publicAPI.setDrawFace = draw => {
const res = superClass.setDrawFace(draw);
model._pipeline.glyph.setFace(draw);
return res;
};
// --------------------------------------------------------------------------
publicAPI.setOpacity = opacity => {
model._pipeline.actor.getProperty().setOpacity(opacity);
};
}
// ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
function defaultValues(initialValues) {
return {
behavior: Behavior.CONTEXT,
glyphResolution: 32,
drawBorder: false,
drawFace: true,
...initialValues,
_pipeline: {
glyph: initialValues?.pipeline?.glyph ?? vtkCircleSource.newInstance({
resolution: initialValues.glyphResolution ?? 32,
radius: 1,
lines: initialValues.drawBorder ?? false,
face: initialValues.drawFace ?? true,
direction: [0, 0, 1]
}),
...initialValues?.pipeline
}
};
}
// ----------------------------------------------------------------------------
function extend(publicAPI, model, initialValues = {}) {
vtkGlyphRepresentation.extend(publicAPI, model, defaultValues(initialValues));
macro.setGet(publicAPI, model, ['glyphResolution', 'drawFace', 'drawBorder']);
macro.get(publicAPI, model._pipeline, ['glyph', 'mapper', 'actor']);
// Object specific methods
vtkCircleContextRepresentation(publicAPI, model);
}
// ----------------------------------------------------------------------------
const newInstance = macro.newInstance(extend, 'vtkCircleContextRepresentation');
// ----------------------------------------------------------------------------
var vtkCircleContextRepresentation$1 = {
newInstance,
extend
};
export { vtkCircleContextRepresentation$1 as default, extend, newInstance };