File: C:/Users/fred/anaconda3/Lib/site-packages/panel/dist/lib/models/vtk/panel_fullscreen_renwin_sync.js
import { vtkns, applyStyle } from "./util";
//------------------------//
//Custom Extended Classes
//------------------------//
const DEFAULT_VALUES = {
containerStyle: null,
controlPanelStyle: null,
listenWindowResize: true,
resizeCallback: null,
controllerVisibility: true,
synchronizerContextName: "default",
};
const STYLE_CONTROL_PANEL = {
position: "absolute",
left: "25px",
top: "25px",
backgroundColor: "white",
borderRadius: "5px",
listStyle: "none",
padding: "5px 10px",
margin: "0",
display: "block",
border: "solid 1px black",
maxWidth: "calc(100vw - 70px)",
maxHeight: "calc(100vh - 60px)",
overflow: "auto",
};
function panelFullScreenRenderWindowSynchronized(publicAPI, model) {
// Panel (modification) synchronizable renderWindow
model.renderWindow = vtkns.SynchronizableRenderWindow.newInstance({
synchronizerContext: model.synchronizerContext,
});
// OpenGlRenderWindow
model.openGLRenderWindow = vtkns.OpenGLRenderWindow.newInstance();
model.openGLRenderWindow.setContainer(model.container);
model.renderWindow.addView(model.openGLRenderWindow);
// Interactor
model.interactor = vtkns.RenderWindowInteractor.newInstance();
model.interactor.setInteractorStyle(vtkns.InteractorStyleTrackballCamera.newInstance());
model.interactor.setView(model.openGLRenderWindow);
model.interactor.initialize();
model.interactor.bindEvents(model.container);
publicAPI.getRenderer = () => model.renderWindow.getRenderers()[0];
publicAPI.removeController = () => {
const el = model.controlContainer;
if (el) {
el.parentNode.removeChild(el);
}
};
publicAPI.setControllerVisibility = (visible) => {
model.controllerVisibility = visible;
if (model.controlContainer) {
if (visible) {
model.controlContainer.style.display = "block";
}
else {
model.controlContainer.style.display = "none";
}
}
};
publicAPI.toggleControllerVisibility = () => {
publicAPI.setControllerVisibility(!model.controllerVisibility);
};
publicAPI.addController = (html) => {
model.controlContainer = document.createElement("div");
applyStyle(model.controlContainer, model.controlPanelStyle || STYLE_CONTROL_PANEL);
model.rootContainer.appendChild(model.controlContainer);
model.controlContainer.innerHTML = html;
publicAPI.setControllerVisibility(model.controllerVisibility);
model.rootContainer.addEventListener("keypress", (e) => {
if (String.fromCharCode(e.charCode) === "c") {
publicAPI.toggleControllerVisibility();
}
});
};
// Properly release GL context
publicAPI.delete = window.vtk.macro.chain(publicAPI.setContainer, model.openGLRenderWindow.delete, publicAPI.delete);
// Handle window resize
publicAPI.resize = () => {
const dims = model.container.getBoundingClientRect();
const devicePixelRatio = window.devicePixelRatio || 1;
model.openGLRenderWindow.setSize(Math.floor(dims.width * devicePixelRatio), Math.floor(dims.height * devicePixelRatio));
if (model.resizeCallback) {
model.resizeCallback(dims);
}
model.renderWindow.render();
};
publicAPI.setResizeCallback = (cb) => {
model.resizeCallback = cb;
publicAPI.resize();
};
if (model.listenWindowResize) {
window.addEventListener("resize", publicAPI.resize);
}
publicAPI.resize();
}
export function initialize_fullscreen_render() {
const FullScreenRenderWindowSynchronized = {
newInstance: window.vtk.macro.newInstance((publicAPI, model, initialValues = {}) => {
Object.assign(model, DEFAULT_VALUES, initialValues);
// Object methods
window.vtk.macro.obj(publicAPI, model);
window.vtk.macro.get(publicAPI, model, [
"renderWindow",
"openGLRenderWindow",
"interactor",
"rootContainer",
"container",
"controlContainer",
"synchronizerContext",
]);
// Object specific methods
panelFullScreenRenderWindowSynchronized(publicAPI, model);
}),
};
vtkns.FullScreenRenderWindowSynchronized = FullScreenRenderWindowSynchronized;
}
//# sourceMappingURL=panel_fullscreen_renwin_sync.js.map