forked from Kitware/vtk-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
testMultipleBonds.js
76 lines (60 loc) · 3.46 KB
/
testMultipleBonds.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import test from 'tape-catch';
import testUtils from 'vtk.js/Sources/Testing/testUtils';
import vtkActor from 'vtk.js/Sources/Rendering/Core/Actor';
import vtkMolecule from 'vtk.js/Sources/Common/DataModel/Molecule';
import vtkMoleculeToRepresentation from 'vtk.js/Sources/Filters/General/MoleculeToRepresentation';
import vtkSphereMapper from 'vtk.js/Sources/Rendering/Core/SphereMapper';
import vtkStickMapper from 'vtk.js/Sources/Rendering/Core/StickMapper';
import vtkRenderer from 'vtk.js/Sources/Rendering/Core/Renderer';
import vtkRenderWindow from 'vtk.js/Sources/Rendering/Core/RenderWindow';
import vtkOpenGLRenderWindow from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow';
import testMolecule from 'vtk.js/Data/molecule/test-multiple-bonds.cjson';
import baseline from './testMolecule_multiple_bonds.png';
test.onlyIfWebGL('Test MultipleBonds', (t) => {
const gc = testUtils.createGarbageCollector(t);
t.ok('Filter: MoleculeToRepresentation');
// Create some control UI
const container = document.querySelector('body');
const renderWindowContainer = gc.registerDOMElement(document.createElement('div'));
container.appendChild(renderWindowContainer);
// create what we will view
const renderWindow = gc.registerResource(vtkRenderWindow.newInstance());
const renderer = gc.registerResource(vtkRenderer.newInstance());
renderWindow.addRenderer(renderer);
renderer.setBackground(0.32, 0.34, 0.43);
// ----------------------------------------------------------------------------
// Test code
// ----------------------------------------------------------------------------
const molecule = gc.registerResource(vtkMolecule.newInstance(testMolecule));
const filter = gc.registerResource(vtkMoleculeToRepresentation.newInstance());
const sphereMapper = gc.registerResource(vtkSphereMapper.newInstance());
const stickMapper = gc.registerResource(vtkStickMapper.newInstance());
const sphereActor = gc.registerResource(vtkActor.newInstance());
const stickActor = gc.registerResource(vtkActor.newInstance());
filter.setInputData(molecule);
// render sphere
sphereMapper.setInputConnection(filter.getOutputPort(0));
sphereMapper.setScaleArray(filter.getSphereScaleArrayName());
sphereActor.setMapper(sphereMapper);
// render sticks
stickMapper.setInputConnection(filter.getOutputPort(1));
stickMapper.setScaleArray('stickScales');
stickMapper.setOrientationArray('orientation');
stickActor.setMapper(stickMapper);
renderer.addActor(sphereActor);
renderer.addActor(stickActor);
renderer.resetCamera();
renderWindow.render();
// -----------------------------------------------------------
// Make some variables global so that you can inspect and
// modify objects in your browser's developer console:
// -----------------------------------------------------------
// create something to view it, in this case webgl
const glwindow = gc.registerResource(vtkOpenGLRenderWindow.newInstance());
glwindow.setContainer(renderWindowContainer);
renderWindow.addView(glwindow);
glwindow.setSize(400, 400);
// capturing and comparing the images
const image = glwindow.captureImage();
testUtils.compareImages(image, [baseline], 'Filters/General/MoleculeToRepresentation/testMultipleBonds', t, 1, gc.releaseResources);
});