@kitware/vtk.js
Version:
Visualization Toolkit for the Web
56 lines (47 loc) • 1.73 kB
JavaScript
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 };