@kitware/vtk.js 23.4.0 → 24.0.0-beta.1

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.
Files changed (152) hide show
  1. package/BREAKING_CHANGES.md +33 -0
  2. package/Common/Core/DataArray.js +4 -0
  3. package/Common/Core/Math/index.js +2 -2
  4. package/Common/Core/Math.js +1 -1
  5. package/Common/DataModel/BoundingBox.js +3 -8
  6. package/Common/DataModel/DataSetAttributes/FieldData.js +9 -5
  7. package/Common/DataModel/ITKHelper.js +2 -346
  8. package/Common/DataModel/ImageData.d.ts +23 -6
  9. package/Common/DataModel/ImageData.js +8 -1
  10. package/Common/DataModel/PolyData.d.ts +8 -1
  11. package/Common/DataModel/PolyData.js +5 -3
  12. package/Common/DataModel/Triangle.js +217 -2
  13. package/Common/Transform/LandmarkTransform.js +1 -1
  14. package/Filters/General/OBBTree/OBBNode.js +82 -0
  15. package/Filters/General/OBBTree/helper.js +92 -0
  16. package/Filters/General/OBBTree.js +1249 -0
  17. package/Filters/General/WindowedSincPolyDataFilter.js +1 -1
  18. package/Filters/General.js +2 -0
  19. package/Filters/Sources/CircleSource.js +1 -1
  20. package/Filters/Sources/PointSource.js +1 -1
  21. package/Filters/Texture/TextureMapToPlane.js +1 -1
  22. package/Interaction/Manipulators/KeyboardCameraManipulator.js +1 -1
  23. package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +1 -1
  24. package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +1 -1
  25. package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +1 -1
  26. package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +1 -1
  27. package/Interaction/Style/InteractorStyleImage.js +3 -3
  28. package/Interaction/Style/InteractorStyleMPRSlice.js +12 -6
  29. package/Interaction/Style/InteractorStyleManipulator.js +42 -28
  30. package/Interaction/Style/InteractorStyleRemoteMouse.js +32 -14
  31. package/Interaction/Style/InteractorStyleTrackballCamera.js +7 -7
  32. package/Interaction/Widgets/OrientationMarkerWidget.js +18 -13
  33. package/Interaction/Widgets/PiecewiseGaussianWidget.js +1 -1
  34. package/Interaction/Widgets.js +1 -35
  35. package/Proxy/Core/View2DProxy.js +1 -1
  36. package/Rendering/Core/ColorTransferFunction.js +1 -1
  37. package/Rendering/Core/Coordinate.js +1 -1
  38. package/Rendering/Core/CubeAxesActor.js +1 -1
  39. package/Rendering/Core/Glyph3DMapper.js +1 -1
  40. package/Rendering/Core/ImageMapper.js +1 -1
  41. package/Rendering/Core/InteractorObserver.js +11 -10
  42. package/Rendering/Core/InteractorStyle.js +9 -4
  43. package/Rendering/Core/Mapper.js +1 -1
  44. package/Rendering/Core/Prop.js +6 -4
  45. package/Rendering/Core/Prop3D.js +1 -1
  46. package/Rendering/Core/RenderWindowInteractor.js +24 -17
  47. package/Rendering/Core/Renderer.js +24 -19
  48. package/Rendering/Core/ScalarBarActor.js +1 -1
  49. package/Rendering/Core/Viewport.js +1 -1
  50. package/Rendering/Core/VolumeMapper.js +1 -1
  51. package/Rendering/OpenGL/Actor.js +2 -2
  52. package/Rendering/OpenGL/Actor2D.js +2 -2
  53. package/Rendering/OpenGL/BufferObject.js +6 -5
  54. package/Rendering/OpenGL/Camera.js +3 -3
  55. package/Rendering/OpenGL/CellArrayBufferObject.js +1 -1
  56. package/Rendering/OpenGL/Framebuffer.js +13 -12
  57. package/Rendering/OpenGL/Glyph3DMapper.js +10 -8
  58. package/Rendering/OpenGL/HardwareSelector.js +35 -25
  59. package/Rendering/OpenGL/ImageMapper.js +51 -45
  60. package/Rendering/OpenGL/ImageSlice.js +2 -2
  61. package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +4 -2
  62. package/Rendering/OpenGL/PolyDataMapper.js +14 -11
  63. package/Rendering/OpenGL/PolyDataMapper2D.js +17 -16
  64. package/Rendering/OpenGL/Renderer.js +11 -7
  65. package/Rendering/OpenGL/ReplacementShaderMapper.js +1 -1
  66. package/Rendering/OpenGL/ScalarBarActor.js +2 -2
  67. package/Rendering/OpenGL/ShaderCache.js +7 -5
  68. package/Rendering/OpenGL/Skybox.js +11 -9
  69. package/Rendering/OpenGL/SphereMapper.js +2 -2
  70. package/Rendering/OpenGL/StickMapper.js +2 -2
  71. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +13 -12
  72. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +11 -9
  73. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +19 -12
  74. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +9 -6
  75. package/Rendering/OpenGL/Texture.js +44 -31
  76. package/Rendering/OpenGL/VertexArrayObject.js +7 -7
  77. package/Rendering/OpenGL/Volume.js +3 -2
  78. package/Rendering/OpenGL/VolumeMapper.js +30 -26
  79. package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
  80. package/Rendering/SceneGraph/ViewNode.js +8 -7
  81. package/Rendering/WebGPU/Renderer.js +18 -10
  82. package/Widgets/Core/AbstractWidget.js +5 -4
  83. package/Widgets/Core/AbstractWidgetFactory.js +2 -1
  84. package/Widgets/Core/WidgetManager.js +66 -49
  85. package/Widgets/Manipulators/LineManipulator.js +1 -1
  86. package/Widgets/Representations/CircleContextRepresentation.js +1 -1
  87. package/Widgets/Representations/ImplicitPlaneRepresentation.js +5 -5
  88. package/Widgets/Representations/PolyLineRepresentation.js +1 -1
  89. package/Widgets/Representations/ResliceCursorContextRepresentation.js +7 -7
  90. package/Widgets/SVG/SVGLandmarkRepresentation/Constants.js +2 -2
  91. package/Widgets/SVG/SVGLandmarkRepresentation.js +21 -8
  92. package/Widgets/SVG/SVGRepresentation.js +1 -1
  93. package/Widgets/Widgets3D/AngleWidget/behavior.js +14 -6
  94. package/Widgets/Widgets3D/DistanceWidget/behavior.js +14 -6
  95. package/Widgets/Widgets3D/EllipseWidget.js +0 -1
  96. package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +6 -2
  97. package/Widgets/Widgets3D/ImplicitPlaneWidget.js +4 -2
  98. package/Widgets/Widgets3D/LabelWidget/behavior.js +138 -0
  99. package/Widgets/Widgets3D/LabelWidget/state.js +22 -0
  100. package/Widgets/Widgets3D/LabelWidget.js +79 -0
  101. package/Widgets/Widgets3D/LineWidget/behavior.js +18 -9
  102. package/Widgets/Widgets3D/LineWidget/helpers.js +1 -1
  103. package/Widgets/Widgets3D/LineWidget.js +0 -1
  104. package/Widgets/Widgets3D/PaintWidget/behavior.js +5 -3
  105. package/Widgets/Widgets3D/PolyLineWidget/behavior.js +18 -8
  106. package/Widgets/Widgets3D/RectangleWidget.js +0 -1
  107. package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +1 -1
  108. package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +1 -1
  109. package/Widgets/Widgets3D/ResliceCursorWidget.js +1 -1
  110. package/Widgets/Widgets3D/ShapeWidget/behavior.js +18 -11
  111. package/Widgets/Widgets3D/SplineWidget/behavior.js +33 -21
  112. package/index.d.ts +3 -4
  113. package/interfaces.d.ts +11 -0
  114. package/macros.d.ts +26 -1
  115. package/macros.js +51 -19
  116. package/package.json +1 -1
  117. package/types.d.ts +1 -0
  118. package/Interaction/Widgets/AbstractWidget.js +0 -104
  119. package/Interaction/Widgets/DistanceRepresentation.js +0 -116
  120. package/Interaction/Widgets/DistanceWidget.js +0 -77
  121. package/Interaction/Widgets/HandleRepresentation/Constants.js +0 -12
  122. package/Interaction/Widgets/HandleRepresentation.js +0 -100
  123. package/Interaction/Widgets/HandleWidget/Constants.js +0 -9
  124. package/Interaction/Widgets/HandleWidget.js +0 -194
  125. package/Interaction/Widgets/ImageCroppingRegionsRepresentation.js +0 -233
  126. package/Interaction/Widgets/ImageCroppingRegionsWidget/Constants.js +0 -16
  127. package/Interaction/Widgets/ImageCroppingRegionsWidget.js +0 -573
  128. package/Interaction/Widgets/LabelRepresentation/Constants.js +0 -17
  129. package/Interaction/Widgets/LabelRepresentation.js +0 -325
  130. package/Interaction/Widgets/LabelWidget.js +0 -65
  131. package/Interaction/Widgets/LineRepresentation/Constants.js +0 -21
  132. package/Interaction/Widgets/LineRepresentation.js +0 -498
  133. package/Interaction/Widgets/LineWidget/Constants.js +0 -11
  134. package/Interaction/Widgets/LineWidget.js +0 -296
  135. package/Interaction/Widgets/PointPlacer.js +0 -51
  136. package/Interaction/Widgets/ResliceCursor/ResliceCursor/Constants.js +0 -10
  137. package/Interaction/Widgets/ResliceCursor/ResliceCursor.js +0 -269
  138. package/Interaction/Widgets/ResliceCursor/ResliceCursorActor/Constants.js +0 -10
  139. package/Interaction/Widgets/ResliceCursor/ResliceCursorActor.js +0 -146
  140. package/Interaction/Widgets/ResliceCursor/ResliceCursorLineRepresentation.js +0 -332
  141. package/Interaction/Widgets/ResliceCursor/ResliceCursorPolyDataAlgorithm.js +0 -134
  142. package/Interaction/Widgets/ResliceCursor/ResliceCursorRepresentation/Constants.js +0 -16
  143. package/Interaction/Widgets/ResliceCursor/ResliceCursorRepresentation.js +0 -371
  144. package/Interaction/Widgets/ResliceCursor/ResliceCursorWidget/Constants.js +0 -10
  145. package/Interaction/Widgets/ResliceCursor/ResliceCursorWidget.js +0 -157
  146. package/Interaction/Widgets/SphereHandleRepresentation.js +0 -370
  147. package/Interaction/Widgets/WidgetRepresentation.js +0 -121
  148. package/Widgets/Representations/SphereContextRepresentation.js +0 -131
  149. package/Widgets/Widgets3D/SphereWidget/behavior.js +0 -177
  150. package/Widgets/Widgets3D/SphereWidget/state.js +0 -45
  151. package/Widgets/Widgets3D/SphereWidget.d.ts +0 -50
  152. package/Widgets/Widgets3D/SphereWidget.js +0 -62
@@ -9,7 +9,7 @@ import { v as vtkPolyData2DVS } from './glsl/vtkPolyData2DVS.glsl.js';
9
9
  import vtkReplacementShaderMapper from './ReplacementShaderMapper.js';
10
10
  import vtkShaderProgram from './ShaderProgram.js';
11
11
  import vtkViewNode from '../SceneGraph/ViewNode.js';
12
- import { J as round } from '../../Common/Core/Math/index.js';
12
+ import { K as round } from '../../Common/Core/Math/index.js';
13
13
  import { Representation } from '../Core/Property/Constants.js';
14
14
  import { DisplayLocation } from '../Core/Property2D/Constants.js';
15
15
  import { registerOverride } from './ViewNodeFactory.js';
@@ -35,7 +35,7 @@ function vtkOpenGLPolyDataMapper2D(publicAPI, model) {
35
35
  if (prepass) {
36
36
  model.openGLActor2D = publicAPI.getFirstAncestorOfType('vtkOpenGLActor2D');
37
37
  model.openGLRenderer = model.openGLActor2D.getFirstAncestorOfType('vtkOpenGLRenderer');
38
- model.openGLRenderWindow = model.openGLRenderer.getParent();
38
+ model._openGLRenderWindow = model.openGLRenderer.getParent();
39
39
  model.openGLCamera = model.openGLRenderer.getViewNodeFor(model.openGLRenderer.getRenderable().getActiveCamera());
40
40
  }
41
41
  };
@@ -84,13 +84,13 @@ function vtkOpenGLPolyDataMapper2D(publicAPI, model) {
84
84
  };
85
85
 
86
86
  publicAPI.render = function () {
87
- var ctx = model.openGLRenderWindow.getContext();
87
+ var ctx = model._openGLRenderWindow.getContext();
88
88
 
89
89
  if (model.context !== ctx) {
90
90
  model.context = ctx;
91
91
 
92
92
  for (var i = primTypes.Start; i < primTypes.End; i++) {
93
- model.primitives[i].setOpenGLRenderWindow(model.openGLRenderWindow);
93
+ model.primitives[i].setOpenGLRenderWindow(model._openGLRenderWindow);
94
94
  }
95
95
  }
96
96
 
@@ -426,7 +426,8 @@ function vtkOpenGLPolyDataMapper2D(publicAPI, model) {
426
426
  };
427
427
  publicAPI.buildShaders(shaders, ren, actor); // compile and bind the program if needed
428
428
 
429
- var newShader = model.openGLRenderWindow.getShaderCache().readyShaderProgramArray(shaders.Vertex, shaders.Fragment, shaders.Geometry); // if the shader changed reinitialize the VAO
429
+ var newShader = model._openGLRenderWindow.getShaderCache().readyShaderProgramArray(shaders.Vertex, shaders.Fragment, shaders.Geometry); // if the shader changed reinitialize the VAO
430
+
430
431
 
431
432
  if (newShader !== cellBO.getProgram()) {
432
433
  cellBO.setProgram(newShader); // reset the VAO as the shader has changed
@@ -436,7 +437,7 @@ function vtkOpenGLPolyDataMapper2D(publicAPI, model) {
436
437
 
437
438
  cellBO.getShaderSourceTime().modified();
438
439
  } else {
439
- model.openGLRenderWindow.getShaderCache().readyShaderProgram(cellBO.getProgram());
440
+ model._openGLRenderWindow.getShaderCache().readyShaderProgram(cellBO.getProgram());
440
441
  }
441
442
 
442
443
  cellBO.getVAO().bind();
@@ -544,18 +545,18 @@ function vtkOpenGLPolyDataMapper2D(publicAPI, model) {
544
545
  var shiftScaleEnabled = cellBO.getCABO().getCoordShiftAndScaleEnabled();
545
546
  var inverseShiftScaleMatrix = shiftScaleEnabled ? cellBO.getCABO().getInverseShiftAndScaleMatrix() : null; // Get the position of the actor
546
547
 
547
- var view = ren.getRenderWindow().getViews()[0];
548
- var size = view.getViewportSize(ren);
548
+ var size = model.openGLRenderer.getTiledSizeAndOrigin();
549
549
  var vport = ren.getViewport();
550
- var actorPos = actor.getActualPositionCoordinate().getComputedDoubleViewportValue(ren); // Get the window info
550
+ var actorPos = actor.getActualPositionCoordinate().getComputedViewportValue(ren); // Get the window info
551
+ // const tileViewport = ren.getVTKWindow().getTileViewport();
551
552
  // Assume tile viewport is 0 1 based on vtkOpenGLRenderer
552
553
 
553
554
  var tileViewport = [0.0, 0.0, 1.0, 1.0];
554
- var visVP = [0.0, 0.0, 1.0, 1.0];
555
+ var visVP = [0, 1, 0, 1];
555
556
  visVP[0] = vport[0] >= tileViewport[0] ? vport[0] : tileViewport[0];
556
557
  visVP[1] = vport[1] >= tileViewport[1] ? vport[1] : tileViewport[1];
557
- visVP[2] = vport[2] <= tileViewport[2] ? vport[2] : tileViewport[2];
558
- visVP[3] = vport[3] <= tileViewport[3] ? vport[3] : tileViewport[3];
558
+ visVP[2] = vport[2] >= tileViewport[2] ? vport[2] : tileViewport[2];
559
+ visVP[3] = vport[3] >= tileViewport[3] ? vport[3] : tileViewport[3];
559
560
 
560
561
  if (visVP[0] >= visVP[2]) {
561
562
  return;
@@ -565,16 +566,16 @@ function vtkOpenGLPolyDataMapper2D(publicAPI, model) {
565
566
  return;
566
567
  }
567
568
 
568
- size[0] = round(size[0] * (visVP[2] - visVP[0]) / (vport[2] - vport[0]));
569
- size[1] = round(size[1] * (visVP[3] - visVP[1]) / (vport[3] - vport[1]));
569
+ size.usize = round(size.usize * (visVP[2] - visVP[0]) / (vport[2] - vport[0]));
570
+ size.vsize = round(size.vsize * (visVP[3] - visVP[1]) / (vport[3] - vport[1]));
570
571
  var winSize = model.openGLRenderer.getParent().getSize();
571
572
  var xoff = round(actorPos[0] - (visVP[0] - vport[0]) * winSize[0]);
572
573
  var yoff = round(actorPos[1] - (visVP[1] - vport[1]) * winSize[1]); // set ortho projection
573
574
 
574
575
  var left = -xoff;
575
- var right = -xoff + size[0];
576
+ var right = -xoff + size.usize;
576
577
  var bottom = -yoff;
577
- var top = -yoff + size[1]; // it's an error to call glOrtho with
578
+ var top = -yoff + size.vsize; // it's an error to call glOrtho with
578
579
  // either left==right or top==bottom
579
580
 
580
581
  if (left === right) {
@@ -78,7 +78,8 @@ function vtkOpenGLRenderer(publicAPI, model) {
78
78
  };
79
79
 
80
80
  publicAPI.getAspectRatio = function () {
81
- var size = model.parent.getSizeByReference();
81
+ var size = model._parent.getSizeByReference();
82
+
82
83
  var viewport = model.renderable.getViewportByReference();
83
84
  return size[0] * (viewport[2] - viewport[0]) / ((viewport[3] - viewport[1]) * size[1]);
84
85
  };
@@ -92,16 +93,19 @@ function vtkOpenGLRenderer(publicAPI, model) {
92
93
  var vpu = vport[0] - tileViewPort[0];
93
94
  var vpv = vport[1] - tileViewPort[1]; // store the result as a pixel value
94
95
 
95
- var ndvp = model.parent.normalizedDisplayToDisplay(vpu, vpv);
96
+ var ndvp = model._parent.normalizedDisplayToDisplay(vpu, vpv);
97
+
96
98
  var lowerLeftU = Math.round(ndvp[0]);
97
99
  var lowerLeftV = Math.round(ndvp[1]); // find the upper right corner of the viewport, taking into account the
98
100
  // lower left boundary of this tile
99
101
 
100
102
  var vpu2 = vport[2] - tileViewPort[0];
101
103
  var vpv2 = vport[3] - tileViewPort[1];
102
- var ndvp2 = model.parent.normalizedDisplayToDisplay(vpu2, vpv2); // now compute the size of the intersection of the viewport with the
104
+
105
+ var ndvp2 = model._parent.normalizedDisplayToDisplay(vpu2, vpv2); // now compute the size of the intersection of the viewport with the
103
106
  // current tile
104
107
 
108
+
105
109
  var usize = Math.round(ndvp2[0]) - lowerLeftU;
106
110
  var vsize = Math.round(ndvp2[1]) - lowerLeftV;
107
111
 
@@ -155,16 +159,16 @@ function vtkOpenGLRenderer(publicAPI, model) {
155
159
  };
156
160
 
157
161
  publicAPI.setOpenGLRenderWindow = function (rw) {
158
- if (model.openGLRenderWindow === rw) {
162
+ if (model._openGLRenderWindow === rw) {
159
163
  return;
160
164
  }
161
165
 
162
166
  publicAPI.releaseGraphicsResources();
163
- model.openGLRenderWindow = rw;
167
+ model._openGLRenderWindow = rw;
164
168
  model.context = null;
165
169
 
166
170
  if (rw) {
167
- model.context = model.openGLRenderWindow.getContext();
171
+ model.context = model._openGLRenderWindow.getContext();
168
172
  }
169
173
  };
170
174
  } // ----------------------------------------------------------------------------
@@ -174,7 +178,7 @@ function vtkOpenGLRenderer(publicAPI, model) {
174
178
 
175
179
  var DEFAULT_VALUES = {
176
180
  context: null,
177
- openGLRenderWindow: null,
181
+ _openGLRenderWindow: null,
178
182
  selector: null
179
183
  }; // ----------------------------------------------------------------------------
180
184
 
@@ -22,7 +22,7 @@ function implementReplaceShaderCoincidentOffset(publicAPI, model) {
22
22
  }
23
23
  }
24
24
 
25
- if (model.openGLRenderWindow.getWebgl2()) {
25
+ if (model._openGLRenderWindow.getWebgl2()) {
26
26
  if (cp.factor !== 0.0) {
27
27
  FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::UniformFlow::Impl', ['float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));', '//VTK::UniformFlow::Impl'], false).result;
28
28
  FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Depth::Impl', 'gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;').result;
@@ -12,7 +12,7 @@ function vtkOpenGLScalarBarActor(publicAPI, model) {
12
12
  publicAPI.buildPass = function (prepass) {
13
13
  if (prepass) {
14
14
  model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
15
- model.openGLRenderWindow = model.openGLRenderer.getParent();
15
+ model._openGLRenderWindow = model.openGLRenderer.getParent();
16
16
 
17
17
  if (!model.scalarBarActorHelper.getRenderable()) {
18
18
  model.scalarBarActorHelper.setRenderable(model.renderable);
@@ -29,7 +29,7 @@ function vtkOpenGLScalarBarActor(publicAPI, model) {
29
29
  if (prepass) {
30
30
  var camera = model.openGLRenderer ? model.openGLRenderer.getRenderable().getActiveCamera() : null;
31
31
  var tsize = model.openGLRenderer.getTiledSizeAndOrigin();
32
- model.scalarBarActorHelper.updateAPISpecificData([tsize.usize, tsize.vsize], camera, model.openGLRenderWindow.getRenderable());
32
+ model.scalarBarActorHelper.updateAPISpecificData([tsize.usize, tsize.vsize], camera, model._openGLRenderWindow.getRenderable());
33
33
  }
34
34
  };
35
35
  } // ----------------------------------------------------------------------------
@@ -2,7 +2,7 @@ import Md5 from 'spark-md5';
2
2
  import macro from '../../macros.js';
3
3
  import vtkShaderProgram from './ShaderProgram.js';
4
4
 
5
- var SET_GET_FIELDS = ['lastShaderBound', 'context', 'openGLRenderWindow']; // ----------------------------------------------------------------------------
5
+ var SET_GET_FIELDS = ['lastShaderBound', 'context', '_openGLRenderWindow']; // ----------------------------------------------------------------------------
6
6
  // vtkShaderCache methods
7
7
  // ----------------------------------------------------------------------------
8
8
 
@@ -22,7 +22,8 @@ function vtkShaderCache(publicAPI, model) {
22
22
  nFSSource = vtkShaderProgram.substitute(nFSSource, 'VSOut', 'GSOut').result;
23
23
  }
24
24
 
25
- var gl2 = model.openGLRenderWindow.getWebgl2();
25
+ var gl2 = model._openGLRenderWindow.getWebgl2();
26
+
26
27
  var fragDepthString = '\n';
27
28
  var version = '#version 100\n';
28
29
 
@@ -165,8 +166,8 @@ function vtkShaderCache(publicAPI, model) {
165
166
  var DEFAULT_VALUES = {
166
167
  lastShaderBound: null,
167
168
  shaderPrograms: null,
168
- context: null,
169
- openGLRenderWindow: null
169
+ context: null // _openGLRenderWindow: null,
170
+
170
171
  }; // ----------------------------------------------------------------------------
171
172
 
172
173
  function extend(publicAPI, model) {
@@ -176,7 +177,8 @@ function extend(publicAPI, model) {
176
177
  model.shaderPrograms = {}; // Build VTK API
177
178
 
178
179
  macro.obj(publicAPI, model);
179
- macro.setGet(publicAPI, model, SET_GET_FIELDS); // Object methods
180
+ macro.setGet(publicAPI, model, SET_GET_FIELDS);
181
+ macro.moveToProtected(publicAPI, model, ['openGLRenderWindow']); // Object methods
180
182
 
181
183
  vtkShaderCache(publicAPI, model);
182
184
  } // ----------------------------------------------------------------------------
@@ -18,10 +18,10 @@ function vtkOpenGLSkybox(publicAPI, model) {
18
18
  publicAPI.buildPass = function (prepass) {
19
19
  if (prepass) {
20
20
  model.openGLRenderer = publicAPI.getFirstAncestorOfType('vtkOpenGLRenderer');
21
- model.openGLRenderWindow = model.openGLRenderer.getParent();
22
- model.context = model.openGLRenderWindow.getContext();
23
- model.tris.setOpenGLRenderWindow(model.openGLRenderWindow);
24
- model.openGLTexture.setOpenGLRenderWindow(model.openGLRenderWindow);
21
+ model._openGLRenderWindow = model.openGLRenderer.getParent();
22
+ model.context = model._openGLRenderWindow.getContext();
23
+ model.tris.setOpenGLRenderWindow(model._openGLRenderWindow);
24
+ model.openGLTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
25
25
  var ren = model.openGLRenderer.getRenderable();
26
26
  model.openGLCamera = model.openGLRenderer.getViewNodeFor(ren.getActiveCamera());
27
27
  }
@@ -41,8 +41,10 @@ function vtkOpenGLSkybox(publicAPI, model) {
41
41
  if (prepass && !model.openGLRenderer.getSelector()) {
42
42
  publicAPI.updateBufferObjects();
43
43
  model.context.depthMask(true);
44
- model.openGLRenderWindow.getShaderCache().readyShaderProgram(model.tris.getProgram());
45
- model.openGLTexture.render(model.openGLRenderWindow);
44
+
45
+ model._openGLRenderWindow.getShaderCache().readyShaderProgram(model.tris.getProgram());
46
+
47
+ model.openGLTexture.render(model._openGLRenderWindow);
46
48
  var texUnit = model.openGLTexture.getTextureUnit();
47
49
  model.tris.getProgram().setUniformi('sbtexture', texUnit);
48
50
  var ren = model.openGLRenderer.getRenderable();
@@ -115,12 +117,12 @@ function vtkOpenGLSkybox(publicAPI, model) {
115
117
  // But now we're stuck with it. From
116
118
  // https://stackoverflow.com/questions/11685608/convention-of-faces-in-opengl-cubemapping
117
119
  //
118
- model.tris.setProgram(model.openGLRenderWindow.getShaderCache().readyShaderProgramArray("//VTK::System::Dec\n attribute vec3 vertexMC;\n uniform mat4 IMCPCMatrix;\n varying vec3 TexCoords;\n void main () {\n gl_Position = vec4(vertexMC.xyz, 1.0);\n vec4 wpos = IMCPCMatrix * gl_Position;\n TexCoords = wpos.xyz/wpos.w;\n }", "//VTK::System::Dec\n //VTK::Output::Dec\n varying vec3 TexCoords;\n uniform samplerCube sbtexture;\n uniform vec3 camPos;\n void main () {\n // skybox looks from inside out\n // which means we have to adjust\n // our tcoords. Otherwise text would\n // be flipped\n vec3 tc = normalize(TexCoords - camPos);\n if (abs(tc.z) < max(abs(tc.x),abs(tc.y)))\n {\n tc = vec3(1.0, 1.0, -1.0) * tc;\n }\n else\n {\n tc = vec3(-1.0, 1.0, 1.0) * tc;\n }\n gl_FragData[0] = textureCube(sbtexture, tc);\n }", ''));
120
+ model.tris.setProgram(model._openGLRenderWindow.getShaderCache().readyShaderProgramArray("//VTK::System::Dec\n attribute vec3 vertexMC;\n uniform mat4 IMCPCMatrix;\n varying vec3 TexCoords;\n void main () {\n gl_Position = vec4(vertexMC.xyz, 1.0);\n vec4 wpos = IMCPCMatrix * gl_Position;\n TexCoords = wpos.xyz/wpos.w;\n }", "//VTK::System::Dec\n //VTK::Output::Dec\n varying vec3 TexCoords;\n uniform samplerCube sbtexture;\n uniform vec3 camPos;\n void main () {\n // skybox looks from inside out\n // which means we have to adjust\n // our tcoords. Otherwise text would\n // be flipped\n vec3 tc = normalize(TexCoords - camPos);\n if (abs(tc.z) < max(abs(tc.x),abs(tc.y)))\n {\n tc = vec3(1.0, 1.0, -1.0) * tc;\n }\n else\n {\n tc = vec3(-1.0, 1.0, 1.0) * tc;\n }\n gl_FragData[0] = textureCube(sbtexture, tc);\n }", ''));
119
121
  }
120
122
 
121
123
  if (model.lastFormat === 'background') {
122
124
  // maps the texture to the window
123
- model.tris.setProgram(model.openGLRenderWindow.getShaderCache().readyShaderProgramArray("//VTK::System::Dec\n attribute vec3 vertexMC;\n uniform mat4 IMCPCMatrix;\n varying vec2 TexCoords;\n void main () {\n gl_Position = vec4(vertexMC.xyz, 1.0);\n vec4 wpos = IMCPCMatrix * gl_Position;\n TexCoords = vec2(vertexMC.x, vertexMC.y)*0.5 + 0.5;\n }", "//VTK::System::Dec\n //VTK::Output::Dec\n varying vec2 TexCoords;\n uniform sampler2D sbtexture;\n void main () {\n gl_FragData[0] = texture2D(sbtexture, TexCoords);\n }", ''));
125
+ model.tris.setProgram(model._openGLRenderWindow.getShaderCache().readyShaderProgramArray("//VTK::System::Dec\n attribute vec3 vertexMC;\n uniform mat4 IMCPCMatrix;\n varying vec2 TexCoords;\n void main () {\n gl_Position = vec4(vertexMC.xyz, 1.0);\n vec4 wpos = IMCPCMatrix * gl_Position;\n TexCoords = vec2(vertexMC.x, vertexMC.y)*0.5 + 0.5;\n }", "//VTK::System::Dec\n //VTK::Output::Dec\n varying vec2 TexCoords;\n uniform sampler2D sbtexture;\n void main () {\n gl_FragData[0] = texture2D(sbtexture, TexCoords);\n }", ''));
124
126
  }
125
127
 
126
128
  model.tris.getShaderSourceTime().modified();
@@ -139,7 +141,7 @@ function vtkOpenGLSkybox(publicAPI, model) {
139
141
  }
140
142
 
141
143
  if (model.openGLTexture.getRenderable() !== tmaps[0]) {
142
- model.openGLTexture.releaseGraphicsResources(model.openGLRenderWindow);
144
+ model.openGLTexture.releaseGraphicsResources(model._openGLRenderWindow);
143
145
  model.openGLTexture.setRenderable(tmaps[0]);
144
146
  }
145
147
  };
@@ -47,7 +47,7 @@ function vtkOpenGLSphereMapper(publicAPI, model) {
47
47
  fragString = 'gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0;\n';
48
48
  }
49
49
 
50
- if (model.openGLRenderWindow.getWebgl2()) {
50
+ if (model._openGLRenderWindow.getWebgl2()) {
51
51
  fragString = 'gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0;\n';
52
52
  }
53
53
 
@@ -157,7 +157,7 @@ function vtkOpenGLSphereMapper(publicAPI, model) {
157
157
  vbo.setColorBO(vtkBufferObject.newInstance());
158
158
  }
159
159
 
160
- vbo.getColorBO().setOpenGLRenderWindow(model.openGLRenderWindow);
160
+ vbo.getColorBO().setOpenGLRenderWindow(model._openGLRenderWindow);
161
161
  } else if (vbo.getColorBO()) {
162
162
  vbo.setColorBO(null);
163
163
  }
@@ -46,7 +46,7 @@ function vtkOpenGLStickMapper(publicAPI, model) {
46
46
  fragString = ' gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0;\n';
47
47
  }
48
48
 
49
- if (model.openGLRenderWindow.getWebgl2()) {
49
+ if (model._openGLRenderWindow.getWebgl2()) {
50
50
  fragString = 'gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0;\n';
51
51
  } // see https://www.cl.cam.ac.uk/teaching/1999/AGraphHCI/SMAG/node2.html
52
52
 
@@ -172,7 +172,7 @@ function vtkOpenGLStickMapper(publicAPI, model) {
172
172
  vbo.setColorBO(vtkBufferObject.newInstance());
173
173
  }
174
174
 
175
- vbo.getColorBO().setOpenGLRenderWindow(model.openGLRenderWindow);
175
+ vbo.getColorBO().setOpenGLRenderWindow(model._openGLRenderWindow);
176
176
 
177
177
  if (c) {
178
178
  colorComponents = c.getNumberOfComponents();
@@ -95,20 +95,20 @@ function allocateVectorBuffer(openGLRenderWindow, size) {
95
95
  function vtkLICPingPongBufferManager(publicAPI, model) {
96
96
  model.classHierarchy.push('vtkLICPingPongBufferManager');
97
97
 
98
- if (!model.openGLRenderWindow) {
98
+ if (!model._openGLRenderWindow) {
99
99
  console.error('Pass renderwindow to ping pong manager');
100
100
  return;
101
101
  } // Don't handle bind/restoring framebuffers, assume it has been done upstream
102
102
 
103
103
 
104
- model.quad = getQuadPoly(model.openGLRenderWindow);
105
- model.context = model.openGLRenderWindow.getContext();
106
- model.licTexture0 = allocateLICBuffer(model.openGLRenderWindow, model.size);
107
- model.seedTexture0 = allocateLICBuffer(model.openGLRenderWindow, model.size);
108
- model.licTexture1 = allocateLICBuffer(model.openGLRenderWindow, model.size);
109
- model.seedTexture1 = allocateLICBuffer(model.openGLRenderWindow, model.size);
110
- model.eeTexture = model.doEEPass ? allocateNoiseBuffer(model.openGLRenderWindow, model.size) : null;
111
- model.imageVectorTexture = model.doVTPass ? allocateVectorBuffer(model.openGLRenderWindow, model.size) : null;
104
+ model.quad = getQuadPoly(model._openGLRenderWindow);
105
+ model.context = model._openGLRenderWindow.getContext();
106
+ model.licTexture0 = allocateLICBuffer(model._openGLRenderWindow, model.size);
107
+ model.seedTexture0 = allocateLICBuffer(model._openGLRenderWindow, model.size);
108
+ model.licTexture1 = allocateLICBuffer(model._openGLRenderWindow, model.size);
109
+ model.seedTexture1 = allocateLICBuffer(model._openGLRenderWindow, model.size);
110
+ model.eeTexture = model.doEEPass ? allocateNoiseBuffer(model._openGLRenderWindow, model.size) : null;
111
+ model.imageVectorTexture = model.doVTPass ? allocateVectorBuffer(model._openGLRenderWindow, model.size) : null;
112
112
  model.pingTextures[0] = model.licTexture0;
113
113
  model.pingTextures[1] = model.seedTexture0;
114
114
  model.pongTextures[0] = model.licTexture1;
@@ -127,7 +127,7 @@ function vtkLICPingPongBufferManager(publicAPI, model) {
127
127
 
128
128
  if (!VAO) {
129
129
  VAO = vtkVertexArrayObject.newInstance();
130
- VAO.setOpenGLRenderWindow(model.openGLRenderWindow);
130
+ VAO.setOpenGLRenderWindow(model._openGLRenderWindow);
131
131
  model.quadVAO = VAO;
132
132
  }
133
133
 
@@ -417,7 +417,7 @@ function vtkLICPingPongBufferManager(publicAPI, model) {
417
417
  }
418
418
 
419
419
  var DEFAULT_VALUES = {
420
- openGLRenderWindow: null,
420
+ // _openGLRenderWindow: null,
421
421
  vectorTexture: null,
422
422
  maskVectorTexture: null,
423
423
  noiseTexture: null,
@@ -437,7 +437,8 @@ function extend(publicAPI, model) {
437
437
  Object.assign(model, DEFAULT_VALUES, initialValues);
438
438
  macro.obj(publicAPI, model);
439
439
  macro.get(publicAPI, model, ['readIndex']);
440
- macro.setGet(publicAPI, model, ['doEEPass', 'doVTPass', 'openGLRenderWindow', 'vectorTexture', 'maskVectorTexture', 'noiseTexture', 'framebuffer', 'size']); // Object methods
440
+ macro.setGet(publicAPI, model, ['doEEPass', 'doVTPass', '_openGLRenderWindow', 'vectorTexture', 'maskVectorTexture', 'noiseTexture', 'framebuffer', 'size']);
441
+ macro.moveToProtected(publicAPI, model, ['openGLRenderWindow']); // Object methods
441
442
 
442
443
  vtkLICPingPongBufferManager(publicAPI, model);
443
444
  } // ----------------------------------------------------------------------------
@@ -33,7 +33,7 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
33
33
  model.classHierarchy.push('vtkLineIntegralConvolution2D');
34
34
 
35
35
  publicAPI.buildAShader = function (fSource) {
36
- return model.openGLRenderWindow.getShaderCache().readyShaderProgramArray(vtkLineIntegralConvolution2D_quadVS, fSource, '');
36
+ return model._openGLRenderWindow.getShaderCache().readyShaderProgramArray(vtkLineIntegralConvolution2D_quadVS, fSource, '');
37
37
  };
38
38
 
39
39
  publicAPI.dumpTextureValues = function (texture, _ref) {
@@ -42,7 +42,7 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
42
42
  height = _ref2[1];
43
43
 
44
44
  var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : model.context;
45
- var openGLRenderWindow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : model.openGLRenderWindow;
45
+ var openGLRenderWindow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : model._openGLRenderWindow;
46
46
  var nComp = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 4;
47
47
  // To get texture values in es 2.0, we need to attach the texture to a fbo,
48
48
  // then use glReadPixels
@@ -62,7 +62,7 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
62
62
 
63
63
  publicAPI.getTextureMinMax = function (texture, size) {
64
64
  var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : model.context;
65
- var openGLRenderWindow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : model.openGLRenderWindow;
65
+ var openGLRenderWindow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : model._openGLRenderWindow;
66
66
  var values = publicAPI.dumpTextureValues(texture, size, context, openGLRenderWindow, 4);
67
67
  var min = Number.MAX_VALUE;
68
68
  var max = Number.MIN_VALUE;
@@ -120,7 +120,7 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
120
120
  }
121
121
 
122
122
  publicAPI.executeLIC = function (size, vectorTexture, maskVectorTexture, noiseTexture, openGLRenderWindow, options) {
123
- model.openGLRenderWindow = openGLRenderWindow;
123
+ model._openGLRenderWindow = openGLRenderWindow;
124
124
  model.context = openGLRenderWindow.getContext();
125
125
  Object.assign(model, options);
126
126
 
@@ -142,7 +142,7 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
142
142
  var _fb;
143
143
 
144
144
  fb = vtkOpenGLFramebuffer.newInstance();
145
- fb.setOpenGLRenderWindow(model.openGLRenderWindow);
145
+ fb.setOpenGLRenderWindow(model._openGLRenderWindow);
146
146
  fb.saveCurrentBindingsAndBuffers();
147
147
 
148
148
  (_fb = fb).create.apply(_fb, _toConsumableArray(size));
@@ -182,7 +182,8 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
182
182
  var noiseBoundsPt1 = [(noiseTexture.getWidth() + 1) / size[0], (noiseTexture.getHeight() + 1) / size[1]];
183
183
  var dx = 1.0 / size[0];
184
184
  var dy = 1.0 / size[1];
185
- var shaderCache = model.openGLRenderWindow.getShaderCache();
185
+
186
+ var shaderCache = model._openGLRenderWindow.getShaderCache();
186
187
 
187
188
  if (model.transformVectors) {
188
189
  var VTShaderProgram = model.VTProgram;
@@ -341,9 +342,9 @@ function vtkLineIntegralConvolution2D(publicAPI, model) {
341
342
  };
342
343
 
343
344
  publicAPI.contrastEnhance = function (isSecondStage, size) {
344
- var shaderCache = model.openGLRenderWindow.getShaderCache();
345
+ var shaderCache = model._openGLRenderWindow.getShaderCache();
345
346
 
346
- var _publicAPI$getTexture = publicAPI.getTextureMinMax(model.bufs.getLastLICBuffer(), size, model.context, model.openGLRenderWindow),
347
+ var _publicAPI$getTexture = publicAPI.getTextureMinMax(model.bufs.getLastLICBuffer(), size, model.context, model._openGLRenderWindow),
347
348
  min = _publicAPI$getTexture.min,
348
349
  max = _publicAPI$getTexture.max;
349
350
 
@@ -390,7 +391,8 @@ function extend(publicAPI, model) {
390
391
  var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
391
392
  Object.assign(model, DEFAULT_VALUES, initialValues);
392
393
  macro.obj(publicAPI, model);
393
- macro.setGet(publicAPI, model, ['context', 'openGLRenderWindow', 'nuberOfSteps', 'stepSize', 'normalizeVectors', 'maskThreshold', 'enhancedLIC', 'enhanceContrast', 'lowLICContrastEnhancementFactor', 'highLICContrastEnhancementFactor', 'antiAlias', 'componentIds', 'isComposite']); // Object methods
394
+ macro.setGet(publicAPI, model, ['context', '_openGLRenderWindow', 'nuberOfSteps', 'stepSize', 'normalizeVectors', 'maskThreshold', 'enhancedLIC', 'enhanceContrast', 'lowLICContrastEnhancementFactor', 'highLICContrastEnhancementFactor', 'antiAlias', 'componentIds', 'isComposite']);
395
+ macro.moveToProtected(publicAPI, model, ['openGLRenderWindow']); // Object methods
394
396
 
395
397
  vtkLineIntegralConvolution2D(publicAPI, model);
396
398
  } // ----------------------------------------------------------------------------
@@ -73,7 +73,7 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
73
73
 
74
74
  if (!VAO) {
75
75
  VAO = vtkVertexArrayObject.newInstance();
76
- VAO.setOpenGLRenderWindow(model.openGLRenderWindow);
76
+ VAO.setOpenGLRenderWindow(model._openGLRenderWindow);
77
77
  model.licQuadVAO = VAO;
78
78
  }
79
79
 
@@ -237,7 +237,7 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
237
237
  maxLevel: 0,
238
238
  autoParameters: false
239
239
  });
240
- texture.setOpenGLRenderWindow(model.openGLRenderWindow);
240
+ texture.setOpenGLRenderWindow(model._openGLRenderWindow);
241
241
  texture.create2DFromRaw(length, length, 4, 'Float32Array', values);
242
242
  texture.activate();
243
243
  texture.sendParameters();
@@ -247,13 +247,13 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
247
247
  };
248
248
 
249
249
  publicAPI.buildAShader = function (fSource) {
250
- return model.openGLRenderWindow.getShaderCache().readyShaderProgramArray(vtkLineIntegralConvolution2D_quadVS, fSource, '');
250
+ return model._openGLRenderWindow.getShaderCache().readyShaderProgramArray(vtkLineIntegralConvolution2D_quadVS, fSource, '');
251
251
  };
252
252
 
253
253
  publicAPI.allocateTextures = function () {
254
254
  var nearest = vtkOpenGLTexture.Filter.NEAREST;
255
255
  var linear = vtkOpenGLTexture.Filter.LINEAR;
256
- var rw = model.openGLRenderWindow;
256
+ var rw = model._openGLRenderWindow;
257
257
 
258
258
  if (!model.geometryImage) {
259
259
  model.geometryImage = publicAPI.allocateTexture(rw, nearest);
@@ -326,7 +326,7 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
326
326
  model.licHelper = null; // All buffers need rebuilding
327
327
 
328
328
  var fb = vtkOpenGLFramebuffer.newInstance();
329
- fb.setOpenGLRenderWindow(model.openGLRenderWindow);
329
+ fb.setOpenGLRenderWindow(model._openGLRenderWindow);
330
330
  fb.saveCurrentBindingsAndBuffers();
331
331
  fb.create.apply(fb, _toConsumableArray(model.size));
332
332
  fb.populateFramebuffer();
@@ -362,7 +362,7 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
362
362
  publicAPI.buildAllShaders();
363
363
 
364
364
  if (!model.licQuad) {
365
- model.licQuad = getQuadPoly(model.openGLRenderWindow);
365
+ model.licQuad = getQuadPoly(model._openGLRenderWindow);
366
366
  }
367
367
 
368
368
  if (!model.licHelper) {
@@ -406,7 +406,9 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
406
406
  }
407
407
 
408
408
  var copyPass = model.licCopyPass;
409
- model.openGLRenderWindow.getShaderCache().readyShaderProgram(copyPass);
409
+
410
+ model._openGLRenderWindow.getShaderCache().readyShaderProgram(copyPass);
411
+
410
412
  var gl = model.context;
411
413
  gl.viewport.apply(gl, [0, 0].concat(_toConsumableArray(windowSize)));
412
414
  gl.scissor.apply(gl, [0, 0].concat(_toConsumableArray(windowSize)));
@@ -443,7 +445,9 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
443
445
  }
444
446
 
445
447
  var colorPass = model.licColorPass;
446
- model.openGLRenderWindow.getShaderCache().readyShaderProgram(colorPass);
448
+
449
+ model._openGLRenderWindow.getShaderCache().readyShaderProgram(colorPass);
450
+
447
451
  colorPass.setUniformi('texVectors', model.vectorImage.getTextureUnit());
448
452
  colorPass.setUniformi('texGeomColors', model.geometryImage.getTextureUnit());
449
453
 
@@ -490,7 +494,9 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
490
494
  }
491
495
 
492
496
  var enhanceContrastPass = model.enhanceContrastPass;
493
- model.openGLRenderWindow.getShaderCache().readyShaderProgram(enhanceContrastPass);
497
+
498
+ model._openGLRenderWindow.getShaderCache().readyShaderProgram(enhanceContrastPass);
499
+
494
500
  enhanceContrastPass.setUniformi('texGeomColors', model.geometryImage.getTextureUnit());
495
501
  enhanceContrastPass.setUniformi('texHSLColors', model.HSLColorImage.getTextureUnit());
496
502
  enhanceContrastPass.setUniformi('texLIC', model.LICImage.getTextureUnit());
@@ -509,7 +515,7 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
509
515
 
510
516
  publicAPI.applyLIC = function () {
511
517
  var options = model.licInterface.get('stepSize', 'numberOfSteps', 'enhancedLIC', 'enhanceContrast', 'lowLICContrastEnhancementFactor', 'highLICContrastEnhancementFactor', 'antiAlias', 'normalizeVectors', 'maskThreshold', 'transformVectors');
512
- var resultTexture = model.licHelper.executeLIC(model.size, model.vectorImage, model.maskVectorImage, model.noiseTexture, model.openGLRenderWindow, options);
518
+ var resultTexture = model.licHelper.executeLIC(model.size, model.vectorImage, model.maskVectorImage, model.noiseTexture, model._openGLRenderWindow, options);
513
519
 
514
520
  if (!resultTexture) {
515
521
  console.error('Failed to compute image LIC');
@@ -575,7 +581,7 @@ function vtkOpenGLSurfaceLICInterface(publicAPI, model) {
575
581
 
576
582
  var DEFAULT_VALUES = {
577
583
  context: null,
578
- openGLRenderWindow: null,
584
+ // _openGLRenderWindow: null,
579
585
  shadersNeedBuilding: true,
580
586
  reallocateTextures: true,
581
587
  size: null,
@@ -587,7 +593,8 @@ function extend(publicAPI, model) {
587
593
 
588
594
  vtkSurfaceLICInterface.extend(publicAPI, model, initialValues);
589
595
  macro.obj(publicAPI, model);
590
- macro.setGet(publicAPI, model, ['context', 'openGLRenderWindow', 'reallocateTextures', 'licInterface', 'size']); // Object methods
596
+ macro.setGet(publicAPI, model, ['context', '_openGLRenderWindow', 'reallocateTextures', 'licInterface', 'size']);
597
+ macro.moveToProtected(publicAPI, model, ['openGLRenderWindow']); // Object methods
591
598
 
592
599
  vtkOpenGLSurfaceLICInterface(publicAPI, model);
593
600
  } // ----------------------------------------------------------------------------
@@ -104,7 +104,7 @@ function vtkOpenGLSurfaceLICMapper(publicAPI, model) {
104
104
  publicAPI.renderPiece = function (ren, actor) {
105
105
  var canDrawLIC = true; // Check for gl compatibility
106
106
 
107
- var gl2 = model.openGLRenderWindow.getWebgl2();
107
+ var gl2 = model._openGLRenderWindow.getWebgl2();
108
108
 
109
109
  if (!gl2) {
110
110
  vtkErrorMacro('SurfaceLICMapper Requires WebGL 2');
@@ -171,21 +171,24 @@ function vtkOpenGLSurfaceLICMapper(publicAPI, model) {
171
171
  var frontfaceCulling = actor.getProperty().getFrontfaceCulling();
172
172
 
173
173
  if (!backfaceCulling && !frontfaceCulling) {
174
- model.openGLRenderWindow.disableCullFace();
174
+ model._openGLRenderWindow.disableCullFace();
175
175
  } else if (frontfaceCulling) {
176
- model.openGLRenderWindow.enableCullFace();
176
+ model._openGLRenderWindow.enableCullFace();
177
+
177
178
  gl.cullFace(gl.FRONT);
178
179
  } else {
179
- model.openGLRenderWindow.enableCullFace();
180
+ model._openGLRenderWindow.enableCullFace();
181
+
180
182
  gl.cullFace(gl.BACK);
181
183
  }
182
184
 
183
- var windowSize = model.openGLRenderWindow.getSize();
185
+ var windowSize = model._openGLRenderWindow.getSize();
186
+
184
187
  var size = windowSize.map(function (i) {
185
188
  return Math.round(i * licInterface.getViewPortScale());
186
189
  });
187
190
  model.openGLLicInterface.setSize(size);
188
- model.openGLLicInterface.setOpenGLRenderWindow(model.openGLRenderWindow);
191
+ model.openGLLicInterface.setOpenGLRenderWindow(model._openGLRenderWindow);
189
192
  model.openGLLicInterface.setContext(model.context); // Pre-render
190
193
 
191
194
  publicAPI.pushState(model.context);