// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause #include "vtkActor.h" #include "vtkAnnulus.h" #include "vtkAppendPolyData.h" #include "vtkCamera.h" #include "vtkClipPolyData.h" #include "vtkCommand.h" #include "vtkImplicitAnnulusRepresentation.h" #include "vtkImplicitAnnulusWidget.h" #include "vtkInteractorEventRecorder.h" #include "vtkPolyData.h" #include "vtkPolyDataMapper.h" #include "vtkProperty.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkSphereSource.h" namespace { constexpr char eventLog[] = "# StreamVersion 1.2\n" "ExposeEvent 0 299 0 0 0 0 0\n" "MouseMoveEvent 147 149 0 0 0 0 0\n" "RenderEvent 147 149 0 0 0 0 0\n" "LeftButtonPressEvent 234 187 0 0 0 0 0\n" "MouseMoveEvent 234 187 0 0 0 0 0\n" "MouseMoveEvent 233 187 0 0 0 0 0\n" "MouseMoveEvent 231 187 0 0 0 0 0\n" "MouseMoveEvent 230 187 0 0 0 0 0\n" "MouseMoveEvent 229 187 0 0 0 0 0\n" "MouseMoveEvent 228 187 0 0 0 0 0\n" "MouseMoveEvent 227 187 0 0 0 0 0\n" "MouseMoveEvent 226 188 0 0 0 0 0\n" "MouseMoveEvent 224 188 0 0 0 0 0\n" "MouseMoveEvent 223 188 0 0 0 0 0\n" "MouseMoveEvent 222 189 0 0 0 0 0\n" "MouseMoveEvent 221 189 0 0 0 0 0\n" "MouseMoveEvent 220 189 0 0 0 0 0\n" "MouseMoveEvent 218 190 0 0 0 0 0\n" "MouseMoveEvent 216 190 0 0 0 0 0\n" "MouseMoveEvent 215 190 0 0 0 0 0\n" "MouseMoveEvent 214 191 0 0 0 0 0\n" "MouseMoveEvent 212 192 0 0 0 0 0\n" "MouseMoveEvent 211 192 0 0 0 0 0\n" "MouseMoveEvent 209 193 0 0 0 0 0\n" "MouseMoveEvent 207 193 0 0 0 0 0\n" "MouseMoveEvent 205 193 0 0 0 0 0\n" "MouseMoveEvent 203 194 0 0 0 0 0\n" "MouseMoveEvent 202 194 0 0 0 0 0\n" "MouseMoveEvent 201 195 0 0 0 0 0\n" "MouseMoveEvent 200 198 0 0 0 0 0\n" "MouseMoveEvent 199 200 0 0 0 0 0\n" "MouseMoveEvent 198 202 0 0 0 0 0\n" "MouseMoveEvent 198 203 0 0 0 0 0\n" "MouseMoveEvent 197 204 0 0 0 0 0\n" "MouseMoveEvent 196 206 0 0 0 0 0\n" "MouseMoveEvent 195 208 0 0 0 0 0\n" "MouseMoveEvent 194 210 0 0 0 0 0\n" "MouseMoveEvent 193 213 0 0 0 0 0\n" "MouseMoveEvent 193 216 0 0 0 0 0\n" "MouseMoveEvent 192 220 0 0 0 0 0\n" "MouseMoveEvent 192 224 0 0 0 0 0\n" "MouseMoveEvent 191 227 0 0 0 0 0\n" "MouseMoveEvent 191 231 0 0 0 0 0\n" "MouseMoveEvent 191 234 0 0 0 0 0\n" "MouseMoveEvent 191 237 0 0 0 0 0\n" "MouseMoveEvent 191 239 0 0 0 0 0\n" "MouseMoveEvent 190 240 0 0 0 0 0\n" "MouseMoveEvent 190 242 0 0 0 0 0\n" "MouseMoveEvent 190 243 0 0 0 0 0\n" "MouseMoveEvent 190 245 0 0 0 0 0\n" "MouseMoveEvent 190 247 0 0 0 0 0\n" "MouseMoveEvent 190 248 0 0 0 0 0\n" "MouseMoveEvent 190 250 0 0 0 0 0\n" "MouseMoveEvent 190 251 0 0 0 0 0\n" "MouseMoveEvent 189 253 0 0 0 0 0\n" "MouseMoveEvent 189 252 0 0 0 0 0\n" "MouseMoveEvent 189 250 0 0 0 0 0\n" "MouseMoveEvent 189 249 0 0 0 0 0\n" "MouseMoveEvent 190 247 0 0 0 0 0\n" "MouseMoveEvent 190 244 0 0 0 0 0\n" "MouseMoveEvent 190 240 0 0 0 0 0\n" "MouseMoveEvent 190 238 0 0 0 0 0\n" "MouseMoveEvent 191 236 0 0 0 0 0\n" "MouseMoveEvent 192 232 0 0 0 0 0\n" "MouseMoveEvent 192 228 0 0 0 0 0\n" "MouseMoveEvent 193 226 0 0 0 0 0\n" "MouseMoveEvent 193 223 0 0 0 0 0\n" "MouseMoveEvent 193 221 0 0 0 0 0\n" "MouseMoveEvent 194 219 0 0 0 0 0\n" "MouseMoveEvent 194 217 0 0 0 0 0\n" "MouseMoveEvent 194 214 0 0 0 0 0\n" "MouseMoveEvent 195 212 0 0 0 0 0\n" "MouseMoveEvent 196 209 0 0 0 0 0\n" "MouseMoveEvent 196 208 0 0 0 0 0\n" "MouseMoveEvent 196 207 0 0 0 0 0\n" "MouseMoveEvent 196 205 0 0 0 0 0\n" "MouseMoveEvent 197 203 0 0 0 0 0\n" "MouseMoveEvent 197 200 0 0 0 0 0\n" "MouseMoveEvent 197 197 0 0 0 0 0\n" "MouseMoveEvent 197 195 0 0 0 0 0\n" "MouseMoveEvent 198 193 0 0 0 0 0\n" "MouseMoveEvent 198 191 0 0 0 0 0\n" "MouseMoveEvent 198 189 0 0 0 0 0\n" "MouseMoveEvent 198 188 0 0 0 0 0\n" "MouseMoveEvent 198 187 0 0 0 0 0\n" "MouseMoveEvent 198 186 0 0 0 0 0\n" "MouseMoveEvent 198 184 0 0 0 0 0\n" "MouseMoveEvent 198 183 0 0 0 0 0\n" "MouseMoveEvent 199 181 0 0 0 0 0\n" "MouseMoveEvent 199 178 0 0 0 0 0\n" "MouseMoveEvent 199 176 0 0 0 0 0\n" "MouseMoveEvent 199 173 0 0 0 0 0\n" "MouseMoveEvent 199 170 0 0 0 0 0\n" "MouseMoveEvent 199 167 0 0 0 0 0\n" "MouseMoveEvent 199 164 0 0 0 0 0\n" "MouseMoveEvent 200 161 0 0 0 0 0\n" "MouseMoveEvent 200 158 0 0 0 0 0\n" "MouseMoveEvent 200 157 0 0 0 0 0\n" "MouseMoveEvent 200 155 0 0 0 0 0\n" "MouseMoveEvent 200 153 0 0 0 0 0\n" "MouseMoveEvent 201 150 0 0 0 0 0\n" "MouseMoveEvent 201 148 0 0 0 0 0\n" "MouseMoveEvent 201 145 0 0 0 0 0\n" "MouseMoveEvent 201 144 0 0 0 0 0\n" "MouseMoveEvent 201 143 0 0 0 0 0\n" "MouseMoveEvent 201 142 0 0 0 0 0\n" "MouseMoveEvent 201 141 0 0 0 0 0\n" "MouseMoveEvent 201 140 0 0 0 0 0\n" "MouseMoveEvent 201 139 0 0 0 0 0\n" "MouseMoveEvent 201 138 0 0 0 0 0\n" "LeftButtonReleaseEvent 201 138 0 0 0 0 0\n" "RenderEvent 218 148 0 0 0 0 0\n" "LeftButtonPressEvent 218 148 0 0 0 0 0\n" "MouseMoveEvent 218 147 0 0 0 0 0\n" "MouseMoveEvent 216 146 0 0 0 0 0\n" "MouseMoveEvent 213 144 0 0 0 0 0\n" "MouseMoveEvent 211 143 0 0 0 0 0\n" "MouseMoveEvent 210 142 0 0 0 0 0\n" "MouseMoveEvent 210 141 0 0 0 0 0\n" "MouseMoveEvent 209 141 0 0 0 0 0\n" "MouseMoveEvent 208 141 0 0 0 0 0\n" "MouseMoveEvent 208 140 0 0 0 0 0\n" "MouseMoveEvent 207 139 0 0 0 0 0\n" "MouseMoveEvent 205 137 0 0 0 0 0\n" "MouseMoveEvent 201 136 0 0 0 0 0\n" "MouseMoveEvent 198 134 0 0 0 0 0\n" "MouseMoveEvent 195 132 0 0 0 0 0\n" "MouseMoveEvent 192 130 0 0 0 0 0\n" "MouseMoveEvent 189 129 0 0 0 0 0\n" "MouseMoveEvent 187 127 0 0 0 0 0\n" "MouseMoveEvent 184 126 0 0 0 0 0\n" "MouseMoveEvent 182 125 0 0 0 0 0\n" "MouseMoveEvent 180 124 0 0 0 0 0\n" "MouseMoveEvent 176 123 0 0 0 0 0\n" "MouseMoveEvent 174 122 0 0 0 0 0\n" "MouseMoveEvent 172 121 0 0 0 0 0\n" "MouseMoveEvent 170 121 0 0 0 0 0\n" "MouseMoveEvent 167 120 0 0 0 0 0\n" "MouseMoveEvent 165 119 0 0 0 0 0\n" "MouseMoveEvent 162 117 0 0 0 0 0\n" "MouseMoveEvent 158 116 0 0 0 0 0\n" "MouseMoveEvent 155 115 0 0 0 0 0\n" "MouseMoveEvent 150 114 0 0 0 0 0\n" "MouseMoveEvent 149 113 0 0 0 0 0\n" "MouseMoveEvent 147 112 0 0 0 0 0\n" "MouseMoveEvent 145 112 0 0 0 0 0\n" "MouseMoveEvent 143 112 0 0 0 0 0\n" "MouseMoveEvent 140 111 0 0 0 0 0\n" "MouseMoveEvent 137 111 0 0 0 0 0\n" "MouseMoveEvent 133 110 0 0 0 0 0\n" "MouseMoveEvent 130 109 0 0 0 0 0\n" "MouseMoveEvent 126 108 0 0 0 0 0\n" "MouseMoveEvent 123 108 0 0 0 0 0\n" "MouseMoveEvent 119 108 0 0 0 0 0\n" "MouseMoveEvent 115 107 0 0 0 0 0\n" "MouseMoveEvent 113 107 0 0 0 0 0\n" "MouseMoveEvent 111 107 0 0 0 0 0\n" "MouseMoveEvent 108 106 0 0 0 0 0\n" "MouseMoveEvent 106 106 0 0 0 0 0\n" "MouseMoveEvent 104 106 0 0 0 0 0\n" "MouseMoveEvent 101 105 0 0 0 0 0\n" "MouseMoveEvent 97 105 0 0 0 0 0\n" "MouseMoveEvent 93 105 0 0 0 0 0\n" "MouseMoveEvent 89 104 0 0 0 0 0\n" "MouseMoveEvent 88 103 0 0 0 0 0\n" "MouseMoveEvent 87 103 0 0 0 0 0\n" "LeftButtonReleaseEvent 87 103 0 0 0 0 0\n" "RenderEvent 106 138 0 0 0 0 0\n" "LeftButtonPressEvent 106 138 0 0 0 0 0\n" "MouseMoveEvent 106 138 0 0 0 0 0\n" "MouseMoveEvent 106 138 0 0 0 0 0\n" "MouseMoveEvent 107 138 0 0 0 0 0\n" "MouseMoveEvent 107 137 0 0 0 0 0\n" "MouseMoveEvent 108 137 0 0 0 0 0\n" "MouseMoveEvent 108 136 0 0 0 0 0\n" "MouseMoveEvent 109 136 0 0 0 0 0\n" "MouseMoveEvent 109 135 0 0 0 0 0\n" "MouseMoveEvent 110 134 0 0 0 0 0\n" "MouseMoveEvent 111 133 0 0 0 0 0\n" "MouseMoveEvent 111 132 0 0 0 0 0\n" "MouseMoveEvent 112 130 0 0 0 0 0\n" "MouseMoveEvent 113 128 0 0 0 0 0\n" "MouseMoveEvent 113 125 0 0 0 0 0\n" "MouseMoveEvent 114 124 0 0 0 0 0\n" "MouseMoveEvent 115 123 0 0 0 0 0\n" "MouseMoveEvent 115 121 0 0 0 0 0\n" "MouseMoveEvent 116 120 0 0 0 0 0\n" "MouseMoveEvent 117 119 0 0 0 0 0\n" "MouseMoveEvent 117 118 0 0 0 0 0\n" "MouseMoveEvent 118 117 0 0 0 0 0\n" "MouseMoveEvent 119 116 0 0 0 0 0\n" "MouseMoveEvent 120 114 0 0 0 0 0\n" "MouseMoveEvent 121 112 0 0 0 0 0\n" "MouseMoveEvent 122 110 0 0 0 0 0\n" "MouseMoveEvent 124 108 0 0 0 0 0\n" "MouseMoveEvent 124 107 0 0 0 0 0\n" "MouseMoveEvent 125 107 0 0 0 0 0\n" "MouseMoveEvent 124 108 0 0 0 0 0\n" "MouseMoveEvent 124 108 0 0 0 0 0\n" "MouseMoveEvent 124 109 0 0 0 0 0\n" "MouseMoveEvent 123 109 0 0 0 0 0\n" "MouseMoveEvent 123 110 0 0 0 0 0\n" "MouseMoveEvent 122 110 0 0 0 0 0\n" "MouseMoveEvent 121 111 0 0 0 0 0\n" "MouseMoveEvent 121 110 0 0 0 0 0\n" "MouseMoveEvent 122 109 0 0 0 0 0\n" "MouseMoveEvent 122 108 0 0 0 0 0\n" "MouseMoveEvent 122 107 0 0 0 0 0\n" "MouseMoveEvent 123 106 0 0 0 0 0\n" "MouseMoveEvent 123 105 0 0 0 0 0\n" "MouseMoveEvent 124 105 0 0 0 0 0\n" "MouseMoveEvent 123 106 0 0 0 0 0\n" "MouseMoveEvent 123 108 0 0 0 0 0\n" "MouseMoveEvent 123 109 0 0 0 0 0\n" "MouseMoveEvent 124 110 0 0 0 0 0\n" "MouseMoveEvent 126 112 0 0 0 0 0\n" "MouseMoveEvent 127 114 0 0 0 0 0\n" "MouseMoveEvent 128 115 0 0 0 0 0\n" "MouseMoveEvent 132 119 0 0 0 0 0\n" "MouseMoveEvent 135 122 0 0 0 0 0\n" "MouseMoveEvent 137 124 0 0 0 0 0\n" "MouseMoveEvent 140 127 0 0 0 0 0\n" "MouseMoveEvent 141 128 0 0 0 0 0\n" "MouseMoveEvent 142 130 0 0 0 0 0\n" "MouseMoveEvent 142 131 0 0 0 0 0\n" "MouseMoveEvent 143 132 0 0 0 0 0\n" "MouseMoveEvent 144 134 0 0 0 0 0\n" "LeftButtonReleaseEvent 144 134 0 0 0 0 0\n" "RenderEvent 137 138 0 0 0 0 0\n" "LeftButtonPressEvent 139 143 0 0 0 0 0\n" "MouseMoveEvent 138 143 0 0 0 0 0\n" "MouseMoveEvent 137 141 0 0 0 0 0\n" "MouseMoveEvent 134 137 0 0 0 0 0\n" "MouseMoveEvent 131 134 0 0 0 0 0\n" "MouseMoveEvent 131 133 0 0 0 0 0\n" "MouseMoveEvent 130 129 0 0 0 0 0\n" "MouseMoveEvent 129 128 0 0 0 0 0\n" "MouseMoveEvent 129 127 0 0 0 0 0\n" "MouseMoveEvent 128 126 0 0 0 0 0\n" "MouseMoveEvent 128 125 0 0 0 0 0\n" "MouseMoveEvent 127 123 0 0 0 0 0\n" "MouseMoveEvent 126 121 0 0 0 0 0\n" "MouseMoveEvent 126 120 0 0 0 0 0\n" "MouseMoveEvent 126 120 0 0 0 0 0\n" "MouseMoveEvent 126 119 0 0 0 0 0\n" "MouseMoveEvent 126 118 0 0 0 0 0\n" "MouseMoveEvent 126 117 0 0 0 0 0\n" "MouseMoveEvent 126 116 0 0 0 0 0\n" "MouseMoveEvent 126 115 0 0 0 0 0\n" "MouseMoveEvent 126 114 0 0 0 0 0\n" "MouseMoveEvent 126 114 0 0 0 0 0\n" "MouseMoveEvent 126 113 0 0 0 0 0\n" "MouseMoveEvent 126 112 0 0 0 0 0\n" "MouseMoveEvent 126 111 0 0 0 0 0\n" "MouseMoveEvent 126 108 0 0 0 0 0\n" "MouseMoveEvent 126 107 0 0 0 0 0\n" "MouseMoveEvent 126 106 0 0 0 0 0\n" "LeftButtonReleaseEvent 126 106 0 0 0 0 0\n" "RenderEvent 159 162 0 0 0 0 0\n" "LeftButtonPressEvent 159 162 0 0 0 0 0\n" "MouseMoveEvent 160 162 0 0 0 0 0\n" "MouseMoveEvent 161 162 0 0 0 0 0\n" "MouseMoveEvent 161 162 0 0 0 0 0\n" "MouseMoveEvent 162 162 0 0 0 0 0\n" "MouseMoveEvent 162 162 0 0 0 0 0\n" "MouseMoveEvent 163 162 0 0 0 0 0\n" "MouseMoveEvent 163 161 0 0 0 0 0\n" "LeftButtonReleaseEvent 163 161 0 0 0 0 0\n" "RenderEvent 133 237 0 0 0 0 0\n" "LeftButtonPressEvent 133 237 0 0 0 0 0\n" "MouseMoveEvent 135 239 0 0 0 0 0\n" "MouseMoveEvent 137 242 0 0 0 0 0\n" "MouseMoveEvent 138 243 0 0 0 0 0\n" "MouseMoveEvent 139 244 0 0 0 0 0\n" "MouseMoveEvent 139 245 0 0 0 0 0\n" "MouseMoveEvent 139 246 0 0 0 0 0\n" "MouseMoveEvent 140 247 0 0 0 0 0\n" "MouseMoveEvent 140 248 0 0 0 0 0\n" "MouseMoveEvent 140 248 0 0 0 0 0\n" "MouseMoveEvent 140 249 0 0 0 0 0\n" "MouseMoveEvent 140 250 0 0 0 0 0\n" "MouseMoveEvent 140 251 0 0 0 0 0\n" "MouseMoveEvent 140 252 0 0 0 0 0\n" "MouseMoveEvent 140 253 0 0 0 0 0\n" "MouseMoveEvent 140 254 0 0 0 0 0\n" "MouseMoveEvent 140 256 0 0 0 0 0\n" "MouseMoveEvent 140 257 0 0 0 0 0\n" "MouseMoveEvent 140 259 0 0 0 0 0\n" "MouseMoveEvent 140 260 0 0 0 0 0\n" "MouseMoveEvent 140 261 0 0 0 0 0\n" "MouseMoveEvent 140 262 0 0 0 0 0\n" "MouseMoveEvent 140 262 0 0 0 0 0\n" "MouseMoveEvent 140 263 0 0 0 0 0\n" "MouseMoveEvent 140 265 0 0 0 0 0\n" "MouseMoveEvent 140 266 0 0 0 0 0\n" "MouseMoveEvent 139 267 0 0 0 0 0\n" "MouseMoveEvent 139 268 0 0 0 0 0\n" "MouseMoveEvent 139 269 0 0 0 0 0\n" "MouseMoveEvent 139 270 0 0 0 0 0\n" "MouseMoveEvent 139 271 0 0 0 0 0\n" "MouseMoveEvent 139 272 0 0 0 0 0\n" "MouseMoveEvent 139 273 0 0 0 0 0\n" "MouseMoveEvent 139 274 0 0 0 0 0\n" "MouseMoveEvent 139 275 0 0 0 0 0\n" "MouseMoveEvent 139 276 0 0 0 0 0\n" "MouseMoveEvent 139 277 0 0 0 0 0\n" "MouseMoveEvent 139 278 0 0 0 0 0\n" "MouseMoveEvent 139 279 0 0 0 0 0\n" "MouseMoveEvent 140 280 0 0 0 0 0\n" "MouseMoveEvent 140 281 0 0 0 0 0\n" "MouseMoveEvent 140 283 0 0 0 0 0\n" "MouseMoveEvent 141 284 0 0 0 0 0\n" "MouseMoveEvent 141 285 0 0 0 0 0\n" "MouseMoveEvent 142 287 0 0 0 0 0\n" "MouseMoveEvent 142 288 0 0 0 0 0\n" "MouseMoveEvent 142 289 0 0 0 0 0\n" "MouseMoveEvent 142 290 0 0 0 0 0\n" "MouseMoveEvent 142 290 0 0 0 0 0\n" "MouseMoveEvent 142 291 0 0 0 0 0\n" "LeftButtonReleaseEvent 142 291 0 0 0 0 0\n" "RenderEvent 154 201 0 0 0 0 0\n" "LeftButtonPressEvent 154 201 0 0 0 0 0\n" "MouseMoveEvent 154 201 0 0 0 0 0\n" "MouseMoveEvent 154 201 0 0 0 0 0\n" "MouseMoveEvent 155 201 0 0 0 0 0\n" "MouseMoveEvent 155 201 0 0 0 0 0\n" "MouseMoveEvent 155 200 0 0 0 0 0\n" "MouseMoveEvent 156 200 0 0 0 0 0\n" "MouseMoveEvent 157 200 0 0 0 0 0\n" "MouseMoveEvent 157 199 0 0 0 0 0\n" "MouseMoveEvent 158 199 0 0 0 0 0\n" "MouseMoveEvent 159 198 0 0 0 0 0\n" "MouseMoveEvent 160 198 0 0 0 0 0\n" "MouseMoveEvent 161 197 0 0 0 0 0\n" "MouseMoveEvent 162 197 0 0 0 0 0\n" "MouseMoveEvent 162 196 0 0 0 0 0\n" "MouseMoveEvent 163 196 0 0 0 0 0\n" "MouseMoveEvent 163 195 0 0 0 0 0\n" "MouseMoveEvent 164 195 0 0 0 0 0\n" "MouseMoveEvent 165 195 0 0 0 0 0\n" "MouseMoveEvent 165 194 0 0 0 0 0\n" "MouseMoveEvent 166 193 0 0 0 0 0\n" "MouseMoveEvent 167 193 0 0 0 0 0\n" "MouseMoveEvent 167 192 0 0 0 0 0\n" "MouseMoveEvent 168 192 0 0 0 0 0\n" "MouseMoveEvent 168 191 0 0 0 0 0\n" "MouseMoveEvent 169 190 0 0 0 0 0\n" "MouseMoveEvent 171 189 0 0 0 0 0\n" "MouseMoveEvent 172 188 0 0 0 0 0\n" "MouseMoveEvent 173 186 0 0 0 0 0\n" "MouseMoveEvent 174 185 0 0 0 0 0\n" "MouseMoveEvent 175 183 0 0 0 0 0\n" "MouseMoveEvent 176 182 0 0 0 0 0\n" "MouseMoveEvent 177 181 0 0 0 0 0\n" "MouseMoveEvent 178 180 0 0 0 0 0\n" "MouseMoveEvent 179 179 0 0 0 0 0\n" "MouseMoveEvent 179 178 0 0 0 0 0\n" "MouseMoveEvent 180 178 0 0 0 0 0\n" "MouseMoveEvent 181 178 0 0 0 0 0\n" "MouseMoveEvent 181 177 0 0 0 0 0\n" "MouseMoveEvent 182 177 0 0 0 0 0\n" "MouseMoveEvent 182 176 0 0 0 0 0\n" "MouseMoveEvent 182 176 0 0 0 0 0\n" "MouseMoveEvent 182 175 0 0 0 0 0\n" "MouseMoveEvent 182 174 0 0 0 0 0\n" "MouseMoveEvent 182 173 0 0 0 0 0\n" "MouseMoveEvent 182 173 0 0 0 0 0\n" "MouseMoveEvent 182 172 0 0 0 0 0\n" "MouseMoveEvent 182 171 0 0 0 0 0\n" "MouseMoveEvent 182 170 0 0 0 0 0\n" "MouseMoveEvent 182 169 0 0 0 0 0\n" "MouseMoveEvent 182 168 0 0 0 0 0\n" "MouseMoveEvent 182 167 0 0 0 0 0\n" "MouseMoveEvent 182 167 0 0 0 0 0\n" "MouseMoveEvent 181 167 0 0 0 0 0\n" "MouseMoveEvent 181 167 0 0 0 0 0\n" "MouseMoveEvent 180 167 0 0 0 0 0\n" "MouseMoveEvent 179 167 0 0 0 0 0\n" "MouseMoveEvent 178 167 0 0 0 0 0\n" "MouseMoveEvent 177 167 0 0 0 0 0\n" "MouseMoveEvent 175 166 0 0 0 0 0\n" "MouseMoveEvent 174 166 0 0 0 0 0\n" "MouseMoveEvent 173 166 0 0 0 0 0\n" "MouseMoveEvent 170 165 0 0 0 0 0\n" "MouseMoveEvent 169 165 0 0 0 0 0\n" "LeftButtonReleaseEvent 169 165 0 0 0 0 0\n" "RenderEvent 150 1 0 0 0 0 0\n" "LeaveEvent 151 -2 0 0 0 0 0\n"; // This does the actual work: updates the vtkAnnulus implicit function. // This in turn causes the pipeline to update and clip the object. // Callback for the interaction class UpdateClipSurfaceCallback : public vtkCommand { public: static UpdateClipSurfaceCallback* New() { return new UpdateClipSurfaceCallback(); } void Execute(vtkObject* caller, unsigned long, void*) override { vtkImplicitAnnulusWidget* annulusWidget = reinterpret_cast(caller); vtkImplicitAnnulusRepresentation* rep = reinterpret_cast(annulusWidget->GetRepresentation()); rep->GetAnnulus(this->Annulus); this->Actor->VisibilityOn(); } vtkAnnulus* Annulus = nullptr; vtkActor* Actor = nullptr; }; } // anonymous namespace int TestImplicitAnnulusWidget(int vtkNotUsed(argc), char* vtkNotUsed(argv)[]) { // Create a mace out of filters. vtkNew sphere; vtkNew sphereMapper; sphereMapper->SetInputConnection(sphere->GetOutputPort()); vtkNew sphereActor; sphereActor->SetMapper(sphereMapper); vtkNew annulus; vtkNew clipper; clipper->SetInputConnection(sphere->GetOutputPort()); clipper->SetClipFunction(annulus); vtkNew clipMapper; clipMapper->SetInputConnection(clipper->GetOutputPort()); vtkNew clipActor; clipActor->SetMapper(clipMapper); clipActor->GetProperty()->SetColor(0, 1, 0); clipActor->VisibilityOff(); clipActor->SetScale(1.01, 1.01, 1.01); // Create the RenderWindow, Renderer and both Actors vtkNew renderer; renderer->AddActor(sphereActor); renderer->AddActor(clipActor); renderer->SetBackground(0.1, 0.2, 0.4); vtkNew renWin; renWin->SetMultiSamples(0); renWin->SetSize(300, 300); renWin->AddRenderer(renderer); vtkNew interactor; renWin->SetInteractor(interactor); renWin->Render(); vtkNew rep; rep->SetPlaceFactor(1.25); rep->PlaceWidget(sphere->GetOutput()->GetBounds()); vtkNew annulusWidget; annulusWidget->SetInteractor(interactor); annulusWidget->SetRepresentation(rep); annulusWidget->SetEnabled(true); // Add callback to update click following annulus widget. vtkNew myCallback; myCallback->Annulus = annulus; myCallback->Actor = clipActor; annulusWidget->AddObserver(vtkCommand::InteractionEvent, myCallback); vtkNew recorder; recorder->SetInteractor(interactor); #if 0 // set to 1 if recording recorder->SetFileName("./record.log"); recorder->Record(); interactor->Initialize(); renWin->Render(); recorder->On(); interactor->Start(); recorder->Stop(); #else recorder->ReadFromInputStringOn(); recorder->SetInputString(eventLog); // render the image interactor->Initialize(); renWin->Render(); recorder->Play(); // Remove the observers so we can go interactive. Without this the "-I" // testing option fails. recorder->Off(); interactor->Start(); #endif return EXIT_SUCCESS; }