// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
//
// This example tests the vtkCompassWidget

#include <vtkAnnotatedCubeActor.h>
#include <vtkCamera.h>
#include <vtkCommand.h>
#include <vtkCompassRepresentation.h>
#include <vtkCompassWidget.h>
#include <vtkNew.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkTesting.h>

const char eventLog[] = "# StreamVersion 1.2\n"
                        "ExposeEvent 0 479 0 0 0 0 0\n"
                        "RenderEvent 0 479 0 0 0 0 0\n"
                        "EnterEvent 639 454 0 0 0 0 0\n"
                        "MouseMoveEvent 639 454 0 0 0 0 0\n"
                        "RenderEvent 639 454 0 0 0 0 0\n"
                        "MouseMoveEvent 638 455 0 0 0 0 0\n"
                        "RenderEvent 638 455 0 0 0 0 0\n"
                        "MouseMoveEvent 635 457 0 0 0 0 0\n"
                        "RenderEvent 635 457 0 0 0 0 0\n"
                        "MouseMoveEvent 626 460 0 0 0 0 0\n"
                        "RenderEvent 626 460 0 0 0 0 0\n"
                        "MouseMoveEvent 619 463 0 0 0 0 0\n"
                        "RenderEvent 619 463 0 0 0 0 0\n"
                        "MouseMoveEvent 617 463 0 0 0 0 0\n"
                        "RenderEvent 617 463 0 0 0 0 0\n"
                        "MouseMoveEvent 617 463 0 0 0 0 0\n"
                        "RenderEvent 617 463 0 0 0 0 0\n"
                        "MouseMoveEvent 617 462 0 0 0 0 0\n"
                        "RenderEvent 617 462 0 0 0 0 0\n"
                        "MouseMoveEvent 616 462 0 0 0 0 0\n"
                        "RenderEvent 616 462 0 0 0 0 0\n"
                        "MouseMoveEvent 616 462 0 0 0 0 0\n"
                        "RenderEvent 616 462 0 0 0 0 0\n"
                        "MouseMoveEvent 615 462 0 0 0 0 0\n"
                        "RenderEvent 615 462 0 0 0 0 0\n"
                        "MouseMoveEvent 614 462 0 0 0 0 0\n"
                        "RenderEvent 614 462 0 0 0 0 0\n"
                        "MouseMoveEvent 609 462 0 0 0 0 0\n"
                        "RenderEvent 609 462 0 0 0 0 0\n"
                        "MouseMoveEvent 605 462 0 0 0 0 0\n"
                        "RenderEvent 605 462 0 0 0 0 0\n"
                        "MouseMoveEvent 602 462 0 0 0 0 0\n"
                        "RenderEvent 602 462 0 0 0 0 0\n"
                        "MouseMoveEvent 598 463 0 0 0 0 0\n"
                        "RenderEvent 598 463 0 0 0 0 0\n"
                        "MouseMoveEvent 593 463 0 0 0 0 0\n"
                        "RenderEvent 593 463 0 0 0 0 0\n"
                        "MouseMoveEvent 592 464 0 0 0 0 0\n"
                        "RenderEvent 592 464 0 0 0 0 0\n"
                        "MouseMoveEvent 591 464 0 0 0 0 0\n"
                        "RenderEvent 591 464 0 0 0 0 0\n"
                        "MouseMoveEvent 590 465 0 0 0 0 0\n"
                        "RenderEvent 590 465 0 0 0 0 0\n"
                        "MouseMoveEvent 590 466 0 0 0 0 0\n"
                        "RenderEvent 590 466 0 0 0 0 0\n"
                        "MouseMoveEvent 590 466 0 0 0 0 0\n"
                        "RenderEvent 590 466 0 0 0 0 0\n"
                        "MouseMoveEvent 590 466 0 0 0 0 0\n"
                        "RenderEvent 590 466 0 0 0 0 0\n"
                        "MouseMoveEvent 590 467 0 0 0 0 0\n"
                        "RenderEvent 590 467 0 0 0 0 0\n"
                        "LeftButtonPressEvent 590 467 0 0 0 0 0\n"
                        "RenderEvent 590 467 0 0 0 0 0\n"
                        "TimerEvent 590 467 0 0 0 0 0\n"
                        "RenderEvent 590 467 0 0 0 0 0\n"
                        "TimerEvent 590 467 0 0 0 0 0\n"
                        "RenderEvent 590 467 0 0 0 0 0\n"
                        "MouseMoveEvent 591 467 0 0 0 0 0\n"
                        "RenderEvent 591 467 0 0 0 0 0\n"
                        "MouseMoveEvent 591 467 0 0 0 0 0\n"
                        "RenderEvent 591 467 0 0 0 0 0\n"
                        "TimerEvent 591 467 0 0 0 0 0\n"
                        "RenderEvent 591 467 0 0 0 0 0\n"
                        "MouseMoveEvent 599 466 0 0 0 0 0\n"
                        "RenderEvent 599 466 0 0 0 0 0\n"
                        "TimerEvent 599 466 0 0 0 0 0\n"
                        "RenderEvent 599 466 0 0 0 0 0\n"
                        "MouseMoveEvent 601 465 0 0 0 0 0\n"
                        "RenderEvent 601 465 0 0 0 0 0\n"
                        "TimerEvent 601 465 0 0 0 0 0\n"
                        "RenderEvent 601 465 0 0 0 0 0\n"
                        "MouseMoveEvent 604 464 0 0 0 0 0\n"
                        "RenderEvent 604 464 0 0 0 0 0\n"
                        "TimerEvent 604 464 0 0 0 0 0\n"
                        "RenderEvent 604 464 0 0 0 0 0\n"
                        "MouseMoveEvent 605 464 0 0 0 0 0\n"
                        "RenderEvent 605 464 0 0 0 0 0\n"
                        "TimerEvent 605 464 0 0 0 0 0\n"
                        "RenderEvent 605 464 0 0 0 0 0\n"
                        "MouseMoveEvent 605 464 0 0 0 0 0\n"
                        "RenderEvent 605 464 0 0 0 0 0\n"
                        "TimerEvent 605 464 0 0 0 0 0\n"
                        "RenderEvent 605 464 0 0 0 0 0\n"
                        "MouseMoveEvent 606 463 0 0 0 0 0\n"
                        "RenderEvent 606 463 0 0 0 0 0\n"
                        "TimerEvent 606 463 0 0 0 0 0\n"
                        "RenderEvent 606 463 0 0 0 0 0\n"
                        "MouseMoveEvent 608 459 0 0 0 0 0\n"
                        "RenderEvent 608 459 0 0 0 0 0\n"
                        "TimerEvent 608 459 0 0 0 0 0\n"
                        "RenderEvent 608 459 0 0 0 0 0\n"
                        "MouseMoveEvent 608 458 0 0 0 0 0\n"
                        "RenderEvent 608 458 0 0 0 0 0\n"
                        "TimerEvent 608 458 0 0 0 0 0\n"
                        "RenderEvent 608 458 0 0 0 0 0\n"
                        "MouseMoveEvent 608 458 0 0 0 0 0\n"
                        "RenderEvent 608 458 0 0 0 0 0\n"
                        "TimerEvent 608 458 0 0 0 0 0\n"
                        "RenderEvent 608 458 0 0 0 0 0\n"
                        "MouseMoveEvent 608 457 0 0 0 0 0\n"
                        "RenderEvent 608 457 0 0 0 0 0\n"
                        "TimerEvent 608 457 0 0 0 0 0\n"
                        "RenderEvent 608 457 0 0 0 0 0\n"
                        "MouseMoveEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "TimerEvent 609 455 0 0 0 0 0\n"
                        "RenderEvent 609 455 0 0 0 0 0\n"
                        "MouseMoveEvent 608 456 0 0 0 0 0\n"
                        "RenderEvent 608 456 0 0 0 0 0\n"
                        "TimerEvent 608 456 0 0 0 0 0\n"
                        "RenderEvent 608 456 0 0 0 0 0\n"
                        "MouseMoveEvent 605 459 0 0 0 0 0\n"
                        "RenderEvent 605 459 0 0 0 0 0\n"
                        "TimerEvent 605 459 0 0 0 0 0\n"
                        "RenderEvent 605 459 0 0 0 0 0\n"
                        "MouseMoveEvent 591 464 0 0 0 0 0\n"
                        "RenderEvent 591 464 0 0 0 0 0\n"
                        "TimerEvent 591 464 0 0 0 0 0\n"
                        "RenderEvent 591 464 0 0 0 0 0\n"
                        "MouseMoveEvent 575 468 0 0 0 0 0\n"
                        "RenderEvent 575 468 0 0 0 0 0\n"
                        "TimerEvent 575 468 0 0 0 0 0\n"
                        "RenderEvent 575 468 0 0 0 0 0\n"
                        "MouseMoveEvent 574 468 0 0 0 0 0\n"
                        "RenderEvent 574 468 0 0 0 0 0\n"
                        "TimerEvent 574 468 0 0 0 0 0\n"
                        "RenderEvent 574 468 0 0 0 0 0\n"
                        "MouseMoveEvent 571 468 0 0 0 0 0\n"
                        "RenderEvent 571 468 0 0 0 0 0\n"
                        "TimerEvent 571 468 0 0 0 0 0\n"
                        "RenderEvent 571 468 0 0 0 0 0\n"
                        "MouseMoveEvent 567 466 0 0 0 0 0\n"
                        "RenderEvent 567 466 0 0 0 0 0\n"
                        "TimerEvent 567 466 0 0 0 0 0\n"
                        "RenderEvent 567 466 0 0 0 0 0\n"
                        "MouseMoveEvent 558 460 0 0 0 0 0\n"
                        "RenderEvent 558 460 0 0 0 0 0\n"
                        "TimerEvent 558 460 0 0 0 0 0\n"
                        "RenderEvent 558 460 0 0 0 0 0\n"
                        "MouseMoveEvent 551 453 0 0 0 0 0\n"
                        "RenderEvent 551 453 0 0 0 0 0\n"
                        "TimerEvent 551 453 0 0 0 0 0\n"
                        "RenderEvent 551 453 0 0 0 0 0\n"
                        "MouseMoveEvent 547 445 0 0 0 0 0\n"
                        "RenderEvent 547 445 0 0 0 0 0\n"
                        "TimerEvent 547 445 0 0 0 0 0\n"
                        "RenderEvent 547 445 0 0 0 0 0\n"
                        "MouseMoveEvent 546 440 0 0 0 0 0\n"
                        "RenderEvent 546 440 0 0 0 0 0\n"
                        "TimerEvent 546 440 0 0 0 0 0\n"
                        "RenderEvent 546 440 0 0 0 0 0\n"
                        "MouseMoveEvent 546 436 0 0 0 0 0\n"
                        "RenderEvent 546 436 0 0 0 0 0\n"
                        "TimerEvent 546 436 0 0 0 0 0\n"
                        "RenderEvent 546 436 0 0 0 0 0\n"
                        "MouseMoveEvent 546 433 0 0 0 0 0\n"
                        "RenderEvent 546 433 0 0 0 0 0\n"
                        "TimerEvent 546 433 0 0 0 0 0\n"
                        "RenderEvent 546 433 0 0 0 0 0\n"
                        "MouseMoveEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "TimerEvent 547 430 0 0 0 0 0\n"
                        "RenderEvent 547 430 0 0 0 0 0\n"
                        "MouseMoveEvent 548 429 0 0 0 0 0\n"
                        "RenderEvent 548 429 0 0 0 0 0\n"
                        "MouseMoveEvent 548 428 0 0 0 0 0\n"
                        "RenderEvent 548 428 0 0 0 0 0\n"
                        "TimerEvent 548 428 0 0 0 0 0\n"
                        "RenderEvent 548 428 0 0 0 0 0\n"
                        "MouseMoveEvent 554 421 0 0 0 0 0\n"
                        "RenderEvent 554 421 0 0 0 0 0\n"
                        "TimerEvent 554 421 0 0 0 0 0\n"
                        "RenderEvent 554 421 0 0 0 0 0\n"
                        "MouseMoveEvent 557 416 0 0 0 0 0\n"
                        "RenderEvent 557 416 0 0 0 0 0\n"
                        "TimerEvent 557 416 0 0 0 0 0\n"
                        "RenderEvent 557 416 0 0 0 0 0\n"
                        "MouseMoveEvent 559 415 0 0 0 0 0\n"
                        "RenderEvent 559 415 0 0 0 0 0\n"
                        "TimerEvent 559 415 0 0 0 0 0\n"
                        "RenderEvent 559 415 0 0 0 0 0\n"
                        "MouseMoveEvent 559 414 0 0 0 0 0\n"
                        "RenderEvent 559 414 0 0 0 0 0\n"
                        "TimerEvent 559 414 0 0 0 0 0\n"
                        "RenderEvent 559 414 0 0 0 0 0\n"
                        "MouseMoveEvent 560 413 0 0 0 0 0\n"
                        "RenderEvent 560 413 0 0 0 0 0\n"
                        "TimerEvent 560 413 0 0 0 0 0\n"
                        "RenderEvent 560 413 0 0 0 0 0\n"
                        "MouseMoveEvent 560 413 0 0 0 0 0\n"
                        "RenderEvent 560 413 0 0 0 0 0\n"
                        "TimerEvent 560 413 0 0 0 0 0\n"
                        "RenderEvent 560 413 0 0 0 0 0\n"
                        "MouseMoveEvent 560 413 0 0 0 0 0\n"
                        "RenderEvent 560 413 0 0 0 0 0\n"
                        "TimerEvent 560 413 0 0 0 0 0\n"
                        "RenderEvent 560 413 0 0 0 0 0\n"
                        "MouseMoveEvent 560 412 0 0 0 0 0\n"
                        "RenderEvent 560 412 0 0 0 0 0\n"
                        "TimerEvent 560 412 0 0 0 0 0\n"
                        "RenderEvent 560 412 0 0 0 0 0\n"
                        "MouseMoveEvent 561 412 0 0 0 0 0\n"
                        "RenderEvent 561 412 0 0 0 0 0\n"
                        "TimerEvent 561 412 0 0 0 0 0\n"
                        "RenderEvent 561 412 0 0 0 0 0\n"
                        "MouseMoveEvent 562 409 0 0 0 0 0\n"
                        "RenderEvent 562 409 0 0 0 0 0\n"
                        "TimerEvent 562 409 0 0 0 0 0\n"
                        "RenderEvent 562 409 0 0 0 0 0\n"
                        "MouseMoveEvent 563 408 0 0 0 0 0\n"
                        "RenderEvent 563 408 0 0 0 0 0\n"
                        "TimerEvent 563 408 0 0 0 0 0\n"
                        "RenderEvent 563 408 0 0 0 0 0\n"
                        "MouseMoveEvent 563 406 0 0 0 0 0\n"
                        "RenderEvent 563 406 0 0 0 0 0\n"
                        "TimerEvent 563 406 0 0 0 0 0\n"
                        "RenderEvent 563 406 0 0 0 0 0\n"
                        "MouseMoveEvent 564 403 0 0 0 0 0\n"
                        "RenderEvent 564 403 0 0 0 0 0\n"
                        "TimerEvent 564 403 0 0 0 0 0\n"
                        "RenderEvent 564 403 0 0 0 0 0\n"
                        "MouseMoveEvent 564 402 0 0 0 0 0\n"
                        "RenderEvent 564 402 0 0 0 0 0\n"
                        "TimerEvent 564 402 0 0 0 0 0\n"
                        "RenderEvent 564 402 0 0 0 0 0\n"
                        "MouseMoveEvent 566 399 0 0 0 0 0\n"
                        "RenderEvent 566 399 0 0 0 0 0\n"
                        "TimerEvent 566 399 0 0 0 0 0\n"
                        "RenderEvent 566 399 0 0 0 0 0\n"
                        "MouseMoveEvent 566 398 0 0 0 0 0\n"
                        "RenderEvent 566 398 0 0 0 0 0\n"
                        "TimerEvent 566 398 0 0 0 0 0\n"
                        "RenderEvent 566 398 0 0 0 0 0\n"
                        "TimerEvent 566 398 0 0 0 0 0\n"
                        "RenderEvent 566 398 0 0 0 0 0\n"
                        "LeftButtonReleaseEvent 566 398 0 0 0 0 0\n"
                        "RenderEvent 566 398 0 0 0 0 0\n"
                        "MouseMoveEvent 566 398 0 0 0 0 0\n"
                        "RenderEvent 566 398 0 0 0 0 0\n"
                        "MouseMoveEvent 563 402 0 0 0 0 0\n"
                        "RenderEvent 563 402 0 0 0 0 0\n"
                        "MouseMoveEvent 558 411 0 0 0 0 0\n"
                        "RenderEvent 558 411 0 0 0 0 0\n"
                        "MouseMoveEvent 553 419 0 0 0 0 0\n"
                        "RenderEvent 553 419 0 0 0 0 0\n"
                        "MouseMoveEvent 550 424 0 0 0 0 0\n"
                        "RenderEvent 550 424 0 0 0 0 0\n"
                        "MouseMoveEvent 546 432 0 0 0 0 0\n"
                        "RenderEvent 546 432 0 0 0 0 0\n"
                        "MouseMoveEvent 542 437 0 0 0 0 0\n"
                        "RenderEvent 542 437 0 0 0 0 0\n"
                        "MouseMoveEvent 541 439 0 0 0 0 0\n"
                        "RenderEvent 541 439 0 0 0 0 0\n"
                        "MouseMoveEvent 540 440 0 0 0 0 0\n"
                        "RenderEvent 540 440 0 0 0 0 0\n"
                        "MouseMoveEvent 540 440 0 0 0 0 0\n"
                        "RenderEvent 540 440 0 0 0 0 0\n"
                        "MouseMoveEvent 539 440 0 0 0 0 0\n"
                        "RenderEvent 539 440 0 0 0 0 0\n"
                        "MouseMoveEvent 539 440 0 0 0 0 0\n"
                        "RenderEvent 539 440 0 0 0 0 0\n"
                        "MouseMoveEvent 538 440 0 0 0 0 0\n"
                        "RenderEvent 538 440 0 0 0 0 0\n"
                        "MouseMoveEvent 537 440 0 0 0 0 0\n"
                        "RenderEvent 537 440 0 0 0 0 0\n"
                        "MouseMoveEvent 536 440 0 0 0 0 0\n"
                        "RenderEvent 536 440 0 0 0 0 0\n"
                        "MouseMoveEvent 536 440 0 0 0 0 0\n"
                        "RenderEvent 536 440 0 0 0 0 0\n"
                        "MouseMoveEvent 535 441 0 0 0 0 0\n"
                        "RenderEvent 535 441 0 0 0 0 0\n"
                        "MouseMoveEvent 534 441 0 0 0 0 0\n"
                        "RenderEvent 534 441 0 0 0 0 0\n"
                        "MouseMoveEvent 534 441 0 0 0 0 0\n"
                        "RenderEvent 534 441 0 0 0 0 0\n"
                        "MouseMoveEvent 533 441 0 0 0 0 0\n"
                        "RenderEvent 533 441 0 0 0 0 0\n"
                        "MouseMoveEvent 533 441 0 0 0 0 0\n"
                        "RenderEvent 533 441 0 0 0 0 0\n"
                        "LeftButtonPressEvent 533 441 0 0 0 0 0\n"
                        "RenderEvent 533 441 0 0 0 0 0\n"
                        "TimerEvent 533 441 0 0 0 0 0\n"
                        "RenderEvent 533 441 0 0 0 0 0\n"
                        "MouseMoveEvent 532 441 0 0 0 0 0\n"
                        "RenderEvent 532 441 0 0 0 0 0\n"
                        "MouseMoveEvent 532 441 0 0 0 0 0\n"
                        "RenderEvent 532 441 0 0 0 0 0\n"
                        "TimerEvent 532 441 0 0 0 0 0\n"
                        "RenderEvent 532 441 0 0 0 0 0\n"
                        "MouseMoveEvent 530 444 0 0 0 0 0\n"
                        "RenderEvent 530 444 0 0 0 0 0\n"
                        "TimerEvent 530 444 0 0 0 0 0\n"
                        "RenderEvent 530 444 0 0 0 0 0\n"
                        "MouseMoveEvent 530 447 0 0 0 0 0\n"
                        "RenderEvent 530 447 0 0 0 0 0\n"
                        "TimerEvent 530 447 0 0 0 0 0\n"
                        "RenderEvent 530 447 0 0 0 0 0\n"
                        "MouseMoveEvent 530 448 0 0 0 0 0\n"
                        "RenderEvent 530 448 0 0 0 0 0\n"
                        "TimerEvent 530 448 0 0 0 0 0\n"
                        "RenderEvent 530 448 0 0 0 0 0\n"
                        "MouseMoveEvent 530 449 0 0 0 0 0\n"
                        "RenderEvent 530 449 0 0 0 0 0\n"
                        "TimerEvent 530 449 0 0 0 0 0\n"
                        "RenderEvent 530 449 0 0 0 0 0\n"
                        "MouseMoveEvent 530 449 0 0 0 0 0\n"
                        "RenderEvent 530 449 0 0 0 0 0\n"
                        "TimerEvent 530 449 0 0 0 0 0\n"
                        "RenderEvent 530 449 0 0 0 0 0\n"
                        "MouseMoveEvent 530 450 0 0 0 0 0\n"
                        "RenderEvent 530 450 0 0 0 0 0\n"
                        "TimerEvent 530 450 0 0 0 0 0\n"
                        "RenderEvent 530 450 0 0 0 0 0\n"
                        "MouseMoveEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "TimerEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "TimerEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "TimerEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "TimerEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "MouseMoveEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "TimerEvent 530 451 0 0 0 0 0\n"
                        "RenderEvent 530 451 0 0 0 0 0\n"
                        "MouseMoveEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "TimerEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "MouseMoveEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "TimerEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "TimerEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "TimerEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "TimerEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "MouseMoveEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "TimerEvent 530 452 0 0 0 0 0\n"
                        "RenderEvent 530 452 0 0 0 0 0\n"
                        "MouseMoveEvent 530 446 0 0 0 0 0\n"
                        "RenderEvent 530 446 0 0 0 0 0\n"
                        "TimerEvent 530 446 0 0 0 0 0\n"
                        "RenderEvent 530 446 0 0 0 0 0\n"
                        "MouseMoveEvent 531 443 0 0 0 0 0\n"
                        "RenderEvent 531 443 0 0 0 0 0\n"
                        "TimerEvent 531 443 0 0 0 0 0\n"
                        "RenderEvent 531 443 0 0 0 0 0\n"
                        "MouseMoveEvent 532 437 0 0 0 0 0\n"
                        "RenderEvent 532 437 0 0 0 0 0\n"
                        "TimerEvent 532 437 0 0 0 0 0\n"
                        "RenderEvent 532 437 0 0 0 0 0\n"
                        "MouseMoveEvent 533 430 0 0 0 0 0\n"
                        "RenderEvent 533 430 0 0 0 0 0\n"
                        "TimerEvent 533 430 0 0 0 0 0\n"
                        "RenderEvent 533 430 0 0 0 0 0\n"
                        "MouseMoveEvent 533 428 0 0 0 0 0\n"
                        "RenderEvent 533 428 0 0 0 0 0\n"
                        "TimerEvent 533 428 0 0 0 0 0\n"
                        "RenderEvent 533 428 0 0 0 0 0\n"
                        "MouseMoveEvent 534 425 0 0 0 0 0\n"
                        "RenderEvent 534 425 0 0 0 0 0\n"
                        "TimerEvent 534 425 0 0 0 0 0\n"
                        "RenderEvent 534 425 0 0 0 0 0\n"
                        "MouseMoveEvent 534 424 0 0 0 0 0\n"
                        "RenderEvent 534 424 0 0 0 0 0\n"
                        "TimerEvent 534 424 0 0 0 0 0\n"
                        "RenderEvent 534 424 0 0 0 0 0\n"
                        "MouseMoveEvent 534 424 0 0 0 0 0\n"
                        "RenderEvent 534 424 0 0 0 0 0\n"
                        "TimerEvent 534 424 0 0 0 0 0\n"
                        "RenderEvent 534 424 0 0 0 0 0\n"
                        "TimerEvent 534 424 0 0 0 0 0\n"
                        "RenderEvent 534 424 0 0 0 0 0\n"
                        "MouseMoveEvent 534 423 0 0 0 0 0\n"
                        "RenderEvent 534 423 0 0 0 0 0\n"
                        "MouseMoveEvent 534 423 0 0 0 0 0\n"
                        "RenderEvent 534 423 0 0 0 0 0\n"
                        "TimerEvent 534 423 0 0 0 0 0\n"
                        "RenderEvent 534 423 0 0 0 0 0\n"
                        "MouseMoveEvent 534 422 0 0 0 0 0\n"
                        "RenderEvent 534 422 0 0 0 0 0\n"
                        "TimerEvent 534 422 0 0 0 0 0\n"
                        "RenderEvent 534 422 0 0 0 0 0\n"
                        "TimerEvent 534 422 0 0 0 0 0\n"
                        "RenderEvent 534 422 0 0 0 0 0\n"
                        "MouseMoveEvent 534 422 0 0 0 0 0\n"
                        "RenderEvent 534 422 0 0 0 0 0\n"
                        "TimerEvent 534 422 0 0 0 0 0\n"
                        "RenderEvent 534 422 0 0 0 0 0\n"
                        "MouseMoveEvent 534 421 0 0 0 0 0\n"
                        "RenderEvent 534 421 0 0 0 0 0\n"
                        "TimerEvent 534 421 0 0 0 0 0\n"
                        "RenderEvent 534 421 0 0 0 0 0\n"
                        "MouseMoveEvent 534 421 0 0 0 0 0\n"
                        "RenderEvent 534 421 0 0 0 0 0\n"
                        "TimerEvent 534 421 0 0 0 0 0\n"
                        "RenderEvent 534 421 0 0 0 0 0\n"
                        "MouseMoveEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "TimerEvent 534 420 0 0 0 0 0\n"
                        "RenderEvent 534 420 0 0 0 0 0\n"
                        "MouseMoveEvent 534 419 0 0 0 0 0\n"
                        "RenderEvent 534 419 0 0 0 0 0\n"
                        "MouseMoveEvent 534 418 0 0 0 0 0\n"
                        "RenderEvent 534 418 0 0 0 0 0\n"
                        "TimerEvent 534 418 0 0 0 0 0\n"
                        "RenderEvent 534 418 0 0 0 0 0\n"
                        "TimerEvent 534 418 0 0 0 0 0\n"
                        "RenderEvent 534 418 0 0 0 0 0\n"
                        "TimerEvent 534 418 0 0 0 0 0\n"
                        "RenderEvent 534 418 0 0 0 0 0\n"
                        "TimerEvent 534 418 0 0 0 0 0\n"
                        "RenderEvent 534 418 0 0 0 0 0\n"
                        "LeftButtonReleaseEvent 534 418 0 0 0 0 0\n"
                        "RenderEvent 534 418 0 0 0 0 0\n"
                        "MouseMoveEvent 534 419 0 0 0 0 0\n"
                        "RenderEvent 534 419 0 0 0 0 0\n"
                        "MouseMoveEvent 533 419 0 0 0 0 0\n"
                        "RenderEvent 533 419 0 0 0 0 0\n"
                        "MouseMoveEvent 531 422 0 0 0 0 0\n"
                        "RenderEvent 531 422 0 0 0 0 0\n"
                        "MouseMoveEvent 528 424 0 0 0 0 0\n"
                        "RenderEvent 528 424 0 0 0 0 0\n"
                        "MouseMoveEvent 524 427 0 0 0 0 0\n"
                        "RenderEvent 524 427 0 0 0 0 0\n"
                        "MouseMoveEvent 520 429 0 0 0 0 0\n"
                        "RenderEvent 520 429 0 0 0 0 0\n"
                        "MouseMoveEvent 518 430 0 0 0 0 0\n"
                        "RenderEvent 518 430 0 0 0 0 0\n"
                        "MouseMoveEvent 516 430 0 0 0 0 0\n"
                        "RenderEvent 516 430 0 0 0 0 0\n"
                        "MouseMoveEvent 515 431 0 0 0 0 0\n"
                        "RenderEvent 515 431 0 0 0 0 0\n"
                        "MouseMoveEvent 515 431 0 0 0 0 0\n"
                        "RenderEvent 515 431 0 0 0 0 0\n"
                        "MouseMoveEvent 514 431 0 0 0 0 0\n"
                        "RenderEvent 514 431 0 0 0 0 0\n"
                        "LeftButtonPressEvent 514 431 0 0 0 0 0\n"
                        "RenderEvent 514 431 0 0 0 0 0\n"
                        "TimerEvent 514 431 0 0 0 0 0\n"
                        "RenderEvent 514 431 0 0 0 0 0\n"
                        "TimerEvent 514 431 0 0 0 0 0\n"
                        "RenderEvent 514 431 0 0 0 0 0\n"
                        "MouseMoveEvent 514 432 0 0 0 0 0\n"
                        "RenderEvent 514 432 0 0 0 0 0\n"
                        "MouseMoveEvent 514 432 0 0 0 0 0\n"
                        "RenderEvent 514 432 0 0 0 0 0\n"
                        "TimerEvent 514 432 0 0 0 0 0\n"
                        "RenderEvent 514 432 0 0 0 0 0\n"
                        "MouseMoveEvent 513 436 0 0 0 0 0\n"
                        "RenderEvent 513 436 0 0 0 0 0\n"
                        "TimerEvent 513 436 0 0 0 0 0\n"
                        "RenderEvent 513 436 0 0 0 0 0\n"
                        "MouseMoveEvent 513 442 0 0 0 0 0\n"
                        "RenderEvent 513 442 0 0 0 0 0\n"
                        "TimerEvent 513 442 0 0 0 0 0\n"
                        "RenderEvent 513 442 0 0 0 0 0\n"
                        "MouseMoveEvent 513 444 0 0 0 0 0\n"
                        "RenderEvent 513 444 0 0 0 0 0\n"
                        "TimerEvent 513 444 0 0 0 0 0\n"
                        "RenderEvent 513 444 0 0 0 0 0\n"
                        "MouseMoveEvent 513 445 0 0 0 0 0\n"
                        "RenderEvent 513 445 0 0 0 0 0\n"
                        "TimerEvent 513 445 0 0 0 0 0\n"
                        "RenderEvent 513 445 0 0 0 0 0\n"
                        "MouseMoveEvent 513 446 0 0 0 0 0\n"
                        "RenderEvent 513 446 0 0 0 0 0\n"
                        "TimerEvent 513 446 0 0 0 0 0\n"
                        "RenderEvent 513 446 0 0 0 0 0\n"
                        "MouseMoveEvent 513 448 0 0 0 0 0\n"
                        "RenderEvent 513 448 0 0 0 0 0\n"
                        "TimerEvent 513 448 0 0 0 0 0\n"
                        "RenderEvent 513 448 0 0 0 0 0\n"
                        "MouseMoveEvent 512 452 0 0 0 0 0\n"
                        "RenderEvent 512 452 0 0 0 0 0\n"
                        "TimerEvent 512 452 0 0 0 0 0\n"
                        "RenderEvent 512 452 0 0 0 0 0\n"
                        "MouseMoveEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "TimerEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "TimerEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "TimerEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "TimerEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "TimerEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "TimerEvent 512 454 0 0 0 0 0\n"
                        "RenderEvent 512 454 0 0 0 0 0\n"
                        "MouseMoveEvent 512 453 0 0 0 0 0\n"
                        "RenderEvent 512 453 0 0 0 0 0\n"
                        "TimerEvent 512 453 0 0 0 0 0\n"
                        "RenderEvent 512 453 0 0 0 0 0\n"
                        "MouseMoveEvent 512 451 0 0 0 0 0\n"
                        "RenderEvent 512 451 0 0 0 0 0\n"
                        "TimerEvent 512 451 0 0 0 0 0\n"
                        "RenderEvent 512 451 0 0 0 0 0\n"
                        "MouseMoveEvent 512 439 0 0 0 0 0\n"
                        "RenderEvent 512 439 0 0 0 0 0\n"
                        "TimerEvent 512 439 0 0 0 0 0\n"
                        "RenderEvent 512 439 0 0 0 0 0\n"
                        "MouseMoveEvent 513 432 0 0 0 0 0\n"
                        "RenderEvent 513 432 0 0 0 0 0\n"
                        "TimerEvent 513 432 0 0 0 0 0\n"
                        "RenderEvent 513 432 0 0 0 0 0\n"
                        "MouseMoveEvent 513 425 0 0 0 0 0\n"
                        "RenderEvent 513 425 0 0 0 0 0\n"
                        "TimerEvent 513 425 0 0 0 0 0\n"
                        "RenderEvent 513 425 0 0 0 0 0\n"
                        "MouseMoveEvent 514 422 0 0 0 0 0\n"
                        "RenderEvent 514 422 0 0 0 0 0\n"
                        "TimerEvent 514 422 0 0 0 0 0\n"
                        "RenderEvent 514 422 0 0 0 0 0\n"
                        "MouseMoveEvent 514 420 0 0 0 0 0\n"
                        "RenderEvent 514 420 0 0 0 0 0\n"
                        "TimerEvent 514 420 0 0 0 0 0\n"
                        "RenderEvent 514 420 0 0 0 0 0\n"
                        "MouseMoveEvent 514 419 0 0 0 0 0\n"
                        "RenderEvent 514 419 0 0 0 0 0\n"
                        "TimerEvent 514 419 0 0 0 0 0\n"
                        "RenderEvent 514 419 0 0 0 0 0\n"
                        "MouseMoveEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "TimerEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "MouseMoveEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "MouseMoveEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "TimerEvent 514 415 0 0 0 0 0\n"
                        "RenderEvent 514 415 0 0 0 0 0\n"
                        "MouseMoveEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "TimerEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "MouseMoveEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "TimerEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "LeftButtonReleaseEvent 514 416 0 0 0 0 0\n"
                        "RenderEvent 514 416 0 0 0 0 0\n"
                        "MouseMoveEvent 515 416 0 0 0 0 0\n"
                        "RenderEvent 515 416 0 0 0 0 0\n"
                        "MouseMoveEvent 515 417 0 0 0 0 0\n"
                        "RenderEvent 515 417 0 0 0 0 0\n"
                        "MouseMoveEvent 515 418 0 0 0 0 0\n"
                        "RenderEvent 515 418 0 0 0 0 0\n"
                        "MouseMoveEvent 519 423 0 0 0 0 0\n"
                        "RenderEvent 519 423 0 0 0 0 0\n"
                        "MouseMoveEvent 529 434 0 0 0 0 0\n"
                        "RenderEvent 529 434 0 0 0 0 0\n"
                        "MouseMoveEvent 551 454 0 0 0 0 0\n"
                        "RenderEvent 551 454 0 0 0 0 0\n"
                        "MouseMoveEvent 563 464 0 0 0 0 0\n"
                        "RenderEvent 563 464 0 0 0 0 0\n"
                        "MouseMoveEvent 568 471 0 0 0 0 0\n"
                        "RenderEvent 568 471 0 0 0 0 0\n"
                        "MouseMoveEvent 570 474 0 0 0 0 0\n"
                        "RenderEvent 570 474 0 0 0 0 0\n"
                        "MouseMoveEvent 571 477 0 0 0 0 0\n"
                        "RenderEvent 571 477 0 0 0 0 0\n"
                        "MouseMoveEvent 572 479 0 0 0 0 0\n"
                        "RenderEvent 572 479 0 0 0 0 0\n"
                        "LeaveEvent 572 480 0 0 0 0 0\n"
                        "ExitEvent 572 480 0 0 0 0 0\n"
                        "EnterEvent 602 479 0 0 0 0 0\n"
                        "MouseMoveEvent 602 479 0 0 0 0 0\n"
                        "RenderEvent 602 479 0 0 0 0 0\n"
                        "MouseMoveEvent 603 478 0 0 0 0 0\n"
                        "RenderEvent 603 478 0 0 0 0 0\n"
                        "MouseMoveEvent 606 473 0 0 0 0 0\n"
                        "RenderEvent 606 473 0 0 0 0 0\n"
                        "MouseMoveEvent 610 466 0 0 0 0 0\n"
                        "RenderEvent 610 466 0 0 0 0 0\n"
                        "MouseMoveEvent 611 463 0 0 0 0 0\n"
                        "RenderEvent 611 463 0 0 0 0 0\n"
                        "MouseMoveEvent 612 462 0 0 0 0 0\n"
                        "RenderEvent 612 462 0 0 0 0 0\n"
                        "MouseMoveEvent 613 461 0 0 0 0 0\n"
                        "RenderEvent 613 461 0 0 0 0 0\n"
                        "MouseMoveEvent 614 461 0 0 0 0 0\n"
                        "RenderEvent 614 461 0 0 0 0 0\n"
                        "MouseMoveEvent 614 462 0 0 0 0 0\n"
                        "RenderEvent 614 462 0 0 0 0 0\n"
                        "MouseMoveEvent 615 462 0 0 0 0 0\n"
                        "RenderEvent 615 462 0 0 0 0 0\n"
                        "MouseMoveEvent 616 465 0 0 0 0 0\n"
                        "RenderEvent 616 465 0 0 0 0 0\n"
                        "MouseMoveEvent 616 466 0 0 0 0 0\n"
                        "RenderEvent 616 466 0 0 0 0 0\n"
                        "MouseMoveEvent 616 467 0 0 0 0 0\n"
                        "RenderEvent 616 467 0 0 0 0 0\n"
                        "MouseMoveEvent 617 468 0 0 0 0 0\n"
                        "RenderEvent 617 468 0 0 0 0 0\n"
                        "MouseMoveEvent 617 470 0 0 0 0 0\n"
                        "RenderEvent 617 470 0 0 0 0 0\n"
                        "MouseMoveEvent 617 475 0 0 0 0 0\n"
                        "RenderEvent 617 475 0 0 0 0 0\n"
                        "MouseMoveEvent 617 480 0 0 0 0 0\n"
                        "RenderEvent 617 480 0 0 0 0 0\n"
                        "LeaveEvent 617 480 0 0 0 0 0\n";

class vtkICWValueChangedCallback : public vtkCommand
{
public:
  static vtkICWValueChangedCallback* New() { return new vtkICWValueChangedCallback(); }
  void Execute(
    vtkObject* caller, unsigned long vtkNotUsed(eventId), void* vtkNotUsed(callData)) override
  {
    vtkCompassWidget* widget = vtkCompassWidget::SafeDownCast(caller);
    vtkCamera* camera = widget->GetCurrentRenderer()->GetActiveCamera();

    // calculate new camera position from compass widget parameters
    double distance = widget->GetDistance();
    double tilt = widget->GetTilt();
    double heading = widget->GetHeading();

    double pos[3];
    pos[0] =
      distance * cos(vtkMath::RadiansFromDegrees(heading)) * cos(vtkMath::RadiansFromDegrees(tilt));
    pos[1] =
      distance * sin(vtkMath::RadiansFromDegrees(heading)) * cos(vtkMath::RadiansFromDegrees(tilt));
    pos[2] = distance * sin(vtkMath::RadiansFromDegrees(tilt));

    camera->SetPosition(pos);
    camera->SetFocalPoint(0, 0, 0);
    camera->SetViewUp(0, 0, 1);
    camera->SetClippingRange(0.1, distance + 1);

    widget->GetCurrentRenderer()->Render();
  }
  vtkICWValueChangedCallback() = default;
};

int TestCompassWidget(int argc, char* argv[])
{
  // a cube with text on its faces
  vtkNew<vtkAnnotatedCubeActor> actor;
  actor->GetCubeProperty()->SetColor(0, 0, 1);

  // a renderer and render window
  vtkNew<vtkRenderer> renderer;
  vtkNew<vtkRenderWindow> renderWindow;
  renderWindow->AddRenderer(renderer);
  renderWindow->SetMultiSamples(0);

  // an interactor
  vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
  renderWindowInteractor->SetRenderWindow(renderWindow);

  // create the widget and its representation
  vtkNew<vtkCompassRepresentation> compassRepresentation;
  compassRepresentation->SetMinimumDistance(2);
  compassRepresentation->SetMaximumDistance(10);

  vtkNew<vtkCompassWidget> compassWidget;
  compassWidget->SetInteractor(renderWindowInteractor);
  compassWidget->SetRepresentation(compassRepresentation);
  compassWidget->SetDistance(5.0);
  compassWidget->SetTiltSpeed(45);
  compassWidget->SetDistanceSpeed(2);

  // create the callback
  vtkNew<vtkICWValueChangedCallback> valueChangedCallback;
  compassWidget->AddObserver(vtkCommand::WidgetValueChangedEvent, valueChangedCallback);

  // add the actors to the scene
  renderer->AddActor(actor);

  renderWindow->SetSize(640, 480);
  renderWindow->SetWindowName("CompassWidget");

  renderWindow->Render();
  compassWidget->EnabledOn();

  // no interactor style - camera is moved by widget callback
  renderWindowInteractor->SetInteractorStyle(nullptr);

  // set camera to initial position
  compassWidget->InvokeEvent(vtkCommand::WidgetValueChangedEvent);

  return vtkTesting::InteractorEventLoop(argc, argv, renderWindowInteractor, eventLog);
}
