UNPKG

@kitware/vtk.js

Version:

Visualization Toolkit for the Web

56 lines (47 loc) 1.73 kB
import { m as macro } from '../../../macros2.js'; import { b as vtkMath } from '../../../Common/Core/Math/index.js'; import { getPixelWorldHeightAtCoord } from '../WidgetManager.js'; // ---------------------------------------------------------------------------- function vtkOriginMixin(publicAPI, model) { const superClass = { ...publicAPI }; publicAPI.translate = (dx, dy, dz) => { const [x, y, z] = publicAPI.getOriginByReference(); publicAPI.setOrigin(x + dx, y + dy, z + dz); }; publicAPI.getOrigin = displayScaleParams => { const origin = superClass.getOrigin(); if (!model.offset) { return origin; } if (!displayScaleParams) { return vtkMath.add(origin, model.offset, origin); } const pixelWorldHeight = getPixelWorldHeightAtCoord(origin, displayScaleParams); const { rendererPixelDims } = displayScaleParams; const totalSize = Math.min(rendererPixelDims[0], rendererPixelDims[1]); return vtkMath.multiplyAccumulate(origin, model.offset, totalSize * pixelWorldHeight, origin); }; } // ---------------------------------------------------------------------------- /** * offset: optional offset that can be scaled to pixel screen space. */ const DEFAULT_VALUES = { origin: null, offset: null }; // ---------------------------------------------------------------------------- function extend(publicAPI, model, initialValues = {}) { Object.assign(model, DEFAULT_VALUES, initialValues); macro.setGetArray(publicAPI, model, ['origin', 'offset'], 3); vtkOriginMixin(publicAPI, model); } // ---------------------------------------------------------------------------- var origin = { extend }; export { origin as default, extend };