/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: ImagePlaneWidget.cxx,v $ 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. =========================================================================*/ #include "vtkActor.h" #include "vtkCamera.h" #include "vtkCellPicker.h" #include "vtkCommand.h" #include "vtkImageActor.h" #include "vtkImageMapToColors.h" #include "vtkImagePlaneWidget.h" #include "vtkImageReader.h" #include "vtkInteractorEventRecorder.h" #include "vtkLookupTable.h" #include "vtkOutlineFilter.h" #include "vtkPolyDataMapper.h" #include "vtkProperty.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkVolume16Reader.h" #include "vtkImageData.h" #include "vtkTestUtilities.h" #include "vtkRegressionTestImage.h" #include "vtkDebugLeaks.h" char IPWeventLog[] = "# StreamVersion 1\n" "CharEvent 179 195 0 0 98 1 i\n" "MiddleButtonPressEvent 179 195 0 0 0 0 i\n" "MouseMoveEvent 179 190 0 0 0 0 i\n" "MouseMoveEvent 179 185 0 0 0 0 i\n" "MouseMoveEvent 179 180 0 0 0 0 i\n" "MouseMoveEvent 179 175 0 0 0 0 i\n" "MouseMoveEvent 179 170 0 0 0 0 i\n" "MouseMoveEvent 179 165 0 0 0 0 i\n" "MouseMoveEvent 179 160 0 0 0 0 i\n" "MouseMoveEvent 179 155 0 0 0 0 i\n" "MouseMoveEvent 179 150 0 0 0 0 i\n" "MouseMoveEvent 179 145 0 0 0 0 i\n" "MouseMoveEvent 179 140 0 0 0 0 i\n" "MouseMoveEvent 179 135 0 0 0 0 i\n" "MiddleButtonReleaseEvent 179 135 0 0 0 0 i\n" "RightButtonPressEvent 179 135 0 0 0 0 i\n" "MouseMoveEvent 180 135 0 0 0 0 i\n" "MouseMoveEvent 180 140 0 0 0 0 i\n" "MouseMoveEvent 180 145 0 0 0 0 i\n" "MouseMoveEvent 180 150 0 0 0 0 i\n" "MouseMoveEvent 180 155 0 0 0 0 i\n" "MouseMoveEvent 181 160 0 0 0 0 i\n" "MouseMoveEvent 181 165 0 0 0 0 i\n" "MouseMoveEvent 181 170 0 0 0 0 i\n" "MouseMoveEvent 181 175 0 0 0 0 i\n" "MouseMoveEvent 181 180 0 0 0 0 i\n" "MouseMoveEvent 181 185 0 0 0 0 i\n" "MouseMoveEvent 181 190 0 0 0 0 i\n" "MouseMoveEvent 181 195 0 0 0 0 i\n" "MouseMoveEvent 181 200 0 0 0 0 i\n" "MouseMoveEvent 180 207 0 0 0 0 i\n" "MouseMoveEvent 175 207 0 0 0 0 i\n" "MouseMoveEvent 170 207 0 0 0 0 i\n" "MouseMoveEvent 165 207 0 0 0 0 i\n" "MouseMoveEvent 160 207 0 0 0 0 i\n" "MouseMoveEvent 155 209 0 0 0 0 i\n" "MouseMoveEvent 150 209 0 0 0 0 i\n" "MouseMoveEvent 145 210 0 0 0 0 i\n" "MouseMoveEvent 140 211 0 0 0 0 i\n" "MouseMoveEvent 135 213 0 0 0 0 i\n" "MouseMoveEvent 130 214 0 0 0 0 i\n" "MouseMoveEvent 125 215 0 0 0 0 i\n" "MouseMoveEvent 120 216 0 0 0 0 i\n" "MouseMoveEvent 115 216 0 0 0 0 i\n" "MouseMoveEvent 110 217 0 0 0 0 i\n" "MouseMoveEvent 106 218 0 0 0 0 i\n" "RightButtonReleaseEvent 106 218 0 0 0 0 i\n" "LeftButtonPressEvent 106 218 0 0 0 0 i\n" "MouseMoveEvent 107 219 0 0 0 0 i\n" "MouseMoveEvent 110 218 0 0 0 0 i\n" "MouseMoveEvent 114 216 0 0 0 0 i\n" "MouseMoveEvent 118 214 0 0 0 0 i\n" "MouseMoveEvent 123 213 0 0 0 0 i\n" "MouseMoveEvent 128 212 0 0 0 0 i\n" "MouseMoveEvent 132 210 0 0 0 0 i\n" "MouseMoveEvent 138 207 0 0 0 0 i\n" "MouseMoveEvent 144 205 0 0 0 0 i\n" "MouseMoveEvent 150 203 0 0 0 0 i\n" "MouseMoveEvent 157 201 0 0 0 0 i\n" "MouseMoveEvent 164 200 0 0 0 0 i\n" "MouseMoveEvent 168 198 0 0 0 0 i\n" "MouseMoveEvent 176 196 0 0 0 0 i\n" "MouseMoveEvent 183 194 0 0 0 0 i\n" "MouseMoveEvent 190 192 0 0 0 0 i\n" "MouseMoveEvent 197 190 0 0 0 0 i\n" "MouseMoveEvent 199 189 0 0 0 0 i\n" "MouseMoveEvent 204 189 0 0 0 0 i\n" "MouseMoveEvent 206 189 0 0 0 0 i\n" "MouseMoveEvent 209 188 0 0 0 0 i\n" "MouseMoveEvent 211 187 0 0 0 0 i\n" "LeftButtonReleaseEvent 211 187 0 0 0 0 i\n" "MouseMoveEvent 259 183 0 0 0 0 i\n" "KeyPressEvent 259 183 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 259 183 8 0 0 0 Control_L\n" "MouseMoveEvent 261 183 8 0 0 0 Control_L\n" "MouseMoveEvent 263 182 8 0 0 0 Control_L\n" "MouseMoveEvent 266 181 8 0 0 0 Control_L\n" "MouseMoveEvent 268 180 8 0 0 0 Control_L\n" "MouseMoveEvent 270 179 8 0 0 0 Control_L\n" "MouseMoveEvent 273 178 8 0 0 0 Control_L\n" "MouseMoveEvent 276 177 8 0 0 0 Control_L\n" "MouseMoveEvent 279 176 8 0 0 0 Control_L\n" "MouseMoveEvent 282 175 8 0 0 0 Control_L\n" "MouseMoveEvent 287 174 8 0 0 0 Control_L\n" "MouseMoveEvent 286 173 8 0 0 0 Control_L\n" "MouseMoveEvent 284 173 8 0 0 0 Control_L\n" "MouseMoveEvent 281 174 8 0 0 0 Control_L\n" "MouseMoveEvent 277 175 8 0 0 0 Control_L\n" "MouseMoveEvent 274 176 8 0 0 0 Control_L\n" "MouseMoveEvent 269 177 8 0 0 0 Control_L\n" "MouseMoveEvent 267 177 8 0 0 0 Control_L\n" "KeyReleaseEvent 267 177 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 267 177 0 0 0 0 Control_L\n" "MouseMoveEvent 240 229 0 0 0 0 Control_L\n" "KeyPressEvent 240 229 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 240 229 8 0 0 0 Control_L\n" "MouseMoveEvent 240 230 8 0 0 0 Control_L\n" "MouseMoveEvent 240 235 8 0 0 0 Control_L\n" "MouseMoveEvent 240 240 8 0 0 0 Control_L\n" "MouseMoveEvent 240 245 8 0 0 0 Control_L\n" "MouseMoveEvent 240 250 8 0 0 0 Control_L\n" "MouseMoveEvent 241 255 8 0 0 0 Control_L\n" "MouseMoveEvent 242 260 8 0 0 0 Control_L\n" "MouseMoveEvent 242 265 8 0 0 0 Control_L\n" "MouseMoveEvent 242 260 8 0 0 0 Control_L\n" "MouseMoveEvent 242 255 8 0 0 0 Control_L\n" "MouseMoveEvent 242 250 8 0 0 0 Control_L\n" "MouseMoveEvent 242 245 8 0 0 0 Control_L\n" "MouseMoveEvent 242 240 8 0 0 0 Control_L\n" "MouseMoveEvent 241 238 8 0 0 0 Control_L\n" "KeyReleaseEvent 241 238 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 241 238 0 0 0 0 Control_L\n" "MouseMoveEvent 103 250 0 0 0 0 Control_L\n" "KeyPressEvent 103 250 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 103 250 8 0 0 0 Control_L\n" "MouseMoveEvent 100 250 8 0 0 0 Control_L\n" "MouseMoveEvent 97 251 8 0 0 0 Control_L\n" "MouseMoveEvent 94 251 8 0 0 0 Control_L\n" "MouseMoveEvent 91 252 8 0 0 0 Control_L\n" "MouseMoveEvent 90 253 8 0 0 0 Control_L\n" "MouseMoveEvent 85 253 8 0 0 0 Control_L\n" "MouseMoveEvent 80 253 8 0 0 0 Control_L\n" "MouseMoveEvent 85 253 8 0 0 0 Control_L\n" "KeyReleaseEvent 85 253 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 85 253 0 0 0 0 Control_L\n" "MouseMoveEvent 228 88 0 0 0 0 Control_L\n" "KeyPressEvent 228 88 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 228 88 8 0 0 0 Control_L\n" "MouseMoveEvent 228 86 8 0 0 0 Control_L\n" "MouseMoveEvent 227 83 8 0 0 0 Control_L\n" "MouseMoveEvent 226 83 8 0 0 0 Control_L\n" "MouseMoveEvent 225 80 8 0 0 0 Control_L\n" "MouseMoveEvent 225 75 8 0 0 0 Control_L\n" "MouseMoveEvent 224 70 8 0 0 0 Control_L\n" "MouseMoveEvent 223 70 8 0 0 0 Control_L\n" "MouseMoveEvent 223 75 8 0 0 0 Control_L\n" "MouseMoveEvent 222 80 8 0 0 0 Control_L\n" "MouseMoveEvent 222 85 8 0 0 0 Control_L\n" "MouseMoveEvent 222 90 8 0 0 0 Control_L\n" "KeyReleaseEvent 222 93 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 222 93 0 0 0 0 Control_L\n" "MouseMoveEvent 260 76 0 0 0 0 Control_L\n" "KeyPressEvent 260 76 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 260 76 8 0 0 0 Control_L\n" "MouseMoveEvent 260 75 8 0 0 0 Control_L\n" "MouseMoveEvent 261 72 8 0 0 0 Control_L\n" "MouseMoveEvent 262 69 8 0 0 0 Control_L\n" "MouseMoveEvent 263 67 8 0 0 0 Control_L\n" "MouseMoveEvent 263 65 8 0 0 0 Control_L\n" "MouseMoveEvent 264 63 8 0 0 0 Control_L\n" "MouseMoveEvent 265 61 8 0 0 0 Control_L\n" "MouseMoveEvent 266 60 8 0 0 0 Control_L\n" "MouseMoveEvent 266 55 8 0 0 0 Control_L\n" "MouseMoveEvent 267 53 8 0 0 0 Control_L\n" "KeyReleaseEvent 267 53 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 267 53 0 0 0 0 Control_L\n" "MouseMoveEvent 278 226 0 0 0 0 Control_L\n" "KeyPressEvent 278 226 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 278 226 8 0 0 0 Control_L\n" "MouseMoveEvent 278 227 8 0 0 0 Control_L\n" "MouseMoveEvent 278 230 8 0 0 0 Control_L\n" "MouseMoveEvent 280 232 8 0 0 0 Control_L\n" "MouseMoveEvent 282 234 8 0 0 0 Control_L\n" "MouseMoveEvent 284 237 8 0 0 0 Control_L\n" "MouseMoveEvent 286 239 8 0 0 0 Control_L\n" "MouseMoveEvent 287 242 8 0 0 0 Control_L\n" "MouseMoveEvent 290 245 8 0 0 0 Control_L\n" "MouseMoveEvent 292 247 8 0 0 0 Control_L\n" "MouseMoveEvent 293 249 8 0 0 0 Control_L\n" "KeyReleaseEvent 283 249 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 293 249 0 0 0 0 Control_L\n" "MouseMoveEvent 93 286 0 0 0 0 Control_L\n" "KeyPressEvent 93 286 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 93 286 8 0 0 0 Control_L\n" "MouseMoveEvent 92 288 8 0 0 0 Control_L\n" "MouseMoveEvent 90 290 8 0 0 0 Control_L\n" "MouseMoveEvent 87 292 8 0 0 0 Control_L\n" "MouseMoveEvent 84 295 8 0 0 0 Control_L\n" "MouseMoveEvent 82 297 8 0 0 0 Control_L\n" "MouseMoveEvent 80 298 8 0 0 0 Control_L\n" "MouseMoveEvent 78 300 8 0 0 0 Control_L\n" "KeyReleaseEvent 78 300 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 78 300 0 0 0 0 Control_L\n" "MouseMoveEvent 198 194 0 0 0 0 Control_L\n" "KeyPressEvent 198 194 -128 0 0 1 Control_L\n" "MiddleButtonPressEvent 198 194 8 0 0 0 Control_L\n" "MouseMoveEvent 196 194 8 0 0 0 Control_L\n" "MouseMoveEvent 191 192 8 0 0 0 Control_L\n" "MouseMoveEvent 185 189 8 0 0 0 Control_L\n" "MouseMoveEvent 182 187 8 0 0 0 Control_L\n" "MouseMoveEvent 180 186 8 0 0 0 Control_L\n" "MouseMoveEvent 178 185 8 0 0 0 Control_L\n" "MouseMoveEvent 177 180 8 0 0 0 Control_L\n" "MouseMoveEvent 178 179 8 0 0 0 Control_L\n" "MouseMoveEvent 179 178 8 0 0 0 Control_L\n" "MouseMoveEvent 179 177 8 0 0 0 Control_L\n" "MouseMoveEvent 182 176 8 0 0 0 Control_L\n" "MouseMoveEvent 187 175 8 0 0 0 Control_L\n" "MouseMoveEvent 190 177 8 0 0 0 Control_L\n" "MouseMoveEvent 190 179 8 0 0 0 Control_L\n" "KeyReleaseEvent 190 179 0 0 0 1 Control_L\n" "MiddleButtonReleaseEvent 190 179 0 0 0 0 Control_L\n" "KeyPressEvent 190 179 0 -128 0 1 Shift_L\n" "MiddleButtonPressEvent 190 179 0 4 0 0 Shift_L\n" "MouseMoveEvent 190 180 0 4 0 0 Shift_L\n" "MouseMoveEvent 190 185 0 4 0 0 Shift_L\n" "MouseMoveEvent 190 190 0 4 0 0 Shift_L\n" "MouseMoveEvent 191 194 0 4 0 0 Shift_L\n" "MouseMoveEvent 192 200 0 4 0 0 Shift_L\n" "MouseMoveEvent 192 206 0 4 0 0 Shift_L\n" "MouseMoveEvent 193 213 0 4 0 0 Shift_L\n" "MouseMoveEvent 193 209 0 4 0 0 Shift_L\n" "MouseMoveEvent 193 206 0 4 0 0 Shift_L\n" "MouseMoveEvent 193 200 0 4 0 0 Shift_L\n" "MouseMoveEvent 193 196 0 4 0 0 Shift_L\n" "MouseMoveEvent 193 190 0 4 0 0 Shift_L\n" "MouseMoveEvent 194 185 0 4 0 0 Shift_L\n" "MouseMoveEvent 196 180 0 4 0 0 Shift_L\n" "MouseMoveEvent 197 175 0 4 0 0 Shift_L\n" "MouseMoveEvent 198 172 0 4 0 0 Shift_L\n" "KeyReleaseEvent 198 172 0 0 0 1 Shift_L\n" "MiddleButtonReleaseEvent 198 172 0 0 0 0 Shift_L\n" "MouseMoveEvent 267 172 0 0 0 0 Shift_L\n" "MiddleButtonPressEvent 267 172 0 0 0 0 Shift_L\n" "MouseMoveEvent 264 171 0 0 0 0 Shift_L\n" "MouseMoveEvent 260 171 0 0 0 0 Shift_L\n" "MouseMoveEvent 255 171 0 0 0 0 Shift_L\n" "MouseMoveEvent 250 171 0 0 0 0 Shift_L\n" "MouseMoveEvent 245 172 0 0 0 0 Shift_L\n" "MiddleButtonReleaseEvent 245 172 0 0 0 0 Shift_L\n" "MouseMoveEvent 203 65 0 0 0 0 Shift_L\n" "MiddleButtonPressEvent 203 65 0 0 0 0 Shift_L\n" "MouseMoveEvent 200 65 0 0 0 0 Shift_L\n" "MouseMoveEvent 195 66 0 0 0 0 Shift_L\n" "MouseMoveEvent 193 67 0 0 0 0 Shift_L\n" "MouseMoveEvent 190 68 0 0 0 0 Shift_L\n" "MouseMoveEvent 184 71 0 0 0 0 Shift_L\n" "MouseMoveEvent 180 73 0 0 0 0 Shift_L\n" "MouseMoveEvent 178 74 0 0 0 0 Shift_L\n" "MouseMoveEvent 176 75 0 0 0 0 Shift_L\n" "MouseMoveEvent 175 76 0 0 0 0 Shift_L\n" "MouseMoveEvent 174 77 0 0 0 0 Shift_L\n" "MouseMoveEvent 173 78 0 0 0 0 Shift_L\n" "MouseMoveEvent 172 79 0 0 0 0 Shift_L\n" "MouseMoveEvent 170 80 0 0 0 0 Shift_L\n" "MouseMoveEvent 169 81 0 0 0 0 Shift_L\n" "MouseMoveEvent 168 82 0 0 0 0 Shift_L\n" "MouseMoveEvent 167 83 0 0 0 0 Shift_L\n" "MouseMoveEvent 166 84 0 0 0 0 Shift_L\n" "MouseMoveEvent 164 84 0 0 0 0 Shift_L\n" "MouseMoveEvent 163 85 0 0 0 0 Shift_L\n" "MouseMoveEvent 162 86 0 0 0 0 Shift_L\n" "MouseMoveEvent 160 86 0 0 0 0 Shift_L\n" "MouseMoveEvent 158 87 0 0 0 0 Shift_L\n" "MiddleButtonReleaseEvent 158 87 0 0 0 0 Shift_L\n" "MouseMoveEvent 95 251 0 0 0 0 Shift_L\n" "MiddleButtonPressEvent 95 251 0 0 0 0 Shift_L\n" "MouseMoveEvent 90 251 0 0 0 0 Shift_L\n" "MouseMoveEvent 85 252 0 0 0 0 Shift_L\n" "MouseMoveEvent 80 252 0 0 0 0 Shift_L\n" "MouseMoveEvent 75 252 0 0 0 0 Shift_L\n" "MouseMoveEvent 70 252 0 0 0 0 Shift_L\n" "MouseMoveEvent 65 251 0 0 0 0 Shift_L\n" "MiddleButtonReleaseEvent 65 251 0 0 0 0 Shift_L\n" "MouseMoveEvent 133 281 0 0 0 0 Shift_L\n" "MiddleButtonPressEvent 133 281 0 0 0 0 Shift_L\n" "MouseMoveEvent 130 280 0 0 0 0 Shift_L\n" "MouseMoveEvent 125 277 0 0 0 0 Shift_L\n" "MouseMoveEvent 120 274 0 0 0 0 Shift_L\n" "MouseMoveEvent 115 270 0 0 0 0 Shift_L\n" "MouseMoveEvent 113 267 0 0 0 0 Shift_L\n" "MouseMoveEvent 110 265 0 0 0 0 Shift_L\n" "MiddleButtonReleaseEvent 110 265 0 0 0 0 Shift_L\n" "MouseMoveEvent 99 286 0 0 0 0 Shift_L\n" "MiddleButtonPressEvent 99 286 0 0 0 0 Shift_L\n" "MouseMoveEvent 100 287 0 0 0 0 Shift_L\n" "MouseMoveEvent 105 289 0 0 0 0 Shift_L\n" "MouseMoveEvent 110 290 0 0 0 0 Shift_L\n" "MouseMoveEvent 115 290 0 0 0 0 Shift_L\n" "MouseMoveEvent 120 290 0 0 0 0 Shift_L\n" "MouseMoveEvent 125 285 0 0 0 0 Shift_L\n" "MouseMoveEvent 129 281 0 0 0 0 Shift_L\n" "MouseMoveEvent 130 279 0 0 0 0 Shift_L\n" "MouseMoveEvent 128 281 0 0 0 0 Shift_L\n" "MouseMoveEvent 126 282 0 0 0 0 Shift_L\n" "MouseMoveEvent 123 283 0 0 0 0 Shift_L\n" "MouseMoveEvent 120 284 0 0 0 0 Shift_L\n" "MouseMoveEvent 115 285 0 0 0 0 Shift_L\n" "MouseMoveEvent 110 286 0 0 0 0 Shift_L\n" "MouseMoveEvent 106 286 0 0 0 0 Shift_L\n" "MouseMoveEvent 102 286 0 0 0 0 Shift_L\n" "MouseMoveEvent 99 285 0 0 0 0 Shift_L\n" "MouseMoveEvent 95 283 0 0 0 0 Shift_L\n" "MouseMoveEvent 92 281 0 0 0 0 Shift_L\n" "MouseMoveEvent 89 279 0 0 0 0 Shift_L\n" "MouseMoveEvent 88 276 0 0 0 0 Shift_L\n" "MouseMoveEvent 86 274 0 0 0 0 Shift_L\n" "MiddleButtonReleaseEvent 86 274 0 0 0 0 Shift_L\n" ; int ImagePlaneWidget( int argc, char *argv[] ) { char* fname = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/headsq/quarter"); vtkVolume16Reader* v16 = vtkVolume16Reader::New(); v16->SetDataDimensions( 64, 64); v16->SetDataByteOrderToLittleEndian(); v16->SetImageRange( 1, 93); v16->SetDataSpacing( 3.2, 3.2, 1.5); v16->SetFilePrefix( fname ); v16->SetDataMask( 0x7fff); v16->Update(); delete[] fname; vtkOutlineFilter* outline = vtkOutlineFilter::New(); outline->SetInputConnection(v16->GetOutputPort()); vtkPolyDataMapper* outlineMapper = vtkPolyDataMapper::New(); outlineMapper->SetInputConnection(outline->GetOutputPort()); vtkActor* outlineActor = vtkActor::New(); outlineActor->SetMapper( outlineMapper); vtkRenderer* ren1 = vtkRenderer::New(); vtkRenderer* ren2 = vtkRenderer::New(); vtkRenderWindow* renWin = vtkRenderWindow::New(); renWin->AddRenderer(ren2); renWin->AddRenderer(ren1); vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); vtkCellPicker* picker = vtkCellPicker::New(); picker->SetTolerance(0.005); vtkProperty* ipwProp = vtkProperty::New(); //assign default props to the ipw's texture plane actor vtkImagePlaneWidget* planeWidgetX = vtkImagePlaneWidget::New(); planeWidgetX->SetInteractor( iren); planeWidgetX->SetKeyPressActivationValue('x'); planeWidgetX->SetPicker(picker); planeWidgetX->RestrictPlaneToVolumeOn(); planeWidgetX->GetPlaneProperty()->SetColor(1,0,0); planeWidgetX->SetTexturePlaneProperty(ipwProp); planeWidgetX->TextureInterpolateOff(); planeWidgetX->SetResliceInterpolateToNearestNeighbour(); planeWidgetX->SetInput(v16->GetOutput()); planeWidgetX->SetPlaneOrientationToXAxes(); planeWidgetX->SetSliceIndex(32); planeWidgetX->DisplayTextOn(); planeWidgetX->On(); planeWidgetX->InteractionOff(); planeWidgetX->InteractionOn(); vtkImagePlaneWidget* planeWidgetY = vtkImagePlaneWidget::New(); planeWidgetY->SetInteractor( iren); planeWidgetY->SetKeyPressActivationValue('y'); planeWidgetY->SetPicker(picker); planeWidgetY->GetPlaneProperty()->SetColor(1,1,0); planeWidgetY->SetTexturePlaneProperty(ipwProp); planeWidgetY->TextureInterpolateOn(); planeWidgetY->SetResliceInterpolateToLinear(); planeWidgetY->SetInput(v16->GetOutput()); planeWidgetY->SetPlaneOrientationToYAxes(); planeWidgetY->SetSlicePosition(102.4); planeWidgetY->SetLookupTable( planeWidgetX->GetLookupTable()); planeWidgetY->DisplayTextOff(); planeWidgetY->UpdatePlacement(); planeWidgetY->On(); vtkImagePlaneWidget* planeWidgetZ = vtkImagePlaneWidget::New(); planeWidgetZ->SetInteractor( iren); planeWidgetZ->SetKeyPressActivationValue('z'); planeWidgetZ->SetPicker(picker); planeWidgetZ->GetPlaneProperty()->SetColor(0,0,1); planeWidgetZ->SetTexturePlaneProperty(ipwProp); planeWidgetZ->TextureInterpolateOn(); planeWidgetZ->SetResliceInterpolateToCubic(); planeWidgetZ->SetInput(v16->GetOutput()); planeWidgetZ->SetPlaneOrientationToZAxes(); planeWidgetZ->SetSliceIndex(25); planeWidgetZ->SetLookupTable( planeWidgetX->GetLookupTable()); planeWidgetZ->DisplayTextOn(); planeWidgetZ->On(); double wl[2]; planeWidgetZ->GetWindowLevel(wl); // Add a 2D image to test the GetReslice method // vtkImageMapToColors* colorMap = vtkImageMapToColors::New(); colorMap->PassAlphaToOutputOff(); colorMap->SetActiveComponent(0); colorMap->SetOutputFormatToLuminance(); colorMap->SetInput(planeWidgetZ->GetResliceOutput()); colorMap->SetLookupTable(planeWidgetX->GetLookupTable()); vtkImageActor* imageActor = vtkImageActor::New(); imageActor->PickableOff(); imageActor->SetInput(colorMap->GetOutput()); // Add the actors // ren1->AddActor( outlineActor); ren2->AddActor( imageActor); ren1->SetBackground( 0.1, 0.1, 0.2); ren2->SetBackground( 0.2, 0.1, 0.2); renWin->SetSize( 600, 350); ren1->SetViewport(0,0,0.58333,1); ren2->SetViewport(0.58333,0,1,1); // Set the actors' postions // renWin->Render(); iren->SetEventPosition( 175,175); iren->SetKeyCode('r'); iren->InvokeEvent(vtkCommand::CharEvent,NULL); iren->SetEventPosition( 475,175); iren->SetKeyCode('r'); iren->InvokeEvent(vtkCommand::CharEvent,NULL); renWin->Render(); ren1->GetActiveCamera()->Elevation(110); ren1->GetActiveCamera()->SetViewUp(0, 0, -1); ren1->GetActiveCamera()->Azimuth(45); ren1->GetActiveCamera()->Dolly(1.15); ren1->ResetCameraClippingRange(); // Playback recorded events // vtkInteractorEventRecorder *recorder = vtkInteractorEventRecorder::New(); recorder->SetInteractor(iren); recorder->ReadFromInputStringOn(); recorder->SetInputString(IPWeventLog); // Interact with data // Render the image // iren->Initialize(); renWin->Render(); // Test SetKeyPressActivationValue for one of the widgets // iren->SetKeyCode('z'); iren->InvokeEvent(vtkCommand::CharEvent,NULL); iren->SetKeyCode('z'); iren->InvokeEvent(vtkCommand::CharEvent,NULL); recorder->Play(); // Remove the observers so we can go interactive. Without this the "-I" // testing option fails. recorder->Off(); int retVal = vtkRegressionTestImage( renWin ); if ( retVal == vtkRegressionTester::DO_INTERACTOR) { iren->Start(); } // Clean up // recorder->Off(); recorder->Delete(); ipwProp->Delete(); planeWidgetX->Delete(); planeWidgetY->Delete(); planeWidgetZ->Delete(); colorMap->Delete(); imageActor->Delete(); picker->Delete(); outlineActor->Delete(); outlineMapper->Delete(); outline->Delete(); iren->Delete(); renWin->Delete(); ren1->Delete(); ren2->Delete(); v16->Delete(); return !retVal; }