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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
package vtk.test;
/*=========================================================================
Program: Visualization Toolkit
Module: Regression.java
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
import javax.swing.SwingUtilities;
import vtk.vtkActor;
import vtk.vtkConeSource;
import vtk.vtkImageData;
import vtk.vtkImageDifference;
import vtk.vtkJavaTesting;
import vtk.vtkObject;
import vtk.vtkPNGWriter;
import vtk.vtkPolyDataMapper;
import vtk.vtkRenderWindow;
import vtk.vtkRenderWindowInteractor;
import vtk.vtkRenderer;
import vtk.vtkShortArray;
import vtk.vtkUnsignedCharArray;
import vtk.vtkUnsignedShortArray;
import vtk.vtkWindowToImageFilter;
public class Regression {
public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
vtkJavaTesting.Initialize(args, true);
vtkShortArray array = new vtkShortArray();
array.InsertNextTuple1(3.0);
array.InsertNextTuple1(1.0);
array.InsertNextTuple1(4.0);
array.InsertNextTuple1(1.0);
array.InsertNextTuple1(5.0);
array.InsertNextTuple1(9.0);
array.InsertNextTuple1(2.0);
array.InsertNextTuple1(6.0);
array.InsertNextTuple1(5.0);
array.InsertNextTuple1(3.0);
array.InsertNextTuple1(5.0);
array.InsertNextTuple1(8.0);
array.InsertNextTuple1(9.0);
array.InsertNextTuple1(7.0);
array.InsertNextTuple1(9.0);
array.InsertNextTuple1(3.0);
array.InsertNextTuple1(1.0);
short[] carray = array.GetJavaArray();
int cc;
System.out.print("[");
for (cc = 0; cc < carray.length; cc++) {
short i = carray[cc];
System.out.print(i);
}
System.out.println("]");
vtkUnsignedShortArray narray = new vtkUnsignedShortArray();
narray.SetJavaArray(carray);
System.out.print("[");
for (cc = 0; cc <= narray.GetMaxId(); cc++) {
int i = narray.GetValue(cc);
System.out.print(i);
}
System.out.println("]");
vtkRenderWindow renWin = new vtkRenderWindow();
vtkRenderer ren1 = new vtkRenderer();
renWin.AddRenderer(ren1);
vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
iren.SetRenderWindow(renWin);
vtkConeSource cone = new vtkConeSource();
cone.SetResolution(8);
vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();
coneMapper.SetInputConnection(cone.GetOutputPort());
vtkActor coneActor = new vtkActor();
coneActor.SetMapper(coneMapper);
ren1.AddActor(coneActor);
renWin.Render();
vtkWindowToImageFilter w2i = new vtkWindowToImageFilter();
w2i.SetInput(renWin);
w2i.Modified();
renWin.Render();
w2i.Update();
vtkImageData image = w2i.GetOutput();
vtkUnsignedCharArray da = (vtkUnsignedCharArray) image.GetPointData().GetScalars();
byte[] barray = da.GetJavaArray();
System.out.println("Length of array: " + barray.length);
vtkUnsignedCharArray nda = new vtkUnsignedCharArray();
nda.SetJavaArray(barray);
vtkImageData nimage = new vtkImageData();
nimage.SetDimensions(image.GetDimensions());
nimage.SetSpacing(image.GetSpacing());
nimage.SetOrigin(image.GetOrigin());
nimage.AllocateScalars(image.GetScalarType(), image.GetNumberOfScalarComponents());
vtkUnsignedCharArray nida = (vtkUnsignedCharArray) nimage.GetPointData().GetScalars();
nida.SetJavaArray(barray);
int retVal0 = vtkJavaTesting.PASSED;
for (cc = 0; cc <= da.GetMaxId(); cc++) {
int v1 = 0, v2 = 0, v3 = 0;
v1 = da.GetValue(cc);
if (cc <= nda.GetMaxId()) {
v2 = nda.GetValue(cc);
} else {
System.out.println("Cannot find point " + cc + " in nda");
retVal0 = vtkJavaTesting.FAILED;
}
if (cc <= nida.GetMaxId()) {
v3 = nida.GetValue(cc);
} else {
System.out.println("Cannot find point " + cc + " in nida");
retVal0 = vtkJavaTesting.FAILED;
}
if (v1 != v2 || v1 != v3) {
System.out.println("Wrong point: " + v1 + " <> " + v2 + " <> " + v3);
retVal0 = vtkJavaTesting.FAILED;
}
}
vtkImageDifference imgDiff = new vtkImageDifference();
imgDiff.SetInputData(nimage);
imgDiff.SetImageConnection(w2i.GetOutputPort());
imgDiff.Update();
int retVal1 = vtkJavaTesting.PASSED;
if (imgDiff.GetThresholdedError() != 0) {
System.out.println("Problem with array conversion. Image difference is: " + imgDiff.GetThresholdedError());
vtkPNGWriter wr = new vtkPNGWriter();
wr.SetInputConnection(w2i.GetOutputPort());
wr.SetFileName("im1.png");
wr.Write();
wr.SetInputData(nimage);
wr.SetFileName("im2.png");
wr.Write();
wr.SetInputConnection(imgDiff.GetOutputPort());
wr.SetFileName("diff.png");
wr.Write();
retVal1 = vtkJavaTesting.FAILED;
}
int retVal2 = vtkJavaTesting.PASSED;
if (vtkJavaTesting.IsInteractive()) {
iren.Start();
} else {
retVal2 = vtkJavaTesting.RegressionTest(renWin, 10);
}
vtkObject.JAVA_OBJECT_MANAGER.deleteAll();
if (retVal0 != vtkJavaTesting.PASSED) {
vtkJavaTesting.Exit(retVal0);
}
if (retVal1 != vtkJavaTesting.PASSED) {
vtkJavaTesting.Exit(retVal1);
}
vtkJavaTesting.Exit(retVal2);
}
});
}
}
|