Skip to content

Commit 7d9ab7d

Browse files
authored
Merge branch 'master' into volume_shadow
2 parents 01ed657 + bf000b6 commit 7d9ab7d

File tree

4 files changed

+59
-32
lines changed

4 files changed

+59
-32
lines changed

Documentation/config.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ module.exports = {
3232
plugins: [],
3333
rules: [
3434
`
35-
{ test: /\\.glsl$/i, loader: 'shader-loader' },
3635
{
3736
test: /\\.js$/,
37+
exclude: /dist\\/esm/,
3838
use: [
3939
{
40-
loader: 'babel-loader',
40+
loader: 'babel-loader?cacheDirectory',
4141
},
4242
],
4343
},
@@ -69,22 +69,16 @@ module.exports = {
6969
test: /\\.svg$/,
7070
type: 'asset/source',
7171
},
72-
{
73-
test: /\\.worker\\.js$/,
74-
use: [
75-
{
76-
loader: 'worker-loader',
77-
options: { inline: 'no-fallback' },
78-
},
79-
],
80-
},
8172
{ test: /\\.(png|jpg)$/, type: 'asset' },
8273
{ test: /\\.html$/, loader: 'html-loader' },
8374
{ test: /\\.cjson$/, loader: 'hson-loader' },
8475
{ test: /\\.hson$/, loader: 'hson-loader' },
8576
`,
8677
],
87-
alias: ["'vtk.js': `${rootPath}`,"],
78+
alias: [
79+
"'vtk.js/Sources': `${rootPath}/dist/esm`,",
80+
"'vtk.js': `${rootPath}`,",
81+
],
8882
},
8983
copy: [{ src: '../Data/*', dest: './build-tmp/public/data' }],
9084
};

Sources/Rendering/Core/RenderWindowInteractor/index.d.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ export interface IRenderWindowInteractorInitialValues {
5757
lastFrameTime?: number;
5858
wheelTimeoutID?: number;
5959
moveTimeoutID?: number;
60+
preventDefaultOnPointerDown?: boolean;
61+
preventDefaultOnPointerUp?: boolean;
6062
}
6163

6264
interface IPosition {
@@ -151,6 +153,16 @@ export interface vtkRenderWindowInteractor extends vtkObject {
151153
*/
152154
getStillUpdateRate(): number;
153155

156+
/**
157+
* @default false
158+
*/
159+
getPreventDefaultOnPointerDown(): boolean;
160+
161+
/**
162+
* @default false
163+
*/
164+
getPreventDefaultOnPointerUp(): boolean;
165+
154166
/**
155167
*
156168
* @param {IRenderWindowInteractorEvent} callData
@@ -821,6 +833,22 @@ export interface vtkRenderWindowInteractor extends vtkObject {
821833
setPicker(picker: any): boolean;
822834

823835
/**
836+
* Set whether preventDefault is called on pointer down.
837+
* @param {Boolean} preventDefault
838+
*/
839+
setPreventDefaultOnPointerDown(preventDefault: boolean): boolean;
840+
841+
/**
842+
* Set whether preventDefault is called on pointer up.
843+
*
844+
* If pointerup occurs without a preceeding pointerdown, then
845+
* this does nothing.
846+
*
847+
* @param {Boolean} preventDefault
848+
*/
849+
setPreventDefaultOnPointerUp(preventDefault: boolean): boolean;
850+
851+
/**
824852
*
825853
* @param recognizeGestures
826854
*/

Sources/Rendering/Core/RenderWindowInteractor/index.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,8 @@ const handledEvents = [
6868

6969
function preventDefault(event) {
7070
if (event.cancelable) {
71-
event.stopPropagation();
7271
event.preventDefault();
7372
}
74-
75-
return false;
7673
}
7774

7875
function pointerCacheToPositions(cache) {
@@ -211,7 +208,6 @@ function vtkRenderWindowInteractor(publicAPI, model) {
211208
publicAPI.bindEvents = (container) => {
212209
model.container = container;
213210
container.addEventListener('contextmenu', preventDefault);
214-
// container.addEventListener('click', preventDefault); // Avoid stopping event propagation
215211
container.addEventListener('wheel', publicAPI.handleWheel);
216212
container.addEventListener('DOMMouseScroll', publicAPI.handleWheel);
217213
container.addEventListener('pointerenter', publicAPI.handlePointerEnter);
@@ -244,7 +240,6 @@ function vtkRenderWindowInteractor(publicAPI, model) {
244240
publicAPI.unbindEvents = () => {
245241
const { container } = model;
246242
container.removeEventListener('contextmenu', preventDefault);
247-
// model.container.removeEventListener('click', preventDefault); // Avoid stopping event propagation
248243
container.removeEventListener('wheel', publicAPI.handleWheel);
249244
container.removeEventListener('DOMMouseScroll', publicAPI.handleWheel);
250245
container.removeEventListener('pointerenter', publicAPI.handlePointerEnter);
@@ -315,7 +310,9 @@ function vtkRenderWindowInteractor(publicAPI, model) {
315310
// ignore events from extra mouse buttons such as `back` and `forward`
316311
return;
317312
}
318-
preventDefault(event);
313+
if (model.preventDefaultOnPointerDown) {
314+
preventDefault(event);
315+
}
319316

320317
if (event.target.hasPointerCapture(event.pointerId)) {
321318
event.target.releasePointerCapture(event.pointerId);
@@ -345,7 +342,9 @@ function vtkRenderWindowInteractor(publicAPI, model) {
345342

346343
publicAPI.handlePointerUp = (event) => {
347344
if (pointerCache.has(event.pointerId)) {
348-
preventDefault(event);
345+
if (model.preventDefaultOnPointerUp) {
346+
preventDefault(event);
347+
}
349348

350349
pointerCache.delete(event.pointerId);
351350
model.container.releasePointerCapture(event.pointerId);
@@ -422,15 +421,17 @@ function vtkRenderWindowInteractor(publicAPI, model) {
422421

423422
//----------------------------------------------------------------------
424423
publicAPI.requestPointerLock = () => {
425-
const canvas = publicAPI.getView().getCanvas();
426-
canvas.requestPointerLock();
424+
if (model.container) {
425+
model.container.requestPointerLock();
426+
}
427427
};
428428

429429
//----------------------------------------------------------------------
430430
publicAPI.exitPointerLock = () => document.exitPointerLock();
431431

432432
//----------------------------------------------------------------------
433-
publicAPI.isPointerLocked = () => !!document.pointerLockElement;
433+
publicAPI.isPointerLocked = () =>
434+
!!model.container && document.pointerLockElement === model.container;
434435

435436
//----------------------------------------------------------------------
436437
publicAPI.handlePointerLockChange = () => {
@@ -1140,6 +1141,8 @@ const DEFAULT_VALUES = {
11401141
wheelTimeoutID: 0,
11411142
moveTimeoutID: 0,
11421143
lastGamepadValues: {},
1144+
preventDefaultOnPointerDown: false,
1145+
preventDefaultOnPointerUp: false,
11431146
};
11441147

11451148
// ----------------------------------------------------------------------------
@@ -1177,6 +1180,8 @@ export function extend(publicAPI, model, initialValues = {}) {
11771180
'desiredUpdateRate',
11781181
'stillUpdateRate',
11791182
'picker',
1183+
'preventDefaultOnPointerDown',
1184+
'preventDefaultOnPointerUp',
11801185
]);
11811186
macro.moveToProtected(publicAPI, model, ['view']);
11821187

Sources/Rendering/OpenGL/Texture/index.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -610,11 +610,11 @@ function vtkOpenGLTexture(publicAPI, model) {
610610
) {
611611
for (let idx = 0; idx < data.length; idx++) {
612612
if (data[idx]) {
613-
const newArray = new Float32Array(pixCount);
614-
for (let i = 0; i < pixCount; i++) {
615-
newArray[i] = data[idx][i];
616-
}
617-
pixData.push(newArray);
613+
const dataArrayToCopy =
614+
data[idx].length > pixCount
615+
? data[idx].subarray(0, pixCount)
616+
: data[idx];
617+
pixData.push(new Float32Array(dataArrayToCopy));
618618
} else {
619619
pixData.push(null);
620620
}
@@ -629,11 +629,11 @@ function vtkOpenGLTexture(publicAPI, model) {
629629
) {
630630
for (let idx = 0; idx < data.length; idx++) {
631631
if (data[idx]) {
632-
const newArray = new Uint8Array(pixCount);
633-
for (let i = 0; i < pixCount; i++) {
634-
newArray[i] = data[idx][i];
635-
}
636-
pixData.push(newArray);
632+
const dataArrayToCopy =
633+
data[idx].length > pixCount
634+
? data[idx].subarray(0, pixCount)
635+
: data[idx];
636+
pixData.push(new Uint8Array(dataArrayToCopy));
637637
} else {
638638
pixData.push(null);
639639
}

0 commit comments

Comments
 (0)