@kitware/vtk.js 26.9.2 → 26.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import macro from '../../macros.js';
|
|
1
|
+
import macro, { vtkWarningMacro } from '../../macros.js';
|
|
2
2
|
import vtkCompositeMouseManipulator from './CompositeMouseManipulator.js';
|
|
3
3
|
|
|
4
4
|
// vtkMouseRangeManipulator methods
|
|
@@ -23,13 +23,16 @@ function vtkMouseRangeManipulator(publicAPI, model) {
|
|
|
23
23
|
// the user's cursor is from the start of the interaction, the more
|
|
24
24
|
// their movements will effect the value.
|
|
25
25
|
|
|
26
|
-
var scalingFactor = listener.exponentialScroll ? Math.pow(listener.scale, Math.log2(Math.abs(model.interactionNetDelta) + 2)) : listener.scale;
|
|
27
|
-
|
|
28
|
-
var value = oldValue + newDelta; // Compute new value based on step
|
|
26
|
+
var scalingFactor = listener.exponentialScroll ? Math.pow(listener.scale, Math.log2(Math.abs(model.interactionNetDelta) + 2)) : listener.scale; // Preserve the sign of scale (which can be used to invert the scrolling direction)
|
|
27
|
+
// after the power operation above (in case of exponentialScroll).
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
var
|
|
32
|
-
|
|
29
|
+
scalingFactor = Math.abs(scalingFactor) * Math.sign(listener.scale);
|
|
30
|
+
var newDelta = delta * scalingFactor + incrementalDelta.get(listener); // Compute new value based on step
|
|
31
|
+
// In the following line, Math.abs is required so that the floor function
|
|
32
|
+
// consistently rounds to the lowest absolute integer.
|
|
33
|
+
|
|
34
|
+
var stepsToDifference = Math.floor(Math.abs(newDelta / listener.step));
|
|
35
|
+
var value = oldValue + listener.step * stepsToDifference * Math.sign(newDelta);
|
|
33
36
|
value = Math.max(value, listener.min);
|
|
34
37
|
value = Math.min(value, listener.max);
|
|
35
38
|
|
|
@@ -97,13 +100,19 @@ function vtkMouseRangeManipulator(publicAPI, model) {
|
|
|
97
100
|
publicAPI.setScrollListener = function (min, max, step, getValue, setValue) {
|
|
98
101
|
var scale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
|
|
99
102
|
var exponentialScroll = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
103
|
+
|
|
104
|
+
if (step < 0) {
|
|
105
|
+
vtkWarningMacro('Value of step cannot be negative. If you want to invert the scrolling direction, use a negative scale value instead.');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
var stepSize = Math.abs(step);
|
|
100
109
|
var getFn = Number.isFinite(getValue) ? function () {
|
|
101
110
|
return getValue;
|
|
102
111
|
} : getValue;
|
|
103
112
|
model.scrollListener = {
|
|
104
113
|
min: min,
|
|
105
114
|
max: max,
|
|
106
|
-
step:
|
|
115
|
+
step: stepSize,
|
|
107
116
|
getValue: getFn,
|
|
108
117
|
setValue: setValue,
|
|
109
118
|
scale: scale,
|
|
@@ -633,9 +633,10 @@ function vtkRenderWindowInteractor(publicAPI, model) {
|
|
|
633
633
|
|
|
634
634
|
|
|
635
635
|
if (model.wheelTimeoutID === 0) {
|
|
636
|
-
//
|
|
637
|
-
//
|
|
638
|
-
|
|
636
|
+
// we attempt to distinguish between trackpads and mice
|
|
637
|
+
// .3 will be larger than the first trackpad event,
|
|
638
|
+
// but small enough to detect some common edge case mice
|
|
639
|
+
if (Math.abs(callData.spinY) >= 0.3) {
|
|
639
640
|
// Event is coming from mouse wheel
|
|
640
641
|
wheelCoefficient = Math.abs(callData.spinY);
|
|
641
642
|
} else {
|