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

// First include the required header files for the VTK classes we are using.
#include "vtkCommand.h"
#include "vtkImageActor.h"
#include "vtkImageCanvasSource2D.h"
#include "vtkImageData.h"
#include "vtkImageMapper3D.h"
#include "vtkImageRectilinearWipe.h"
#include "vtkImageWrapPad.h"
#include "vtkProperty2D.h"
#include "vtkRectilinearWipeRepresentation.h"
#include "vtkRectilinearWipeWidget.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkSmartPointer.h"
#include "vtkTestUtilities.h"
#include "vtkTesting.h"

const char eventLog[] = "# StreamVersion 1\n"
                        "RenderEvent 0 0 0 0 0 0 0\n"
                        "EnterEvent 296 73 0 0 0 0 0\n"
                        "MouseMoveEvent 296 73 0 0 0 0 0\n"
                        "MouseMoveEvent 88 148 0 0 0 0 0\n"
                        "LeftButtonPressEvent 88 148 0 0 0 0 0\n"
                        "MouseMoveEvent 87 148 0 0 0 0 0\n"
                        "RenderEvent 87 148 0 0 0 0 0\n"
                        "MouseMoveEvent 87 149 0 0 0 0 0\n"
                        "RenderEvent 87 149 0 0 0 0 0\n"
                        "MouseMoveEvent 87 150 0 0 0 0 0\n"
                        "RenderEvent 87 150 0 0 0 0 0\n"
                        "MouseMoveEvent 87 151 0 0 0 0 0\n"
                        "RenderEvent 87 151 0 0 0 0 0\n"
                        "MouseMoveEvent 87 152 0 0 0 0 0\n"
                        "RenderEvent 87 152 0 0 0 0 0\n"
                        "MouseMoveEvent 87 153 0 0 0 0 0\n"
                        "RenderEvent 87 153 0 0 0 0 0\n"
                        "MouseMoveEvent 87 154 0 0 0 0 0\n"
                        "RenderEvent 87 154 0 0 0 0 0\n"
                        "MouseMoveEvent 87 155 0 0 0 0 0\n"
                        "RenderEvent 87 155 0 0 0 0 0\n"
                        "MouseMoveEvent 87 156 0 0 0 0 0\n"
                        "RenderEvent 87 156 0 0 0 0 0\n"
                        "MouseMoveEvent 87 157 0 0 0 0 0\n"
                        "RenderEvent 87 157 0 0 0 0 0\n"
                        "MouseMoveEvent 87 158 0 0 0 0 0\n"
                        "RenderEvent 87 158 0 0 0 0 0\n"
                        "MouseMoveEvent 87 159 0 0 0 0 0\n"
                        "RenderEvent 87 159 0 0 0 0 0\n"
                        "MouseMoveEvent 87 161 0 0 0 0 0\n"
                        "RenderEvent 87 161 0 0 0 0 0\n"
                        "MouseMoveEvent 87 162 0 0 0 0 0\n"
                        "RenderEvent 87 162 0 0 0 0 0\n"
                        "MouseMoveEvent 87 163 0 0 0 0 0\n"
                        "RenderEvent 87 163 0 0 0 0 0\n"
                        "MouseMoveEvent 87 164 0 0 0 0 0\n"
                        "RenderEvent 87 164 0 0 0 0 0\n"
                        "MouseMoveEvent 87 165 0 0 0 0 0\n"
                        "RenderEvent 87 165 0 0 0 0 0\n"
                        "MouseMoveEvent 86 165 0 0 0 0 0\n"
                        "RenderEvent 86 165 0 0 0 0 0\n"
                        "MouseMoveEvent 86 167 0 0 0 0 0\n"
                        "RenderEvent 86 167 0 0 0 0 0\n"
                        "MouseMoveEvent 86 168 0 0 0 0 0\n"
                        "RenderEvent 86 168 0 0 0 0 0\n"
                        "MouseMoveEvent 85 170 0 0 0 0 0\n"
                        "RenderEvent 85 170 0 0 0 0 0\n"
                        "MouseMoveEvent 85 172 0 0 0 0 0\n"
                        "RenderEvent 85 172 0 0 0 0 0\n"
                        "MouseMoveEvent 85 175 0 0 0 0 0\n"
                        "RenderEvent 85 175 0 0 0 0 0\n"
                        "MouseMoveEvent 85 177 0 0 0 0 0\n"
                        "RenderEvent 85 177 0 0 0 0 0\n"
                        "MouseMoveEvent 85 178 0 0 0 0 0\n"
                        "RenderEvent 85 178 0 0 0 0 0\n"
                        "MouseMoveEvent 85 179 0 0 0 0 0\n"
                        "RenderEvent 85 179 0 0 0 0 0\n"
                        "MouseMoveEvent 85 181 0 0 0 0 0\n"
                        "RenderEvent 85 181 0 0 0 0 0\n"
                        "MouseMoveEvent 85 184 0 0 0 0 0\n"
                        "RenderEvent 85 184 0 0 0 0 0\n"
                        "MouseMoveEvent 85 185 0 0 0 0 0\n"
                        "RenderEvent 85 185 0 0 0 0 0\n"
                        "MouseMoveEvent 85 187 0 0 0 0 0\n"
                        "RenderEvent 85 187 0 0 0 0 0\n"
                        "MouseMoveEvent 85 188 0 0 0 0 0\n"
                        "RenderEvent 85 188 0 0 0 0 0\n"
                        "MouseMoveEvent 85 189 0 0 0 0 0\n"
                        "RenderEvent 85 189 0 0 0 0 0\n"
                        "MouseMoveEvent 85 190 0 0 0 0 0\n"
                        "RenderEvent 85 190 0 0 0 0 0\n"
                        "MouseMoveEvent 83 191 0 0 0 0 0\n"
                        "RenderEvent 83 191 0 0 0 0 0\n"
                        "MouseMoveEvent 83 192 0 0 0 0 0\n"
                        "RenderEvent 83 192 0 0 0 0 0\n"
                        "MouseMoveEvent 82 192 0 0 0 0 0\n"
                        "RenderEvent 82 192 0 0 0 0 0\n"
                        "MouseMoveEvent 83 192 0 0 0 0 0\n"
                        "RenderEvent 83 192 0 0 0 0 0\n"
                        "MouseMoveEvent 84 192 0 0 0 0 0\n"
                        "RenderEvent 84 192 0 0 0 0 0\n"
                        "MouseMoveEvent 86 192 0 0 0 0 0\n"
                        "RenderEvent 86 192 0 0 0 0 0\n"
                        "MouseMoveEvent 87 192 0 0 0 0 0\n"
                        "RenderEvent 87 192 0 0 0 0 0\n"
                        "MouseMoveEvent 89 192 0 0 0 0 0\n"
                        "RenderEvent 89 192 0 0 0 0 0\n"
                        "MouseMoveEvent 90 192 0 0 0 0 0\n"
                        "RenderEvent 90 192 0 0 0 0 0\n"
                        "MouseMoveEvent 91 192 0 0 0 0 0\n"
                        "RenderEvent 91 192 0 0 0 0 0\n"
                        "MouseMoveEvent 92 192 0 0 0 0 0\n"
                        "RenderEvent 92 192 0 0 0 0 0\n"
                        "MouseMoveEvent 93 192 0 0 0 0 0\n"
                        "RenderEvent 93 192 0 0 0 0 0\n"
                        "MouseMoveEvent 94 192 0 0 0 0 0\n"
                        "RenderEvent 94 192 0 0 0 0 0\n"
                        "MouseMoveEvent 95 192 0 0 0 0 0\n"
                        "RenderEvent 95 192 0 0 0 0 0\n"
                        "MouseMoveEvent 96 192 0 0 0 0 0\n"
                        "RenderEvent 96 192 0 0 0 0 0\n"
                        "MouseMoveEvent 100 192 0 0 0 0 0\n"
                        "RenderEvent 100 192 0 0 0 0 0\n"
                        "MouseMoveEvent 103 192 0 0 0 0 0\n"
                        "RenderEvent 103 192 0 0 0 0 0\n"
                        "MouseMoveEvent 104 192 0 0 0 0 0\n"
                        "RenderEvent 104 192 0 0 0 0 0\n"
                        "MouseMoveEvent 106 192 0 0 0 0 0\n"
                        "RenderEvent 106 192 0 0 0 0 0\n"
                        "MouseMoveEvent 107 192 0 0 0 0 0\n"
                        "RenderEvent 107 192 0 0 0 0 0\n"
                        "MouseMoveEvent 108 192 0 0 0 0 0\n"
                        "RenderEvent 108 192 0 0 0 0 0\n"
                        "MouseMoveEvent 109 192 0 0 0 0 0\n"
                        "RenderEvent 109 192 0 0 0 0 0\n"
                        "MouseMoveEvent 110 192 0 0 0 0 0\n"
                        "RenderEvent 110 192 0 0 0 0 0\n"
                        "MouseMoveEvent 112 192 0 0 0 0 0\n"
                        "RenderEvent 112 192 0 0 0 0 0\n"
                        "MouseMoveEvent 115 192 0 0 0 0 0\n"
                        "RenderEvent 115 192 0 0 0 0 0\n"
                        "MouseMoveEvent 119 192 0 0 0 0 0\n"
                        "RenderEvent 119 192 0 0 0 0 0\n"
                        "MouseMoveEvent 124 193 0 0 0 0 0\n"
                        "RenderEvent 124 193 0 0 0 0 0\n"
                        "MouseMoveEvent 130 193 0 0 0 0 0\n"
                        "RenderEvent 130 193 0 0 0 0 0\n"
                        "MouseMoveEvent 137 193 0 0 0 0 0\n"
                        "RenderEvent 137 193 0 0 0 0 0\n"
                        "MouseMoveEvent 142 193 0 0 0 0 0\n"
                        "RenderEvent 142 193 0 0 0 0 0\n"
                        "MouseMoveEvent 145 193 0 0 0 0 0\n"
                        "RenderEvent 145 193 0 0 0 0 0\n"
                        "MouseMoveEvent 147 193 0 0 0 0 0\n"
                        "RenderEvent 147 193 0 0 0 0 0\n"
                        "MouseMoveEvent 149 193 0 0 0 0 0\n"
                        "RenderEvent 149 193 0 0 0 0 0\n"
                        "MouseMoveEvent 149 194 0 0 0 0 0\n"
                        "RenderEvent 149 194 0 0 0 0 0\n"
                        "MouseMoveEvent 150 194 0 0 0 0 0\n"
                        "RenderEvent 150 194 0 0 0 0 0\n"
                        "MouseMoveEvent 151 194 0 0 0 0 0\n"
                        "RenderEvent 151 194 0 0 0 0 0\n"
                        "MouseMoveEvent 152 194 0 0 0 0 0\n"
                        "RenderEvent 152 194 0 0 0 0 0\n"
                        "MouseMoveEvent 153 194 0 0 0 0 0\n"
                        "RenderEvent 153 194 0 0 0 0 0\n"
                        "MouseMoveEvent 154 194 0 0 0 0 0\n"
                        "RenderEvent 154 194 0 0 0 0 0\n"
                        "MouseMoveEvent 157 194 0 0 0 0 0\n"
                        "RenderEvent 157 194 0 0 0 0 0\n"
                        "MouseMoveEvent 162 194 0 0 0 0 0\n"
                        "RenderEvent 162 194 0 0 0 0 0\n"
                        "MouseMoveEvent 166 194 0 0 0 0 0\n"
                        "RenderEvent 166 194 0 0 0 0 0\n"
                        "MouseMoveEvent 169 194 0 0 0 0 0\n"
                        "RenderEvent 169 194 0 0 0 0 0\n"
                        "MouseMoveEvent 173 194 0 0 0 0 0\n"
                        "RenderEvent 173 194 0 0 0 0 0\n"
                        "MouseMoveEvent 175 194 0 0 0 0 0\n"
                        "RenderEvent 175 194 0 0 0 0 0\n"
                        "MouseMoveEvent 176 194 0 0 0 0 0\n"
                        "RenderEvent 176 194 0 0 0 0 0\n"
                        "MouseMoveEvent 177 194 0 0 0 0 0\n"
                        "RenderEvent 177 194 0 0 0 0 0\n"
                        "MouseMoveEvent 178 194 0 0 0 0 0\n"
                        "RenderEvent 178 194 0 0 0 0 0\n"
                        "MouseMoveEvent 179 194 0 0 0 0 0\n"
                        "RenderEvent 179 194 0 0 0 0 0\n"
                        "MouseMoveEvent 180 194 0 0 0 0 0\n"
                        "RenderEvent 180 194 0 0 0 0 0\n"
                        "MouseMoveEvent 181 194 0 0 0 0 0\n"
                        "RenderEvent 181 194 0 0 0 0 0\n"
                        "MouseMoveEvent 182 194 0 0 0 0 0\n"
                        "RenderEvent 182 194 0 0 0 0 0\n"
                        "MouseMoveEvent 182 195 0 0 0 0 0\n"
                        "RenderEvent 182 195 0 0 0 0 0\n"
                        "MouseMoveEvent 183 195 0 0 0 0 0\n"
                        "RenderEvent 183 195 0 0 0 0 0\n"
                        "MouseMoveEvent 184 195 0 0 0 0 0\n"
                        "RenderEvent 184 195 0 0 0 0 0\n"
                        "MouseMoveEvent 185 195 0 0 0 0 0\n"
                        "RenderEvent 185 195 0 0 0 0 0\n"
                        "MouseMoveEvent 186 195 0 0 0 0 0\n"
                        "RenderEvent 186 195 0 0 0 0 0\n"
                        "MouseMoveEvent 186 194 0 0 0 0 0\n"
                        "RenderEvent 186 194 0 0 0 0 0\n"
                        "MouseMoveEvent 186 193 0 0 0 0 0\n"
                        "RenderEvent 186 193 0 0 0 0 0\n"
                        "MouseMoveEvent 186 192 0 0 0 0 0\n"
                        "RenderEvent 186 192 0 0 0 0 0\n"
                        "MouseMoveEvent 186 191 0 0 0 0 0\n"
                        "RenderEvent 186 191 0 0 0 0 0\n"
                        "MouseMoveEvent 186 189 0 0 0 0 0\n"
                        "RenderEvent 186 189 0 0 0 0 0\n"
                        "MouseMoveEvent 186 188 0 0 0 0 0\n"
                        "RenderEvent 186 188 0 0 0 0 0\n"
                        "MouseMoveEvent 187 184 0 0 0 0 0\n"
                        "RenderEvent 187 184 0 0 0 0 0\n"
                        "MouseMoveEvent 188 181 0 0 0 0 0\n"
                        "RenderEvent 188 181 0 0 0 0 0\n"
                        "MouseMoveEvent 189 177 0 0 0 0 0\n"
                        "RenderEvent 189 177 0 0 0 0 0\n"
                        "MouseMoveEvent 189 173 0 0 0 0 0\n"
                        "RenderEvent 189 173 0 0 0 0 0\n"
                        "MouseMoveEvent 191 170 0 0 0 0 0\n"
                        "RenderEvent 191 170 0 0 0 0 0\n"
                        "MouseMoveEvent 193 167 0 0 0 0 0\n"
                        "RenderEvent 193 167 0 0 0 0 0\n"
                        "MouseMoveEvent 194 164 0 0 0 0 0\n"
                        "RenderEvent 194 164 0 0 0 0 0\n"
                        "MouseMoveEvent 195 161 0 0 0 0 0\n"
                        "RenderEvent 195 161 0 0 0 0 0\n"
                        "MouseMoveEvent 198 158 0 0 0 0 0\n"
                        "RenderEvent 198 158 0 0 0 0 0\n"
                        "MouseMoveEvent 198 156 0 0 0 0 0\n"
                        "RenderEvent 198 156 0 0 0 0 0\n"
                        "MouseMoveEvent 199 154 0 0 0 0 0\n"
                        "RenderEvent 199 154 0 0 0 0 0\n"
                        "MouseMoveEvent 199 153 0 0 0 0 0\n"
                        "RenderEvent 199 153 0 0 0 0 0\n"
                        "MouseMoveEvent 199 152 0 0 0 0 0\n"
                        "RenderEvent 199 152 0 0 0 0 0\n"
                        "MouseMoveEvent 199 150 0 0 0 0 0\n"
                        "RenderEvent 199 150 0 0 0 0 0\n"
                        "MouseMoveEvent 199 149 0 0 0 0 0\n"
                        "RenderEvent 199 149 0 0 0 0 0\n"
                        "MouseMoveEvent 199 147 0 0 0 0 0\n"
                        "RenderEvent 199 147 0 0 0 0 0\n"
                        "MouseMoveEvent 199 146 0 0 0 0 0\n"
                        "RenderEvent 199 146 0 0 0 0 0\n"
                        "MouseMoveEvent 198 144 0 0 0 0 0\n"
                        "RenderEvent 198 144 0 0 0 0 0\n"
                        "MouseMoveEvent 198 143 0 0 0 0 0\n"
                        "RenderEvent 198 143 0 0 0 0 0\n"
                        "MouseMoveEvent 197 139 0 0 0 0 0\n"
                        "RenderEvent 197 139 0 0 0 0 0\n"
                        "MouseMoveEvent 196 135 0 0 0 0 0\n"
                        "RenderEvent 196 135 0 0 0 0 0\n"
                        "MouseMoveEvent 194 131 0 0 0 0 0\n"
                        "RenderEvent 194 131 0 0 0 0 0\n"
                        "MouseMoveEvent 193 129 0 0 0 0 0\n"
                        "RenderEvent 193 129 0 0 0 0 0\n"
                        "MouseMoveEvent 192 127 0 0 0 0 0\n"
                        "RenderEvent 192 127 0 0 0 0 0\n"
                        "MouseMoveEvent 190 125 0 0 0 0 0\n"
                        "RenderEvent 190 125 0 0 0 0 0\n"
                        "MouseMoveEvent 188 124 0 0 0 0 0\n"
                        "RenderEvent 188 124 0 0 0 0 0\n"
                        "MouseMoveEvent 185 120 0 0 0 0 0\n"
                        "RenderEvent 185 120 0 0 0 0 0\n"
                        "MouseMoveEvent 181 117 0 0 0 0 0\n"
                        "RenderEvent 181 117 0 0 0 0 0\n"
                        "MouseMoveEvent 180 116 0 0 0 0 0\n"
                        "RenderEvent 180 116 0 0 0 0 0\n"
                        "MouseMoveEvent 176 113 0 0 0 0 0\n"
                        "RenderEvent 176 113 0 0 0 0 0\n"
                        "MouseMoveEvent 174 112 0 0 0 0 0\n"
                        "RenderEvent 174 112 0 0 0 0 0\n"
                        "MouseMoveEvent 172 112 0 0 0 0 0\n"
                        "RenderEvent 172 112 0 0 0 0 0\n"
                        "MouseMoveEvent 170 112 0 0 0 0 0\n"
                        "RenderEvent 170 112 0 0 0 0 0\n"
                        "MouseMoveEvent 166 112 0 0 0 0 0\n"
                        "RenderEvent 166 112 0 0 0 0 0\n"
                        "MouseMoveEvent 161 112 0 0 0 0 0\n"
                        "RenderEvent 161 112 0 0 0 0 0\n"
                        "MouseMoveEvent 156 112 0 0 0 0 0\n"
                        "RenderEvent 156 112 0 0 0 0 0\n"
                        "MouseMoveEvent 152 112 0 0 0 0 0\n"
                        "RenderEvent 152 112 0 0 0 0 0\n"
                        "MouseMoveEvent 149 112 0 0 0 0 0\n"
                        "RenderEvent 149 112 0 0 0 0 0\n"
                        "MouseMoveEvent 146 114 0 0 0 0 0\n"
                        "RenderEvent 146 114 0 0 0 0 0\n"
                        "MouseMoveEvent 142 116 0 0 0 0 0\n"
                        "RenderEvent 142 116 0 0 0 0 0\n"
                        "MouseMoveEvent 139 118 0 0 0 0 0\n"
                        "RenderEvent 139 118 0 0 0 0 0\n"
                        "MouseMoveEvent 136 120 0 0 0 0 0\n"
                        "RenderEvent 136 120 0 0 0 0 0\n"
                        "MouseMoveEvent 134 121 0 0 0 0 0\n"
                        "RenderEvent 134 121 0 0 0 0 0\n"
                        "MouseMoveEvent 133 123 0 0 0 0 0\n"
                        "RenderEvent 133 123 0 0 0 0 0\n"
                        "MouseMoveEvent 132 126 0 0 0 0 0\n"
                        "RenderEvent 132 126 0 0 0 0 0\n"
                        "MouseMoveEvent 130 130 0 0 0 0 0\n"
                        "RenderEvent 130 130 0 0 0 0 0\n"
                        "MouseMoveEvent 127 135 0 0 0 0 0\n"
                        "RenderEvent 127 135 0 0 0 0 0\n"
                        "MouseMoveEvent 126 137 0 0 0 0 0\n"
                        "RenderEvent 126 137 0 0 0 0 0\n"
                        "MouseMoveEvent 125 139 0 0 0 0 0\n"
                        "RenderEvent 125 139 0 0 0 0 0\n"
                        "MouseMoveEvent 123 142 0 0 0 0 0\n"
                        "RenderEvent 123 142 0 0 0 0 0\n"
                        "MouseMoveEvent 123 144 0 0 0 0 0\n"
                        "RenderEvent 123 144 0 0 0 0 0\n"
                        "MouseMoveEvent 121 145 0 0 0 0 0\n"
                        "RenderEvent 121 145 0 0 0 0 0\n"
                        "MouseMoveEvent 120 150 0 0 0 0 0\n"
                        "RenderEvent 120 150 0 0 0 0 0\n"
                        "MouseMoveEvent 120 154 0 0 0 0 0\n"
                        "RenderEvent 120 154 0 0 0 0 0\n"
                        "MouseMoveEvent 120 156 0 0 0 0 0\n"
                        "RenderEvent 120 156 0 0 0 0 0\n"
                        "MouseMoveEvent 120 159 0 0 0 0 0\n"
                        "RenderEvent 120 159 0 0 0 0 0\n"
                        "MouseMoveEvent 120 161 0 0 0 0 0\n"
                        "RenderEvent 120 161 0 0 0 0 0\n"
                        "MouseMoveEvent 120 162 0 0 0 0 0\n"
                        "RenderEvent 120 162 0 0 0 0 0\n"
                        "MouseMoveEvent 121 163 0 0 0 0 0\n"
                        "RenderEvent 121 163 0 0 0 0 0\n"
                        "MouseMoveEvent 122 165 0 0 0 0 0\n"
                        "RenderEvent 122 165 0 0 0 0 0\n"
                        "MouseMoveEvent 124 166 0 0 0 0 0\n"
                        "RenderEvent 124 166 0 0 0 0 0\n"
                        "MouseMoveEvent 126 167 0 0 0 0 0\n"
                        "RenderEvent 126 167 0 0 0 0 0\n"
                        "MouseMoveEvent 132 168 0 0 0 0 0\n"
                        "RenderEvent 132 168 0 0 0 0 0\n"
                        "MouseMoveEvent 135 168 0 0 0 0 0\n"
                        "RenderEvent 135 168 0 0 0 0 0\n"
                        "MouseMoveEvent 140 168 0 0 0 0 0\n"
                        "RenderEvent 140 168 0 0 0 0 0\n"
                        "MouseMoveEvent 145 168 0 0 0 0 0\n"
                        "RenderEvent 145 168 0 0 0 0 0\n"
                        "MouseMoveEvent 149 168 0 0 0 0 0\n"
                        "RenderEvent 149 168 0 0 0 0 0\n"
                        "MouseMoveEvent 150 168 0 0 0 0 0\n"
                        "RenderEvent 150 168 0 0 0 0 0\n"
                        "MouseMoveEvent 151 168 0 0 0 0 0\n"
                        "RenderEvent 151 168 0 0 0 0 0\n"
                        "MouseMoveEvent 152 168 0 0 0 0 0\n"
                        "RenderEvent 152 168 0 0 0 0 0\n"
                        "MouseMoveEvent 153 168 0 0 0 0 0\n"
                        "RenderEvent 153 168 0 0 0 0 0\n"
                        "MouseMoveEvent 153 167 0 0 0 0 0\n"
                        "RenderEvent 153 167 0 0 0 0 0\n"
                        "MouseMoveEvent 153 166 0 0 0 0 0\n"
                        "RenderEvent 153 166 0 0 0 0 0\n"
                        "MouseMoveEvent 153 165 0 0 0 0 0\n"
                        "RenderEvent 153 165 0 0 0 0 0\n"
                        "MouseMoveEvent 153 164 0 0 0 0 0\n"
                        "RenderEvent 153 164 0 0 0 0 0\n"
                        "MouseMoveEvent 153 163 0 0 0 0 0\n"
                        "RenderEvent 153 163 0 0 0 0 0\n"
                        "MouseMoveEvent 152 163 0 0 0 0 0\n"
                        "RenderEvent 152 163 0 0 0 0 0\n"
                        "MouseMoveEvent 151 163 0 0 0 0 0\n"
                        "RenderEvent 151 163 0 0 0 0 0\n"
                        "MouseMoveEvent 151 162 0 0 0 0 0\n"
                        "RenderEvent 151 162 0 0 0 0 0\n"
                        "MouseMoveEvent 150 162 0 0 0 0 0\n"
                        "RenderEvent 150 162 0 0 0 0 0\n"
                        "MouseMoveEvent 150 161 0 0 0 0 0\n"
                        "RenderEvent 150 161 0 0 0 0 0\n"
                        "MouseMoveEvent 149 161 0 0 0 0 0\n"
                        "RenderEvent 149 161 0 0 0 0 0\n"
                        "MouseMoveEvent 149 160 0 0 0 0 0\n"
                        "RenderEvent 149 160 0 0 0 0 0\n"
                        "MouseMoveEvent 148 160 0 0 0 0 0\n"
                        "RenderEvent 148 160 0 0 0 0 0\n"
                        "MouseMoveEvent 147 160 0 0 0 0 0\n"
                        "RenderEvent 147 160 0 0 0 0 0\n"
                        "MouseMoveEvent 146 160 0 0 0 0 0\n"
                        "RenderEvent 146 160 0 0 0 0 0\n"
                        "MouseMoveEvent 145 160 0 0 0 0 0\n"
                        "RenderEvent 145 160 0 0 0 0 0\n"
                        "MouseMoveEvent 145 159 0 0 0 0 0\n"
                        "RenderEvent 145 159 0 0 0 0 0\n"
                        "MouseMoveEvent 144 159 0 0 0 0 0\n"
                        "RenderEvent 144 159 0 0 0 0 0\n"
                        "MouseMoveEvent 143 159 0 0 0 0 0\n"
                        "RenderEvent 143 159 0 0 0 0 0\n"
                        "MouseMoveEvent 143 158 0 0 0 0 0\n"
                        "RenderEvent 143 158 0 0 0 0 0\n"
                        "MouseMoveEvent 142 157 0 0 0 0 0\n"
                        "RenderEvent 142 157 0 0 0 0 0\n"
                        "MouseMoveEvent 142 156 0 0 0 0 0\n"
                        "RenderEvent 142 156 0 0 0 0 0\n"
                        "MouseMoveEvent 142 155 0 0 0 0 0\n"
                        "RenderEvent 142 155 0 0 0 0 0\n"
                        "MouseMoveEvent 142 154 0 0 0 0 0\n"
                        "RenderEvent 142 154 0 0 0 0 0\n"
                        "MouseMoveEvent 142 153 0 0 0 0 0\n"
                        "RenderEvent 142 153 0 0 0 0 0\n"
                        "MouseMoveEvent 142 152 0 0 0 0 0\n"
                        "RenderEvent 142 152 0 0 0 0 0\n"
                        "MouseMoveEvent 143 150 0 0 0 0 0\n"
                        "RenderEvent 143 150 0 0 0 0 0\n"
                        "MouseMoveEvent 143 149 0 0 0 0 0\n"
                        "RenderEvent 143 149 0 0 0 0 0\n"
                        "MouseMoveEvent 144 149 0 0 0 0 0\n"
                        "RenderEvent 144 149 0 0 0 0 0\n"
                        "MouseMoveEvent 144 148 0 0 0 0 0\n"
                        "RenderEvent 144 148 0 0 0 0 0\n"
                        "MouseMoveEvent 145 148 0 0 0 0 0\n"
                        "RenderEvent 145 148 0 0 0 0 0\n"
                        "MouseMoveEvent 145 147 0 0 0 0 0\n"
                        "RenderEvent 145 147 0 0 0 0 0\n"
                        "MouseMoveEvent 145 146 0 0 0 0 0\n"
                        "RenderEvent 145 146 0 0 0 0 0\n"
                        "LeftButtonReleaseEvent 145 146 0 0 0 0 0\n"
                        "MouseMoveEvent 145 146 0 0 0 0 0\n"

  ;

int TestRectilinearWipeWidget(int argc, char* argv[])
{
  int wipeMode = 0;
  if (argc > 1)
  {
    wipeMode = atoi(argv[1]);
  }

  // Create the RenderWindow, Renderer and both Actors
  //
  vtkSmartPointer<vtkRenderer> ren1 = vtkSmartPointer<vtkRenderer>::New();
  vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
  renWin->AddRenderer(ren1);

  vtkSmartPointer<vtkRenderWindowInteractor> iren =
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
  iren->SetRenderWindow(renWin);

  // Create a wipe pipeline
  vtkSmartPointer<vtkImageCanvasSource2D> image1 = vtkSmartPointer<vtkImageCanvasSource2D>::New();
  image1->SetNumberOfScalarComponents(3);
  image1->SetScalarTypeToUnsignedChar();
  image1->SetExtent(0, 511, 0, 511, 0, 0);
  image1->SetDrawColor(255, 255, 0);
  image1->FillBox(0, 511, 0, 511);

  vtkSmartPointer<vtkImageWrapPad> pad1 = vtkSmartPointer<vtkImageWrapPad>::New();
  pad1->SetInputConnection(image1->GetOutputPort());
  pad1->SetOutputWholeExtent(0, 511, 0, 511, 0, 0);

  vtkSmartPointer<vtkImageCanvasSource2D> image2 = vtkSmartPointer<vtkImageCanvasSource2D>::New();
  image2->SetNumberOfScalarComponents(3);
  image2->SetScalarTypeToUnsignedChar();
  image2->SetExtent(0, 511, 0, 511, 0, 0);
  image2->SetDrawColor(0, 255, 255);
  image2->FillBox(0, 511, 0, 511);

  vtkSmartPointer<vtkImageWrapPad> pad2 = vtkSmartPointer<vtkImageWrapPad>::New();
  pad2->SetInputConnection(image2->GetOutputPort());
  pad2->SetOutputWholeExtent(0, 511, 0, 511, 0, 0);

  vtkSmartPointer<vtkImageRectilinearWipe> wipe = vtkSmartPointer<vtkImageRectilinearWipe>::New();
  wipe->SetInputConnection(0, pad1->GetOutputPort());
  wipe->SetInputConnection(1, pad2->GetOutputPort());
  wipe->SetPosition(100, 256);
  wipe->SetWipe(wipeMode);

  vtkSmartPointer<vtkImageActor> wipeActor = vtkSmartPointer<vtkImageActor>::New();
  wipeActor->GetMapper()->SetInputConnection(wipe->GetOutputPort());

  // VTK widgets consist of two parts: the widget part that handles
  // event processing; and the widget representation that defines how
  // the widget appears in the scene
  // (i.e., matters pertaining to geometry).
  vtkSmartPointer<vtkRectilinearWipeWidget> wipeWidget =
    vtkSmartPointer<vtkRectilinearWipeWidget>::New();
  wipeWidget->SetInteractor(iren);

  vtkRectilinearWipeRepresentation* wipeWidgetRep =
    static_cast<vtkRectilinearWipeRepresentation*>(wipeWidget->GetRepresentation());

  wipeWidgetRep->SetImageActor(wipeActor);
  wipeWidgetRep->SetRectilinearWipe(wipe);
  wipeWidgetRep->GetProperty()->SetLineWidth(2.0);
  wipeWidgetRep->GetProperty()->SetOpacity(0.75);

  // Add the actors to the renderer, set the background and size
  //
  ren1->AddActor(wipeActor);
  ren1->SetBackground(0.1, 0.2, 0.4);
  renWin->SetSize(300, 300);

  // render the image
  //
  iren->Initialize();
  renWin->Render();
  wipeWidget->On();

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