UNPKG

@kitware/vtk.js

Version:

Visualization Toolkit for the Web

105 lines (82 loc) 3.62 kB
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 };