@kitware/vtk.js 24.7.1 → 24.8.0
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.
- package/Widgets/Core/StateBuilder/manipulatorMixin.js +15 -15
- package/Widgets/Manipulators/AbstractManipulator.d.ts +221 -0
- package/Widgets/Manipulators/AbstractManipulator.js +57 -0
- package/Widgets/Manipulators/LineManipulator.d.ts +8 -74
- package/Widgets/Manipulators/LineManipulator.js +13 -10
- package/Widgets/Manipulators/PlaneManipulator.d.ts +8 -74
- package/Widgets/Manipulators/PlaneManipulator.js +12 -9
- package/Widgets/Manipulators/TrackballManipulator.d.ts +8 -44
- package/Widgets/Manipulators/TrackballManipulator.js +13 -10
- package/Widgets/Widgets3D/AngleWidget/behavior.js +7 -4
- package/Widgets/Widgets3D/AngleWidget/state.js +2 -2
- package/Widgets/Widgets3D/AngleWidget.js +19 -2
- package/Widgets/Widgets3D/DistanceWidget/behavior.js +7 -2
- package/Widgets/Widgets3D/DistanceWidget/state.js +2 -2
- package/Widgets/Widgets3D/DistanceWidget.js +19 -2
- package/Widgets/Widgets3D/EllipseWidget.js +4 -3
- package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +3 -4
- package/Widgets/Widgets3D/ImageCroppingWidget.js +42 -13
- package/Widgets/Widgets3D/ImplicitPlaneWidget.js +5 -5
- package/Widgets/Widgets3D/LabelWidget/behavior.js +6 -2
- package/Widgets/Widgets3D/LabelWidget/state.js +2 -2
- package/Widgets/Widgets3D/LabelWidget.js +18 -3
- package/Widgets/Widgets3D/LineWidget/behavior.js +10 -3
- package/Widgets/Widgets3D/LineWidget/state.js +1 -1
- package/Widgets/Widgets3D/LineWidget.js +18 -1
- package/Widgets/Widgets3D/PaintWidget/behavior.js +12 -9
- package/Widgets/Widgets3D/PaintWidget.js +24 -8
- package/Widgets/Widgets3D/PolyLineWidget/behavior.js +11 -4
- package/Widgets/Widgets3D/PolyLineWidget/state.js +2 -2
- package/Widgets/Widgets3D/PolyLineWidget.js +21 -2
- package/Widgets/Widgets3D/RectangleWidget.js +6 -5
- package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +4 -4
- package/Widgets/Widgets3D/ShapeWidget/behavior.js +9 -5
- package/Widgets/Widgets3D/ShapeWidget.js +12 -2
- package/Widgets/Widgets3D/SphereWidget/behavior.js +4 -3
- package/Widgets/Widgets3D/SphereWidget.js +23 -2
- package/Widgets/Widgets3D/SplineWidget/behavior.js +7 -3
- package/Widgets/Widgets3D/SplineWidget/state.js +2 -2
- package/Widgets/Widgets3D/SplineWidget.js +21 -2
- package/index.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
1
2
|
import { f as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
|
|
2
3
|
import macro from '../../macros.js';
|
|
3
4
|
import generateState from './LineWidget/state.js';
|
|
@@ -11,11 +12,17 @@ import { Behavior } from '../Representations/WidgetRepresentation/Constants.js';
|
|
|
11
12
|
import { ViewTypes } from '../Core/WidgetManager/Constants.js';
|
|
12
13
|
import { getPoint, updateTextPosition } from './LineWidget/helpers.js';
|
|
13
14
|
|
|
15
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
+
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
14
18
|
// Factory
|
|
15
19
|
// ----------------------------------------------------------------------------
|
|
16
20
|
|
|
17
21
|
function vtkLineWidget(publicAPI, model) {
|
|
18
22
|
model.classHierarchy.push('vtkLineWidget');
|
|
23
|
+
|
|
24
|
+
var superClass = _objectSpread({}, publicAPI);
|
|
25
|
+
|
|
19
26
|
model.widgetState = generateState();
|
|
20
27
|
model.behavior = widgetBehavior; // --- Widget Requirement ---------------------------------------------------
|
|
21
28
|
|
|
@@ -135,6 +142,13 @@ function vtkLineWidget(publicAPI, model) {
|
|
|
135
142
|
var p1 = getPoint(0, model.widgetState);
|
|
136
143
|
var p2 = getPoint(1, model.widgetState);
|
|
137
144
|
return p1 && p2 ? Math.sqrt(distance2BetweenPoints(p1, p2)) : 0;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
publicAPI.setManipulator = function (manipulator) {
|
|
148
|
+
superClass.setManipulator(manipulator);
|
|
149
|
+
model.widgetState.getMoveHandle().setManipulator(manipulator);
|
|
150
|
+
model.widgetState.getHandle1().setManipulator(manipulator);
|
|
151
|
+
model.widgetState.getHandle2().setManipulator(manipulator);
|
|
138
152
|
}; // --------------------------------------------------------------------------
|
|
139
153
|
// initialization
|
|
140
154
|
// --------------------------------------------------------------------------
|
|
@@ -152,11 +166,14 @@ function vtkLineWidget(publicAPI, model) {
|
|
|
152
166
|
updateTextPosition(model);
|
|
153
167
|
}); // Default manipulator
|
|
154
168
|
|
|
155
|
-
model.manipulator
|
|
169
|
+
publicAPI.setManipulator(model.manipulator || vtkPlanePointManipulator.newInstance({
|
|
170
|
+
useCameraNormal: true
|
|
171
|
+
}));
|
|
156
172
|
} // ----------------------------------------------------------------------------
|
|
157
173
|
|
|
158
174
|
|
|
159
175
|
var DEFAULT_VALUES = {
|
|
176
|
+
// manipulator: null,
|
|
160
177
|
isDragging: false
|
|
161
178
|
}; // ----------------------------------------------------------------------------
|
|
162
179
|
|
|
@@ -32,8 +32,12 @@ function widgetBehavior(publicAPI, model) {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
publicAPI.handleEvent = function (callData) {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
var _model$activeState$ge, _model$activeState, _model$activeState$ge2;
|
|
36
|
+
|
|
37
|
+
var manipulator = (_model$activeState$ge = (_model$activeState = model.activeState) === null || _model$activeState === void 0 ? void 0 : (_model$activeState$ge2 = _model$activeState.getManipulator) === null || _model$activeState$ge2 === void 0 ? void 0 : _model$activeState$ge2.call(_model$activeState)) !== null && _model$activeState$ge !== void 0 ? _model$activeState$ge : model.manipulator;
|
|
38
|
+
|
|
39
|
+
if (manipulator && model.activeState && model.activeState.getActive()) {
|
|
40
|
+
var _model$activeState2, _model$activeState3, _model$activeState4;
|
|
37
41
|
|
|
38
42
|
var normal = model._camera.getDirectionOfProjection();
|
|
39
43
|
|
|
@@ -42,21 +46,20 @@ function widgetBehavior(publicAPI, model) {
|
|
|
42
46
|
var right = [];
|
|
43
47
|
vec3.cross(right, up, normal);
|
|
44
48
|
|
|
45
|
-
(_model$
|
|
49
|
+
(_model$activeState2 = model.activeState).setUp.apply(_model$activeState2, _toConsumableArray(up));
|
|
46
50
|
|
|
47
|
-
(_model$
|
|
51
|
+
(_model$activeState3 = model.activeState).setRight.apply(_model$activeState3, right);
|
|
48
52
|
|
|
49
|
-
(_model$
|
|
53
|
+
(_model$activeState4 = model.activeState).setDirection.apply(_model$activeState4, _toConsumableArray(normal));
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
var worldCoords = model.manipulator.handleEvent(callData, model._apiSpecificRenderWindow);
|
|
55
|
+
var worldCoords = manipulator.handleEvent(callData, model._apiSpecificRenderWindow);
|
|
53
56
|
|
|
54
57
|
if (worldCoords.length) {
|
|
55
|
-
var _model$widgetState, _model$
|
|
58
|
+
var _model$widgetState, _model$activeState5;
|
|
56
59
|
|
|
57
60
|
(_model$widgetState = model.widgetState).setTrueOrigin.apply(_model$widgetState, _toConsumableArray(worldCoords));
|
|
58
61
|
|
|
59
|
-
(_model$
|
|
62
|
+
(_model$activeState5 = model.activeState).setOrigin.apply(_model$activeState5, _toConsumableArray(worldCoords));
|
|
60
63
|
|
|
61
64
|
if (model.painting) {
|
|
62
65
|
var trailCircle = model.widgetState.addTrail();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
1
2
|
import macro from '../../macros.js';
|
|
2
3
|
import vtkAbstractWidgetFactory from '../Core/AbstractWidgetFactory.js';
|
|
3
4
|
import vtkCircleContextRepresentation from '../Representations/CircleContextRepresentation.js';
|
|
@@ -7,11 +8,17 @@ import widgetBehavior from './PaintWidget/behavior.js';
|
|
|
7
8
|
import generateState from './PaintWidget/state.js';
|
|
8
9
|
import { ViewTypes } from '../Core/WidgetManager/Constants.js';
|
|
9
10
|
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
12
|
+
|
|
13
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
14
|
// Factory
|
|
11
15
|
// ----------------------------------------------------------------------------
|
|
12
16
|
|
|
13
17
|
function vtkPaintWidget(publicAPI, model) {
|
|
14
|
-
model.classHierarchy.push('vtkPaintWidget');
|
|
18
|
+
model.classHierarchy.push('vtkPaintWidget');
|
|
19
|
+
|
|
20
|
+
var superClass = _objectSpread({}, publicAPI); // --- Widget Requirement ---------------------------------------------------
|
|
21
|
+
|
|
15
22
|
|
|
16
23
|
model.behavior = widgetBehavior;
|
|
17
24
|
model.widgetState = generateState(model.radius);
|
|
@@ -33,26 +40,35 @@ function vtkPaintWidget(publicAPI, model) {
|
|
|
33
40
|
labels: ['handle']
|
|
34
41
|
}];
|
|
35
42
|
}
|
|
36
|
-
}; // ---
|
|
43
|
+
}; // --- Public methods -------------------------------------------------------
|
|
37
44
|
|
|
38
45
|
|
|
39
|
-
|
|
46
|
+
publicAPI.setManipulator = function (manipulator) {
|
|
47
|
+
superClass.setManipulator(manipulator);
|
|
48
|
+
model.widgetState.getHandle().setManipulator(manipulator);
|
|
49
|
+
}; // override
|
|
40
50
|
|
|
41
|
-
model.manipulator = vtkPlanePointManipulator.newInstance();
|
|
42
|
-
handle.setManipulator(model.manipulator); // override
|
|
43
51
|
|
|
44
52
|
var superSetRadius = publicAPI.setRadius;
|
|
45
53
|
|
|
46
54
|
publicAPI.setRadius = function (r) {
|
|
47
55
|
if (superSetRadius(r)) {
|
|
48
|
-
|
|
56
|
+
model.widgetState.getHandle().setScale1(r);
|
|
49
57
|
}
|
|
50
|
-
};
|
|
58
|
+
}; // --------------------------------------------------------------------------
|
|
59
|
+
// initialization
|
|
60
|
+
// --------------------------------------------------------------------------
|
|
61
|
+
// Default manipulator
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
publicAPI.setManipulator(model.manipulator || vtkPlanePointManipulator.newInstance({
|
|
65
|
+
useCameraNormal: true
|
|
66
|
+
}));
|
|
51
67
|
} // ----------------------------------------------------------------------------
|
|
52
68
|
|
|
53
69
|
|
|
54
70
|
var DEFAULT_VALUES = {
|
|
55
|
-
manipulator: null,
|
|
71
|
+
// manipulator: null,
|
|
56
72
|
radius: 1,
|
|
57
73
|
painting: false,
|
|
58
74
|
color: [1]
|
|
@@ -19,9 +19,15 @@ function widgetBehavior(publicAPI, model) {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function updateMoveHandle(callData) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var
|
|
22
|
+
var _model$activeState$ge, _model$activeState, _model$activeState$ge2;
|
|
23
|
+
|
|
24
|
+
var manipulator = (_model$activeState$ge = (_model$activeState = model.activeState) === null || _model$activeState === void 0 ? void 0 : (_model$activeState$ge2 = _model$activeState.getManipulator) === null || _model$activeState$ge2 === void 0 ? void 0 : _model$activeState$ge2.call(_model$activeState)) !== null && _model$activeState$ge !== void 0 ? _model$activeState$ge : model.manipulator;
|
|
25
|
+
|
|
26
|
+
if (!manipulator) {
|
|
27
|
+
return macro.VOID;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var worldCoords = manipulator.handleEvent(callData, model._apiSpecificRenderWindow);
|
|
25
31
|
|
|
26
32
|
if (worldCoords.length && (model.activeState === model.widgetState.getMoveHandle() || isDragging)) {
|
|
27
33
|
model.activeState.setOrigin(worldCoords);
|
|
@@ -72,6 +78,7 @@ function widgetBehavior(publicAPI, model) {
|
|
|
72
78
|
newHandle.setOrigin.apply(newHandle, _toConsumableArray(moveHandle.getOrigin()));
|
|
73
79
|
newHandle.setColor(moveHandle.getColor());
|
|
74
80
|
newHandle.setScale1(moveHandle.getScale1());
|
|
81
|
+
newHandle.setManipulator(model.manipulator);
|
|
75
82
|
} else {
|
|
76
83
|
isDragging = true;
|
|
77
84
|
|
|
@@ -88,7 +95,7 @@ function widgetBehavior(publicAPI, model) {
|
|
|
88
95
|
|
|
89
96
|
|
|
90
97
|
publicAPI.handleMouseMove = function (callData) {
|
|
91
|
-
if (model.pickable && model.dragable && model.
|
|
98
|
+
if (model.pickable && model.dragable && model.activeState && model.activeState.getActive() && !ignoreKey(callData)) {
|
|
92
99
|
if (updateMoveHandle(callData) === macro.EVENT_ABORT) {
|
|
93
100
|
return macro.EVENT_ABORT;
|
|
94
101
|
}
|
|
@@ -3,7 +3,7 @@ import vtkStateBuilder from '../../Core/StateBuilder.js';
|
|
|
3
3
|
function generateState() {
|
|
4
4
|
return vtkStateBuilder.createBuilder().addStateFromMixin({
|
|
5
5
|
labels: ['moveHandle'],
|
|
6
|
-
mixins: ['origin', 'color', 'scale1', 'visible'],
|
|
6
|
+
mixins: ['origin', 'color', 'scale1', 'visible', 'manipulator'],
|
|
7
7
|
name: 'moveHandle',
|
|
8
8
|
initialValues: {
|
|
9
9
|
// when scaleInPixels=true, the handles have 30px height
|
|
@@ -12,7 +12,7 @@ function generateState() {
|
|
|
12
12
|
}
|
|
13
13
|
}).addDynamicMixinState({
|
|
14
14
|
labels: ['handles'],
|
|
15
|
-
mixins: ['origin', 'color', 'scale1', 'visible'],
|
|
15
|
+
mixins: ['origin', 'color', 'scale1', 'visible', 'manipulator'],
|
|
16
16
|
name: 'handle',
|
|
17
17
|
initialValues: {
|
|
18
18
|
scale1: 30
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
1
2
|
import macro from '../../macros.js';
|
|
2
3
|
import vtkAbstractWidgetFactory from '../Core/AbstractWidgetFactory.js';
|
|
3
4
|
import vtkPlanePointManipulator from '../Manipulators/PlaneManipulator.js';
|
|
@@ -8,11 +9,17 @@ import widgetBehavior from './PolyLineWidget/behavior.js';
|
|
|
8
9
|
import generateState from './PolyLineWidget/state.js';
|
|
9
10
|
import { ViewTypes } from '../Core/WidgetManager/Constants.js';
|
|
10
11
|
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
11
15
|
// Factory
|
|
12
16
|
// ----------------------------------------------------------------------------
|
|
13
17
|
|
|
14
18
|
function vtkPolyLineWidget(publicAPI, model) {
|
|
15
|
-
model.classHierarchy.push('vtkPolyLineWidget');
|
|
19
|
+
model.classHierarchy.push('vtkPolyLineWidget');
|
|
20
|
+
|
|
21
|
+
var superClass = _objectSpread({}, publicAPI); // --- Widget Requirement ---------------------------------------------------
|
|
22
|
+
|
|
16
23
|
|
|
17
24
|
model.methodsToLink = ['activeColor', 'activeScaleFactor', 'closePolyLine', 'defaultScale', 'glyphResolution', 'lineThickness', 'useActiveColor', 'scaleInPixels'];
|
|
18
25
|
model.behavior = widgetBehavior;
|
|
@@ -51,6 +58,15 @@ function vtkPolyLineWidget(publicAPI, model) {
|
|
|
51
58
|
labels: ['handles', 'moveHandle']
|
|
52
59
|
}];
|
|
53
60
|
}
|
|
61
|
+
}; // --- Public methods -------------------------------------------------------
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
publicAPI.setManipulator = function (manipulator) {
|
|
65
|
+
superClass.setManipulator(manipulator);
|
|
66
|
+
model.widgetState.getMoveHandle().setManipulator(manipulator);
|
|
67
|
+
model.widgetState.getHandleList().forEach(function (handle) {
|
|
68
|
+
handle.setManipulator(manipulator);
|
|
69
|
+
});
|
|
54
70
|
}; // --------------------------------------------------------------------------
|
|
55
71
|
// initialization
|
|
56
72
|
// --------------------------------------------------------------------------
|
|
@@ -61,7 +77,10 @@ function vtkPolyLineWidget(publicAPI, model) {
|
|
|
61
77
|
model.widgetState.getMoveHandle().setOrigin(center);
|
|
62
78
|
}); // Default manipulator
|
|
63
79
|
|
|
64
|
-
model.manipulator
|
|
80
|
+
publicAPI.setManipulator(model.manipulator || vtkPlanePointManipulator.newInstance({
|
|
81
|
+
useCameraFocalPoint: true,
|
|
82
|
+
useCameraNormal: true
|
|
83
|
+
}));
|
|
65
84
|
} // ----------------------------------------------------------------------------
|
|
66
85
|
|
|
67
86
|
|
|
@@ -50,15 +50,16 @@ function vtkRectangleWidget(publicAPI, model) {
|
|
|
50
50
|
}; // --------------------------------------------------------------------------
|
|
51
51
|
// initialization
|
|
52
52
|
// --------------------------------------------------------------------------
|
|
53
|
-
// Default manipulator
|
|
54
53
|
|
|
55
54
|
|
|
56
|
-
model.manipulator = vtkPlanePointManipulator.newInstance();
|
|
57
55
|
model.widgetState = generateState();
|
|
56
|
+
model.manipulator = vtkPlanePointManipulator.newInstance({
|
|
57
|
+
useCameraNormal: true
|
|
58
|
+
});
|
|
58
59
|
} // ----------------------------------------------------------------------------
|
|
59
60
|
|
|
60
61
|
|
|
61
|
-
function defaultValues(
|
|
62
|
+
function defaultValues(initialValues) {
|
|
62
63
|
var _None;
|
|
63
64
|
|
|
64
65
|
return _objectSpread({
|
|
@@ -67,14 +68,14 @@ function defaultValues(initalValues) {
|
|
|
67
68
|
Shift: _defineProperty({}, BehaviorCategory.RATIO, ShapeBehavior[BehaviorCategory.RATIO].FIXED),
|
|
68
69
|
Control: _defineProperty({}, BehaviorCategory.POINTS, ShapeBehavior[BehaviorCategory.POINTS].CENTER_TO_CORNER)
|
|
69
70
|
}
|
|
70
|
-
},
|
|
71
|
+
}, initialValues);
|
|
71
72
|
} // ----------------------------------------------------------------------------
|
|
72
73
|
|
|
73
74
|
|
|
74
75
|
function extend(publicAPI, model) {
|
|
75
76
|
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
76
77
|
vtkShapeWidget.extend(publicAPI, model, defaultValues(initialValues));
|
|
77
|
-
macro.setGet(publicAPI, model, ['
|
|
78
|
+
macro.setGet(publicAPI, model, ['widgetState']);
|
|
78
79
|
vtkRectangleWidget(publicAPI, model);
|
|
79
80
|
} // ----------------------------------------------------------------------------
|
|
80
81
|
|
|
@@ -63,8 +63,8 @@ function widgetBehavior(publicAPI, model) {
|
|
|
63
63
|
isDragging = true;
|
|
64
64
|
var viewType = model.widgetState.getActiveViewType();
|
|
65
65
|
var currentPlaneNormal = model.widgetState.getPlanes()[viewType].normal;
|
|
66
|
-
model.planeManipulator.
|
|
67
|
-
model.planeManipulator.
|
|
66
|
+
model.planeManipulator.setWidgetOrigin(model.widgetState.getCenter());
|
|
67
|
+
model.planeManipulator.setWidgetNormal(currentPlaneNormal);
|
|
68
68
|
publicAPI.startInteraction();
|
|
69
69
|
} else if (model.widgetState.getScrollingMethod() === ScrollingMethods.LEFT_MOUSE_BUTTON) {
|
|
70
70
|
publicAPI.startScrolling(callData.position);
|
|
@@ -215,7 +215,7 @@ function widgetBehavior(publicAPI, model) {
|
|
|
215
215
|
var dot$1 = dot(currentLineVector, otherLineVector); // lines are colinear, translate along perpendicular axis from current line
|
|
216
216
|
|
|
217
217
|
if (dot$1 === 1 || dot$1 === -1) {
|
|
218
|
-
cross(currentLineVector, model.planeManipulator.
|
|
218
|
+
cross(currentLineVector, model.planeManipulator.getWidgetNormal(), axisTranslation);
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
var closestPoint = [];
|
|
@@ -249,7 +249,7 @@ function widgetBehavior(publicAPI, model) {
|
|
|
249
249
|
|
|
250
250
|
publicAPI[InteractionMethodsName.RotateLine] = function (calldata) {
|
|
251
251
|
var activeLine = model.widgetState.getActiveLineState();
|
|
252
|
-
var planeNormal = model.planeManipulator.
|
|
252
|
+
var planeNormal = model.planeManipulator.getWidgetNormal();
|
|
253
253
|
var worldCoords = model.planeManipulator.handleEvent(calldata, model._apiSpecificRenderWindow);
|
|
254
254
|
var center = model.widgetState.getCenter();
|
|
255
255
|
var previousLineDirection = subtract(activeLine.getPoint1(), activeLine.getPoint2(), []);
|
|
@@ -241,8 +241,9 @@ function widgetBehavior(publicAPI, model) {
|
|
|
241
241
|
var _model$_apiSpecificRe, _model$_apiSpecificRe2, _model$_apiSpecificRe5;
|
|
242
242
|
|
|
243
243
|
var worldMargin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
244
|
-
var viewPlaneOrigin =
|
|
245
|
-
|
|
244
|
+
var viewPlaneOrigin = vtkBoundingBox.getCenter(worldBounds);
|
|
245
|
+
|
|
246
|
+
var viewPlaneNormal = model._renderer.getActiveCamera().getDirectionOfProjection();
|
|
246
247
|
|
|
247
248
|
var viewUp = model._renderer.getActiveCamera().getViewUp();
|
|
248
249
|
|
|
@@ -345,7 +346,11 @@ function widgetBehavior(publicAPI, model) {
|
|
|
345
346
|
|
|
346
347
|
|
|
347
348
|
publicAPI.handleMouseMove = function (callData) {
|
|
348
|
-
|
|
349
|
+
var _model$activeState$ge, _model$activeState, _model$activeState$ge2;
|
|
350
|
+
|
|
351
|
+
var manipulator = (_model$activeState$ge = (_model$activeState = model.activeState) === null || _model$activeState === void 0 ? void 0 : (_model$activeState$ge2 = _model$activeState.getManipulator) === null || _model$activeState$ge2 === void 0 ? void 0 : _model$activeState$ge2.call(_model$activeState)) !== null && _model$activeState$ge !== void 0 ? _model$activeState$ge : model.manipulator;
|
|
352
|
+
|
|
353
|
+
if (!manipulator || !model.activeState || !model.activeState.getActive() || !model.pickable || !model.dragable) {
|
|
349
354
|
return macro.VOID;
|
|
350
355
|
}
|
|
351
356
|
|
|
@@ -361,10 +366,9 @@ function widgetBehavior(publicAPI, model) {
|
|
|
361
366
|
model.shapeHandle.setUp(up);
|
|
362
367
|
model.shapeHandle.setRight(right);
|
|
363
368
|
model.shapeHandle.setDirection(normal);
|
|
364
|
-
model.manipulator.setNormal(normal);
|
|
365
369
|
}
|
|
366
370
|
|
|
367
|
-
var worldCoords =
|
|
371
|
+
var worldCoords = manipulator.handleEvent(callData, model._apiSpecificRenderWindow);
|
|
368
372
|
|
|
369
373
|
if (!worldCoords.length) {
|
|
370
374
|
return macro.VOID;
|
|
@@ -9,14 +9,24 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
9
9
|
|
|
10
10
|
function vtkShapeWidget(publicAPI, model) {
|
|
11
11
|
model.classHierarchy.push('vtkShapeWidget');
|
|
12
|
+
|
|
13
|
+
var superClass = _objectSpread({}, publicAPI);
|
|
14
|
+
|
|
12
15
|
model.methodsToLink = ['scaleInPixels', 'textProps', 'fontProperties'];
|
|
16
|
+
|
|
17
|
+
publicAPI.setManipulator = function (manipulator) {
|
|
18
|
+
superClass.setManipulator(manipulator);
|
|
19
|
+
model.widgetState.getStatesWithLabel('moveHandle').forEach(function (handle) {
|
|
20
|
+
return handle.setManipulator(manipulator);
|
|
21
|
+
});
|
|
22
|
+
};
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
function defaultValues(initialValues) {
|
|
16
26
|
var _None;
|
|
17
27
|
|
|
18
28
|
return _objectSpread({
|
|
19
|
-
manipulator: null,
|
|
29
|
+
// manipulator: null,
|
|
20
30
|
modifierBehavior: {
|
|
21
31
|
None: (_None = {}, _defineProperty(_None, BehaviorCategory.PLACEMENT, ShapeBehavior[BehaviorCategory.PLACEMENT].CLICK_AND_DRAG), _defineProperty(_None, BehaviorCategory.POINTS, ShapeBehavior[BehaviorCategory.POINTS].CORNER_TO_CORNER), _defineProperty(_None, BehaviorCategory.RATIO, ShapeBehavior[BehaviorCategory.RATIO].FREE), _None)
|
|
22
32
|
},
|
|
@@ -29,7 +39,7 @@ function extend(publicAPI, model) {
|
|
|
29
39
|
var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
30
40
|
Object.assign(model, defaultValues(initialValues));
|
|
31
41
|
vtkAbstractWidgetFactory.extend(publicAPI, model, initialValues);
|
|
32
|
-
macro.setGet(publicAPI, model, ['modifierBehavior', 'resetAfterPointPlacement']);
|
|
42
|
+
macro.setGet(publicAPI, model, ['manipulator', 'modifierBehavior', 'resetAfterPointPlacement']);
|
|
33
43
|
vtkShapeWidget(publicAPI, model);
|
|
34
44
|
} // ----------------------------------------------------------------------------
|
|
35
45
|
|
|
@@ -12,8 +12,6 @@ function widgetBehavior(publicAPI, model) {
|
|
|
12
12
|
model.isDragging = false; // The last world coordinate of the mouse cursor during dragging.
|
|
13
13
|
|
|
14
14
|
model.previousPosition = null;
|
|
15
|
-
centerHandle.setManipulator(model.manipulator);
|
|
16
|
-
borderHandle.setManipulator(model.manipulator);
|
|
17
15
|
model.classHierarchy.push('vtkSphereWidgetProp');
|
|
18
16
|
moveHandle.setVisible(true);
|
|
19
17
|
centerHandle.setVisible(false);
|
|
@@ -55,7 +53,10 @@ function widgetBehavior(publicAPI, model) {
|
|
|
55
53
|
}
|
|
56
54
|
|
|
57
55
|
function currentWorldCoords(e) {
|
|
58
|
-
|
|
56
|
+
var _model$activeState$ge, _model$activeState, _model$activeState$ge2;
|
|
57
|
+
|
|
58
|
+
var manipulator = (_model$activeState$ge = (_model$activeState = model.activeState) === null || _model$activeState === void 0 ? void 0 : (_model$activeState$ge2 = _model$activeState.getManipulator) === null || _model$activeState$ge2 === void 0 ? void 0 : _model$activeState$ge2.call(_model$activeState)) !== null && _model$activeState$ge !== void 0 ? _model$activeState$ge : model.manipulator;
|
|
59
|
+
return manipulator.handleEvent(e, model._apiSpecificRenderWindow);
|
|
59
60
|
} // Update the sphere's center and radius. Example:
|
|
60
61
|
// handle.setCenterAndRadius([1,2,3], 10);
|
|
61
62
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
1
2
|
import { f as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
|
|
2
3
|
import vtkAbstractWidgetFactory from '../Core/AbstractWidgetFactory.js';
|
|
3
4
|
import vtkPlanePointManipulator from '../Manipulators/PlaneManipulator.js';
|
|
@@ -7,8 +8,15 @@ import macro from '../../macros.js';
|
|
|
7
8
|
import widgetBehavior from './SphereWidget/behavior.js';
|
|
8
9
|
import stateGenerator from './SphereWidget/state.js';
|
|
9
10
|
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
12
|
+
|
|
13
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
14
|
+
|
|
10
15
|
function vtkSphereWidget(publicAPI, model) {
|
|
11
16
|
model.classHierarchy.push('vtkSphereWidget');
|
|
17
|
+
|
|
18
|
+
var superClass = _objectSpread({}, publicAPI);
|
|
19
|
+
|
|
12
20
|
model.behavior = widgetBehavior;
|
|
13
21
|
|
|
14
22
|
publicAPI.getRepresentationsForViewType = function (viewType) {
|
|
@@ -34,7 +42,8 @@ function vtkSphereWidget(publicAPI, model) {
|
|
|
34
42
|
builder: vtkSphereContextRepresentation,
|
|
35
43
|
labels: ['sphereHandle']
|
|
36
44
|
}];
|
|
37
|
-
};
|
|
45
|
+
}; // --- Public methods -------------------------------------------------------
|
|
46
|
+
|
|
38
47
|
|
|
39
48
|
publicAPI.getRadius = function () {
|
|
40
49
|
var h1 = model.widgetState.getCenterHandle();
|
|
@@ -42,8 +51,20 @@ function vtkSphereWidget(publicAPI, model) {
|
|
|
42
51
|
return Math.sqrt(distance2BetweenPoints(h1.getOrigin(), h2.getOrigin()));
|
|
43
52
|
};
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
publicAPI.setManipulator = function (manipulator) {
|
|
55
|
+
superClass.setManipulator(manipulator);
|
|
56
|
+
model.widgetState.getMoveHandle().setManipulator(manipulator);
|
|
57
|
+
model.widgetState.getCenterHandle().setManipulator(manipulator);
|
|
58
|
+
model.widgetState.getBorderHandle().setManipulator(manipulator);
|
|
59
|
+
}; // --------------------------------------------------------------------------
|
|
60
|
+
// initialization
|
|
61
|
+
// --------------------------------------------------------------------------
|
|
62
|
+
|
|
63
|
+
|
|
46
64
|
model.widgetState = stateGenerator();
|
|
65
|
+
publicAPI.setManipulator(model.manipulator || vtkPlanePointManipulator.newInstance({
|
|
66
|
+
useCameraNormal: true
|
|
67
|
+
}));
|
|
47
68
|
}
|
|
48
69
|
|
|
49
70
|
function extend(publicAPI, model) {
|
|
@@ -32,6 +32,7 @@ function widgetBehavior(publicAPI, model) {
|
|
|
32
32
|
|
|
33
33
|
model.lastHandle.setColor(model.moveHandle.getColor());
|
|
34
34
|
model.lastHandle.setScale1(model.moveHandle.getScale1());
|
|
35
|
+
model.lastHandle.setManipulator(model.manipulator);
|
|
35
36
|
|
|
36
37
|
if (!model.firstHandle) {
|
|
37
38
|
model.firstHandle = model.lastHandle;
|
|
@@ -247,12 +248,15 @@ function widgetBehavior(publicAPI, model) {
|
|
|
247
248
|
|
|
248
249
|
|
|
249
250
|
publicAPI.handleMouseMove = function (callData) {
|
|
250
|
-
|
|
251
|
+
var _model$activeState$ge, _model$activeState, _model$activeState$ge2;
|
|
252
|
+
|
|
253
|
+
var manipulator = (_model$activeState$ge = (_model$activeState = model.activeState) === null || _model$activeState === void 0 ? void 0 : (_model$activeState$ge2 = _model$activeState.getManipulator) === null || _model$activeState$ge2 === void 0 ? void 0 : _model$activeState$ge2.call(_model$activeState)) !== null && _model$activeState$ge !== void 0 ? _model$activeState$ge : model.manipulator;
|
|
254
|
+
|
|
255
|
+
if (!manipulator || !model.activeState || !model.activeState.getActive() || !model.pickable) {
|
|
251
256
|
return macro.VOID;
|
|
252
257
|
}
|
|
253
258
|
|
|
254
|
-
|
|
255
|
-
var worldCoords = model.manipulator.handleEvent(callData, model._apiSpecificRenderWindow);
|
|
259
|
+
var worldCoords = manipulator.handleEvent(callData, model._apiSpecificRenderWindow);
|
|
256
260
|
var hoveredHandle = getHoveredHandle();
|
|
257
261
|
|
|
258
262
|
if (hoveredHandle) {
|
|
@@ -16,7 +16,7 @@ function generateState() {
|
|
|
16
16
|
initialValue: 0
|
|
17
17
|
}).addStateFromMixin({
|
|
18
18
|
labels: ['moveHandle'],
|
|
19
|
-
mixins: ['origin', 'color', 'scale1', 'visible'],
|
|
19
|
+
mixins: ['origin', 'color', 'scale1', 'visible', 'manipulator'],
|
|
20
20
|
name: 'moveHandle',
|
|
21
21
|
initialValues: {
|
|
22
22
|
scale1: 0.05,
|
|
@@ -24,7 +24,7 @@ function generateState() {
|
|
|
24
24
|
}
|
|
25
25
|
}).addDynamicMixinState({
|
|
26
26
|
labels: ['handles'],
|
|
27
|
-
mixins: ['origin', 'color', 'scale1', 'visible'],
|
|
27
|
+
mixins: ['origin', 'color', 'scale1', 'visible', 'manipulator'],
|
|
28
28
|
name: 'handle',
|
|
29
29
|
initialValues: {
|
|
30
30
|
scale1: 0.05
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
1
2
|
import macro from '../../macros.js';
|
|
2
3
|
import vtkAbstractWidgetFactory from '../Core/AbstractWidgetFactory.js';
|
|
3
4
|
import vtkPlanePointManipulator from '../Manipulators/PlaneManipulator.js';
|
|
@@ -7,11 +8,17 @@ import widgetBehavior from './SplineWidget/behavior.js';
|
|
|
7
8
|
import generateState from './SplineWidget/state.js';
|
|
8
9
|
import { ViewTypes } from '../Core/WidgetManager/Constants.js';
|
|
9
10
|
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
12
|
+
|
|
13
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
14
|
// Factory
|
|
11
15
|
// ----------------------------------------------------------------------------
|
|
12
16
|
|
|
13
17
|
function vtkSplineWidget(publicAPI, model) {
|
|
14
|
-
model.classHierarchy.push('vtkSplineWidget');
|
|
18
|
+
model.classHierarchy.push('vtkSplineWidget');
|
|
19
|
+
|
|
20
|
+
var superClass = _objectSpread({}, publicAPI); // --- Widget Requirement ---------------------------------------------------
|
|
21
|
+
|
|
15
22
|
|
|
16
23
|
model.methodsToLink = ['outputBorder', 'fill', 'borderColor', 'errorBorderColor'];
|
|
17
24
|
model.behavior = widgetBehavior;
|
|
@@ -35,17 +42,29 @@ function vtkSplineWidget(publicAPI, model) {
|
|
|
35
42
|
labels: ['handles', 'moveHandle']
|
|
36
43
|
}];
|
|
37
44
|
}
|
|
45
|
+
}; // --- Public methods -------------------------------------------------------
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
publicAPI.setManipulator = function (manipulator) {
|
|
49
|
+
superClass.setManipulator(manipulator);
|
|
50
|
+
model.widgetState.getMoveHandle().setManipulator(manipulator);
|
|
51
|
+
model.widgetState.getHandleList().forEach(function (handle) {
|
|
52
|
+
handle.setManipulator(manipulator);
|
|
53
|
+
});
|
|
38
54
|
}; // --------------------------------------------------------------------------
|
|
39
55
|
// initialization
|
|
40
56
|
// --------------------------------------------------------------------------
|
|
41
57
|
// Default manipulator
|
|
42
58
|
|
|
43
59
|
|
|
44
|
-
model.manipulator
|
|
60
|
+
publicAPI.setManipulator(model.manipulator || model.manipulator || vtkPlanePointManipulator.newInstance({
|
|
61
|
+
useCameraNormal: true
|
|
62
|
+
}));
|
|
45
63
|
} // ----------------------------------------------------------------------------
|
|
46
64
|
|
|
47
65
|
|
|
48
66
|
var DEFAULT_VALUES = {
|
|
67
|
+
// manipulator: null,
|
|
49
68
|
freehandMinDistance: 0.1,
|
|
50
69
|
allowFreehand: true,
|
|
51
70
|
resolution: 32,
|
package/index.d.ts
CHANGED
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
/// <reference path="./Filters/General/AppendPolyData.d.ts" />
|
|
43
43
|
/// <reference path="./Filters/General/ImageCropFilter.d.ts" />
|
|
44
44
|
/// <reference path="./Filters/General/ImageOutlineFilter.d.ts" />
|
|
45
|
-
/// <reference path="./Filters/General/ImageStreamline.d.ts" />
|
|
46
45
|
/// <reference path="./Filters/General/ImageSliceFilter.d.ts" />
|
|
46
|
+
/// <reference path="./Filters/General/ImageStreamline.d.ts" />
|
|
47
47
|
/// <reference path="./Filters/General/LineFilter.d.ts" />
|
|
48
48
|
/// <reference path="./Filters/General/OutlineFilter.d.ts" />
|
|
49
49
|
/// <reference path="./Filters/General/TriangleFilter.d.ts" />
|
|
@@ -138,6 +138,7 @@
|
|
|
138
138
|
/// <reference path="./Rendering/SceneGraph/RenderPass.d.ts" />
|
|
139
139
|
/// <reference path="./Rendering/SceneGraph/ViewNode.d.ts" />
|
|
140
140
|
/// <reference path="./Rendering/SceneGraph/ViewNodeFactory.d.ts" />
|
|
141
|
+
/// <reference path="./Widgets/Manipulators/AbstractManipulator.d.ts" />
|
|
141
142
|
/// <reference path="./Widgets/Manipulators/LineManipulator.d.ts" />
|
|
142
143
|
/// <reference path="./Widgets/Manipulators/PlaneManipulator.d.ts" />
|
|
143
144
|
/// <reference path="./Widgets/Manipulators/TrackballManipulator.d.ts" />
|