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 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529
|
/*=========================================================================
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;
}
|