1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    TestDistanceWidget.cxx
5 
6   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7   All rights reserved.
8   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10      This software is distributed WITHOUT ANY WARRANTY; without even
11      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12      PURPOSE.  See the above copyright notice for more information.
13 
14 =========================================================================*/
15 //
16 // This example tests the vtkDistanceWidget
17 
18 // First include the required header files for the VTK classes we are using.
19 #include "vtkDistanceWidget.h"
20 #include "vtkDistanceRepresentation3D.h"
21 #include "vtkSphereSource.h"
22 #include "vtkPolyDataMapper.h"
23 #include "vtkActor.h"
24 #include "vtkRenderer.h"
25 #include "vtkRenderWindow.h"
26 #include "vtkRenderWindowInteractor.h"
27 #include "vtkSmartPointer.h"
28 #include "vtkCommand.h"
29 #include "vtkInteractorEventRecorder.h"
30 #include "vtkRegressionTestImage.h"
31 #include "vtkDebugLeaks.h"
32 #include "vtkCoordinate.h"
33 #include "vtkMath.h"
34 #include "vtkHandleWidget.h"
35 #include "vtkPointHandleRepresentation3D.h"
36 #include "vtkProperty.h"
37 #include "vtkCamera.h"
38 #include "vtkFollower.h"
39 
40 #define VTK_CREATE(type, name) \
41   vtkSmartPointer<type> name = vtkSmartPointer<type>::New()
42 
43 const char TestDistanceWidget3DEventLog[] =
44 "# StreamVersion 1\n"
45 "RenderEvent 0 0 0 0 0 0 0\n"
46 "EnterEvent 292 123 0 0 0 0 0\n"
47 "MouseMoveEvent 280 131 0 0 0 0 0\n"
48 "MouseMoveEvent 268 137 0 0 0 0 0\n"
49 "MouseMoveEvent 258 143 0 0 0 0 0\n"
50 "MouseMoveEvent 250 147 0 0 0 0 0\n"
51 "MouseMoveEvent 246 153 0 0 0 0 0\n"
52 "MouseMoveEvent 245 155 0 0 0 0 0\n"
53 "MouseMoveEvent 244 157 0 0 0 0 0\n"
54 "MouseMoveEvent 240 161 0 0 0 0 0\n"
55 "MouseMoveEvent 239 163 0 0 0 0 0\n"
56 "MouseMoveEvent 235 167 0 0 0 0 0\n"
57 "MouseMoveEvent 233 173 0 0 0 0 0\n"
58 "MouseMoveEvent 229 177 0 0 0 0 0\n"
59 "MouseMoveEvent 223 183 0 0 0 0 0\n"
60 "MouseMoveEvent 222 184 0 0 0 0 0\n"
61 "MouseMoveEvent 221 186 0 0 0 0 0\n"
62 "MouseMoveEvent 220 187 0 0 0 0 0\n"
63 "MouseMoveEvent 219 188 0 0 0 0 0\n"
64 "MouseMoveEvent 219 189 0 0 0 0 0\n"
65 "LeftButtonPressEvent 219 189 0 0 0 0 0\n"
66 "RenderEvent 219 189 0 0 0 0 0\n"
67 "LeftButtonReleaseEvent 219 189 0 0 0 0 0\n"
68 "MouseMoveEvent 218 189 0 0 0 0 0\n"
69 "RenderEvent 218 189 0 0 0 0 0\n"
70 "MouseMoveEvent 218 188 0 0 0 0 0\n"
71 "RenderEvent 218 188 0 0 0 0 0\n"
72 "MouseMoveEvent 216 187 0 0 0 0 0\n"
73 "RenderEvent 216 187 0 0 0 0 0\n"
74 "MouseMoveEvent 212 183 0 0 0 0 0\n"
75 "RenderEvent 212 183 0 0 0 0 0\n"
76 "MouseMoveEvent 206 179 0 0 0 0 0\n"
77 "RenderEvent 206 179 0 0 0 0 0\n"
78 "MouseMoveEvent 202 175 0 0 0 0 0\n"
79 "RenderEvent 202 175 0 0 0 0 0\n"
80 "MouseMoveEvent 194 169 0 0 0 0 0\n"
81 "RenderEvent 194 169 0 0 0 0 0\n"
82 "MouseMoveEvent 188 165 0 0 0 0 0\n"
83 "RenderEvent 188 165 0 0 0 0 0\n"
84 "MouseMoveEvent 182 159 0 0 0 0 0\n"
85 "RenderEvent 182 159 0 0 0 0 0\n"
86 "MouseMoveEvent 174 153 0 0 0 0 0\n"
87 "RenderEvent 174 153 0 0 0 0 0\n"
88 "MouseMoveEvent 166 149 0 0 0 0 0\n"
89 "RenderEvent 166 149 0 0 0 0 0\n"
90 "MouseMoveEvent 162 143 0 0 0 0 0\n"
91 "RenderEvent 162 143 0 0 0 0 0\n"
92 "MouseMoveEvent 156 137 0 0 0 0 0\n"
93 "RenderEvent 156 137 0 0 0 0 0\n"
94 "MouseMoveEvent 148 135 0 0 0 0 0\n"
95 "RenderEvent 148 135 0 0 0 0 0\n"
96 "MouseMoveEvent 144 129 0 0 0 0 0\n"
97 "RenderEvent 144 129 0 0 0 0 0\n"
98 "MouseMoveEvent 140 125 0 0 0 0 0\n"
99 "RenderEvent 140 125 0 0 0 0 0\n"
100 "MouseMoveEvent 136 119 0 0 0 0 0\n"
101 "RenderEvent 136 119 0 0 0 0 0\n"
102 "MouseMoveEvent 134 118 0 0 0 0 0\n"
103 "RenderEvent 134 118 0 0 0 0 0\n"
104 "MouseMoveEvent 130 114 0 0 0 0 0\n"
105 "RenderEvent 130 114 0 0 0 0 0\n"
106 "MouseMoveEvent 128 113 0 0 0 0 0\n"
107 "RenderEvent 128 113 0 0 0 0 0\n"
108 "MouseMoveEvent 124 109 0 0 0 0 0\n"
109 "RenderEvent 124 109 0 0 0 0 0\n"
110 "MouseMoveEvent 118 105 0 0 0 0 0\n"
111 "RenderEvent 118 105 0 0 0 0 0\n"
112 "MouseMoveEvent 116 104 0 0 0 0 0\n"
113 "RenderEvent 116 104 0 0 0 0 0\n"
114 "MouseMoveEvent 112 100 0 0 0 0 0\n"
115 "RenderEvent 112 100 0 0 0 0 0\n"
116 "MouseMoveEvent 110 99 0 0 0 0 0\n"
117 "RenderEvent 110 99 0 0 0 0 0\n"
118 "MouseMoveEvent 106 95 0 0 0 0 0\n"
119 "RenderEvent 106 95 0 0 0 0 0\n"
120 "MouseMoveEvent 105 94 0 0 0 0 0\n"
121 "RenderEvent 105 94 0 0 0 0 0\n"
122 "MouseMoveEvent 104 93 0 0 0 0 0\n"
123 "RenderEvent 104 93 0 0 0 0 0\n"
124 "MouseMoveEvent 102 92 0 0 0 0 0\n"
125 "RenderEvent 102 92 0 0 0 0 0\n"
126 "MouseMoveEvent 101 91 0 0 0 0 0\n"
127 "RenderEvent 101 91 0 0 0 0 0\n"
128 "MouseMoveEvent 99 90 0 0 0 0 0\n"
129 "RenderEvent 99 90 0 0 0 0 0\n"
130 "MouseMoveEvent 97 89 0 0 0 0 0\n"
131 "RenderEvent 97 89 0 0 0 0 0\n"
132 "MouseMoveEvent 96 87 0 0 0 0 0\n"
133 "RenderEvent 96 87 0 0 0 0 0\n"
134 "MouseMoveEvent 94 86 0 0 0 0 0\n"
135 "RenderEvent 94 86 0 0 0 0 0\n"
136 "MouseMoveEvent 93 85 0 0 0 0 0\n"
137 "RenderEvent 93 85 0 0 0 0 0\n"
138 "MouseMoveEvent 92 85 0 0 0 0 0\n"
139 "RenderEvent 92 85 0 0 0 0 0\n"
140 "MouseMoveEvent 92 84 0 0 0 0 0\n"
141 "RenderEvent 92 84 0 0 0 0 0\n"
142 "MouseMoveEvent 90 84 0 0 0 0 0\n"
143 "RenderEvent 90 84 0 0 0 0 0\n"
144 "MouseMoveEvent 90 83 0 0 0 0 0\n"
145 "RenderEvent 90 83 0 0 0 0 0\n"
146 "MouseMoveEvent 89 83 0 0 0 0 0\n"
147 "RenderEvent 89 83 0 0 0 0 0\n"
148 "MouseMoveEvent 89 82 0 0 0 0 0\n"
149 "RenderEvent 89 82 0 0 0 0 0\n"
150 "LeftButtonPressEvent 89 82 0 0 0 0 0\n"
151 "RenderEvent 89 82 0 0 0 0 0\n"
152 "LeftButtonReleaseEvent 89 82 0 0 0 0 0\n"
153 "MouseMoveEvent 89 81 0 0 0 0 0\n"
154 "RenderEvent 89 81 0 0 0 0 0\n"
155 "MouseMoveEvent 89 80 0 0 0 0 0\n"
156 "RenderEvent 89 80 0 0 0 0 0\n"
157 "MouseMoveEvent 88 80 0 0 0 0 0\n"
158 "RenderEvent 88 80 0 0 0 0 0\n"
159 "MouseMoveEvent 88 79 0 0 0 0 0\n"
160 "RenderEvent 88 79 0 0 0 0 0\n"
161 "MouseMoveEvent 87 78 0 0 0 0 0\n"
162 "RenderEvent 87 78 0 0 0 0 0\n"
163 "MouseMoveEvent 87 77 0 0 0 0 0\n"
164 "RenderEvent 87 77 0 0 0 0 0\n"
165 "MouseMoveEvent 86 76 0 0 0 0 0\n"
166 "RenderEvent 86 76 0 0 0 0 0\n"
167 "MouseMoveEvent 86 74 0 0 0 0 0\n"
168 "RenderEvent 86 74 0 0 0 0 0\n"
169 "MouseMoveEvent 85 72 0 0 0 0 0\n"
170 "RenderEvent 85 72 0 0 0 0 0\n"
171 "MouseMoveEvent 85 71 0 0 0 0 0\n"
172 "RenderEvent 85 71 0 0 0 0 0\n"
173 "MouseMoveEvent 81 67 0 0 0 0 0\n"
174 "RenderEvent 81 67 0 0 0 0 0\n"
175 "MouseMoveEvent 81 64 0 0 0 0 0\n"
176 "RenderEvent 81 64 0 0 0 0 0\n"
177 "MouseMoveEvent 80 62 0 0 0 0 0\n"
178 "RenderEvent 80 62 0 0 0 0 0\n"
179 "MouseMoveEvent 79 60 0 0 0 0 0\n"
180 "RenderEvent 79 60 0 0 0 0 0\n"
181 "MouseMoveEvent 79 58 0 0 0 0 0\n"
182 "RenderEvent 79 58 0 0 0 0 0\n"
183 "MouseMoveEvent 78 56 0 0 0 0 0\n"
184 "RenderEvent 78 56 0 0 0 0 0\n"
185 "MouseMoveEvent 77 55 0 0 0 0 0\n"
186 "RenderEvent 77 55 0 0 0 0 0\n"
187 "MouseMoveEvent 77 54 0 0 0 0 0\n"
188 "RenderEvent 77 54 0 0 0 0 0\n"
189 "MouseMoveEvent 77 53 0 0 0 0 0\n"
190 "RenderEvent 77 53 0 0 0 0 0\n"
191 "MouseMoveEvent 78 53 0 0 0 0 0\n"
192 "RenderEvent 78 53 0 0 0 0 0\n"
193 "MouseMoveEvent 78 52 0 0 0 0 0\n"
194 "RenderEvent 78 52 0 0 0 0 0\n"
195 "MouseMoveEvent 79 52 0 0 0 0 0\n"
196 "RenderEvent 79 52 0 0 0 0 0\n"
197 "MouseMoveEvent 80 52 0 0 0 0 0\n"
198 "RenderEvent 80 52 0 0 0 0 0\n"
199 "MouseMoveEvent 80 53 0 0 0 0 0\n"
200 "RenderEvent 80 53 0 0 0 0 0\n"
201 "MouseMoveEvent 81 53 0 0 0 0 0\n"
202 "RenderEvent 81 53 0 0 0 0 0\n"
203 "MouseMoveEvent 81 54 0 0 0 0 0\n"
204 "RenderEvent 81 54 0 0 0 0 0\n"
205 "MouseMoveEvent 83 55 0 0 0 0 0\n"
206 "RenderEvent 83 55 0 0 0 0 0\n"
207 "MouseMoveEvent 84 56 0 0 0 0 0\n"
208 "RenderEvent 84 56 0 0 0 0 0\n"
209 "MouseMoveEvent 90 58 0 0 0 0 0\n"
210 "RenderEvent 90 58 0 0 0 0 0\n"
211 "MouseMoveEvent 92 59 0 0 0 0 0\n"
212 "RenderEvent 92 59 0 0 0 0 0\n"
213 "MouseMoveEvent 94 60 0 0 0 0 0\n"
214 "RenderEvent 94 60 0 0 0 0 0\n"
215 "MouseMoveEvent 102 64 0 0 0 0 0\n"
216 "RenderEvent 102 64 0 0 0 0 0\n"
217 "MouseMoveEvent 106 68 0 0 0 0 0\n"
218 "RenderEvent 106 68 0 0 0 0 0\n"
219 "MouseMoveEvent 114 74 0 0 0 0 0\n"
220 "RenderEvent 114 74 0 0 0 0 0\n"
221 "MouseMoveEvent 122 80 0 0 0 0 0\n"
222 "RenderEvent 122 80 0 0 0 0 0\n"
223 "MouseMoveEvent 130 86 0 0 0 0 0\n"
224 "RenderEvent 130 86 0 0 0 0 0\n"
225 "MouseMoveEvent 140 94 0 0 0 0 0\n"
226 "RenderEvent 140 94 0 0 0 0 0\n"
227 "MouseMoveEvent 150 102 0 0 0 0 0\n"
228 "RenderEvent 150 102 0 0 0 0 0\n"
229 "MouseMoveEvent 156 106 0 0 0 0 0\n"
230 "RenderEvent 156 106 0 0 0 0 0\n"
231 "MouseMoveEvent 166 112 0 0 0 0 0\n"
232 "RenderEvent 166 112 0 0 0 0 0\n"
233 "MouseMoveEvent 174 120 0 0 0 0 0\n"
234 "RenderEvent 174 120 0 0 0 0 0\n"
235 "MouseMoveEvent 182 128 0 0 0 0 0\n"
236 "RenderEvent 182 128 0 0 0 0 0\n"
237 "MouseMoveEvent 188 132 0 0 0 0 0\n"
238 "RenderEvent 188 132 0 0 0 0 0\n"
239 "MouseMoveEvent 194 138 0 0 0 0 0\n"
240 "RenderEvent 194 138 0 0 0 0 0\n"
241 "MouseMoveEvent 198 144 0 0 0 0 0\n"
242 "RenderEvent 198 144 0 0 0 0 0\n"
243 "MouseMoveEvent 199 146 0 0 0 0 0\n"
244 "RenderEvent 199 146 0 0 0 0 0\n"
245 "MouseMoveEvent 203 152 0 0 0 0 0\n"
246 "RenderEvent 203 152 0 0 0 0 0\n"
247 "MouseMoveEvent 204 154 0 0 0 0 0\n"
248 "RenderEvent 204 154 0 0 0 0 0\n"
249 "MouseMoveEvent 205 156 0 0 0 0 0\n"
250 "RenderEvent 205 156 0 0 0 0 0\n"
251 "MouseMoveEvent 206 157 0 0 0 0 0\n"
252 "RenderEvent 206 157 0 0 0 0 0\n"
253 "MouseMoveEvent 207 158 0 0 0 0 0\n"
254 "RenderEvent 207 158 0 0 0 0 0\n"
255 "MouseMoveEvent 207 159 0 0 0 0 0\n"
256 "RenderEvent 207 159 0 0 0 0 0\n"
257 "MouseMoveEvent 207 161 0 0 0 0 0\n"
258 "RenderEvent 207 161 0 0 0 0 0\n"
259 "MouseMoveEvent 208 162 0 0 0 0 0\n"
260 "RenderEvent 208 162 0 0 0 0 0\n"
261 "MouseMoveEvent 209 163 0 0 0 0 0\n"
262 "RenderEvent 209 163 0 0 0 0 0\n"
263 "MouseMoveEvent 210 164 0 0 0 0 0\n"
264 "RenderEvent 210 164 0 0 0 0 0\n"
265 "MouseMoveEvent 211 165 0 0 0 0 0\n"
266 "RenderEvent 211 165 0 0 0 0 0\n"
267 "MouseMoveEvent 211 166 0 0 0 0 0\n"
268 "RenderEvent 211 166 0 0 0 0 0\n"
269 "MouseMoveEvent 212 166 0 0 0 0 0\n"
270 "RenderEvent 212 166 0 0 0 0 0\n"
271 "MouseMoveEvent 212 167 0 0 0 0 0\n"
272 "RenderEvent 212 167 0 0 0 0 0\n"
273 "MouseMoveEvent 213 167 0 0 0 0 0\n"
274 "RenderEvent 213 167 0 0 0 0 0\n"
275 "MouseMoveEvent 213 168 0 0 0 0 0\n"
276 "RenderEvent 213 168 0 0 0 0 0\n"
277 "MouseMoveEvent 214 169 0 0 0 0 0\n"
278 "RenderEvent 214 169 0 0 0 0 0\n"
279 "MouseMoveEvent 215 170 0 0 0 0 0\n"
280 "RenderEvent 215 170 0 0 0 0 0\n"
281 "MouseMoveEvent 215 171 0 0 0 0 0\n"
282 "RenderEvent 215 171 0 0 0 0 0\n"
283 "MouseMoveEvent 216 172 0 0 0 0 0\n"
284 "RenderEvent 216 172 0 0 0 0 0\n"
285 "MouseMoveEvent 216 173 0 0 0 0 0\n"
286 "RenderEvent 216 173 0 0 0 0 0\n"
287 "MouseMoveEvent 217 174 0 0 0 0 0\n"
288 "RenderEvent 217 174 0 0 0 0 0\n"
289 "MouseMoveEvent 217 175 0 0 0 0 0\n"
290 "RenderEvent 217 175 0 0 0 0 0\n"
291 "MouseMoveEvent 217 176 0 0 0 0 0\n"
292 "RenderEvent 217 176 0 0 0 0 0\n"
293 "MouseMoveEvent 217 177 0 0 0 0 0\n"
294 "RenderEvent 217 177 0 0 0 0 0\n"
295 "MouseMoveEvent 217 178 0 0 0 0 0\n"
296 "RenderEvent 217 178 0 0 0 0 0\n"
297 "MouseMoveEvent 217 179 0 0 0 0 0\n"
298 "RenderEvent 217 179 0 0 0 0 0\n"
299 "MouseMoveEvent 217 180 0 0 0 0 0\n"
300 "RenderEvent 217 180 0 0 0 0 0\n"
301 "MouseMoveEvent 217 181 0 0 0 0 0\n"
302 "RenderEvent 217 181 0 0 0 0 0\n"
303 "MouseMoveEvent 217 182 0 0 0 0 0\n"
304 "RenderEvent 217 182 0 0 0 0 0\n"
305 "MouseMoveEvent 217 183 0 0 0 0 0\n"
306 "RenderEvent 217 183 0 0 0 0 0\n"
307 "MouseMoveEvent 217 184 0 0 0 0 0\n"
308 "RenderEvent 217 184 0 0 0 0 0\n"
309 "MouseMoveEvent 217 185 0 0 0 0 0\n"
310 "RenderEvent 217 185 0 0 0 0 0\n"
311 "MouseMoveEvent 217 186 0 0 0 0 0\n"
312 "RenderEvent 217 186 0 0 0 0 0\n"
313 "MouseMoveEvent 217 187 0 0 0 0 0\n"
314 "RenderEvent 217 187 0 0 0 0 0\n"
315 "MouseMoveEvent 216 188 0 0 0 0 0\n"
316 "RenderEvent 216 188 0 0 0 0 0\n"
317 "MouseMoveEvent 216 189 0 0 0 0 0\n"
318 "RenderEvent 216 189 0 0 0 0 0\n"
319 "LeftButtonPressEvent 216 189 0 0 0 0 0\n"
320 "RenderEvent 216 189 0 0 0 0 0\n"
321 "MouseMoveEvent 215 190 0 0 0 0 0\n"
322 "RenderEvent 215 190 0 0 0 0 0\n"
323 "MouseMoveEvent 213 191 0 0 0 0 0\n"
324 "RenderEvent 213 191 0 0 0 0 0\n"
325 "MouseMoveEvent 207 193 0 0 0 0 0\n"
326 "RenderEvent 207 193 0 0 0 0 0\n"
327 "MouseMoveEvent 199 197 0 0 0 0 0\n"
328 "RenderEvent 199 197 0 0 0 0 0\n"
329 "MouseMoveEvent 191 199 0 0 0 0 0\n"
330 "RenderEvent 191 199 0 0 0 0 0\n"
331 "MouseMoveEvent 183 203 0 0 0 0 0\n"
332 "RenderEvent 183 203 0 0 0 0 0\n"
333 "MouseMoveEvent 173 207 0 0 0 0 0\n"
334 "RenderEvent 173 207 0 0 0 0 0\n"
335 "MouseMoveEvent 165 211 0 0 0 0 0\n"
336 "RenderEvent 165 211 0 0 0 0 0\n"
337 "MouseMoveEvent 155 215 0 0 0 0 0\n"
338 "RenderEvent 155 215 0 0 0 0 0\n"
339 "MouseMoveEvent 147 219 0 0 0 0 0\n"
340 "RenderEvent 147 219 0 0 0 0 0\n"
341 "MouseMoveEvent 139 221 0 0 0 0 0\n"
342 "RenderEvent 139 221 0 0 0 0 0\n"
343 "MouseMoveEvent 131 223 0 0 0 0 0\n"
344 "RenderEvent 131 223 0 0 0 0 0\n"
345 "MouseMoveEvent 125 227 0 0 0 0 0\n"
346 "RenderEvent 125 227 0 0 0 0 0\n"
347 "MouseMoveEvent 119 229 0 0 0 0 0\n"
348 "RenderEvent 119 229 0 0 0 0 0\n"
349 "MouseMoveEvent 113 231 0 0 0 0 0\n"
350 "RenderEvent 113 231 0 0 0 0 0\n"
351 "MouseMoveEvent 107 233 0 0 0 0 0\n"
352 "RenderEvent 107 233 0 0 0 0 0\n"
353 "MouseMoveEvent 101 235 0 0 0 0 0\n"
354 "RenderEvent 101 235 0 0 0 0 0\n"
355 "MouseMoveEvent 99 236 0 0 0 0 0\n"
356 "RenderEvent 99 236 0 0 0 0 0\n"
357 "MouseMoveEvent 97 237 0 0 0 0 0\n"
358 "RenderEvent 97 237 0 0 0 0 0\n"
359 "MouseMoveEvent 95 237 0 0 0 0 0\n"
360 "RenderEvent 95 237 0 0 0 0 0\n"
361 "MouseMoveEvent 94 238 0 0 0 0 0\n"
362 "RenderEvent 94 238 0 0 0 0 0\n"
363 "MouseMoveEvent 92 239 0 0 0 0 0\n"
364 "RenderEvent 92 239 0 0 0 0 0\n"
365 "MouseMoveEvent 90 239 0 0 0 0 0\n"
366 "RenderEvent 90 239 0 0 0 0 0\n"
367 "MouseMoveEvent 88 239 0 0 0 0 0\n"
368 "RenderEvent 88 239 0 0 0 0 0\n"
369 "MouseMoveEvent 87 240 0 0 0 0 0\n"
370 "RenderEvent 87 240 0 0 0 0 0\n"
371 "MouseMoveEvent 86 240 0 0 0 0 0\n"
372 "RenderEvent 86 240 0 0 0 0 0\n"
373 "MouseMoveEvent 85 240 0 0 0 0 0\n"
374 "RenderEvent 85 240 0 0 0 0 0\n"
375 "MouseMoveEvent 84 240 0 0 0 0 0\n"
376 "RenderEvent 84 240 0 0 0 0 0\n"
377 "MouseMoveEvent 83 240 0 0 0 0 0\n"
378 "RenderEvent 83 240 0 0 0 0 0\n"
379 "MouseMoveEvent 82 240 0 0 0 0 0\n"
380 "RenderEvent 82 240 0 0 0 0 0\n"
381 "MouseMoveEvent 81 240 0 0 0 0 0\n"
382 "RenderEvent 81 240 0 0 0 0 0\n"
383 "MouseMoveEvent 80 241 0 0 0 0 0\n"
384 "RenderEvent 80 241 0 0 0 0 0\n"
385 "MouseMoveEvent 79 241 0 0 0 0 0\n"
386 "RenderEvent 79 241 0 0 0 0 0\n"
387 "MouseMoveEvent 77 241 0 0 0 0 0\n"
388 "RenderEvent 77 241 0 0 0 0 0\n"
389 "MouseMoveEvent 75 241 0 0 0 0 0\n"
390 "RenderEvent 75 241 0 0 0 0 0\n"
391 "MouseMoveEvent 74 241 0 0 0 0 0\n"
392 "RenderEvent 74 241 0 0 0 0 0\n"
393 "MouseMoveEvent 74 242 0 0 0 0 0\n"
394 "RenderEvent 74 242 0 0 0 0 0\n"
395 "MouseMoveEvent 73 242 0 0 0 0 0\n"
396 "RenderEvent 73 242 0 0 0 0 0\n"
397 "MouseMoveEvent 72 242 0 0 0 0 0\n"
398 "RenderEvent 72 242 0 0 0 0 0\n"
399 "MouseMoveEvent 71 242 0 0 0 0 0\n"
400 "RenderEvent 71 242 0 0 0 0 0\n"
401 "MouseMoveEvent 70 242 0 0 0 0 0\n"
402 "RenderEvent 70 242 0 0 0 0 0\n"
403 "MouseMoveEvent 69 242 0 0 0 0 0\n"
404 "RenderEvent 69 242 0 0 0 0 0\n"
405 "MouseMoveEvent 68 242 0 0 0 0 0\n"
406 "RenderEvent 68 242 0 0 0 0 0\n"
407 "MouseMoveEvent 67 242 0 0 0 0 0\n"
408 "RenderEvent 67 242 0 0 0 0 0\n"
409 "MouseMoveEvent 66 242 0 0 0 0 0\n"
410 "RenderEvent 66 242 0 0 0 0 0\n"
411 "MouseMoveEvent 65 242 0 0 0 0 0\n"
412 "RenderEvent 65 242 0 0 0 0 0\n"
413 "MouseMoveEvent 64 242 0 0 0 0 0\n"
414 "RenderEvent 64 242 0 0 0 0 0\n"
415 "MouseMoveEvent 64 241 0 0 0 0 0\n"
416 "RenderEvent 64 241 0 0 0 0 0\n"
417 "MouseMoveEvent 63 241 0 0 0 0 0\n"
418 "RenderEvent 63 241 0 0 0 0 0\n"
419 "MouseMoveEvent 63 240 0 0 0 0 0\n"
420 "RenderEvent 63 240 0 0 0 0 0\n"
421 "MouseMoveEvent 62 240 0 0 0 0 0\n"
422 "RenderEvent 62 240 0 0 0 0 0\n"
423 "MouseMoveEvent 62 239 0 0 0 0 0\n"
424 "RenderEvent 62 239 0 0 0 0 0\n"
425 "MouseMoveEvent 61 239 0 0 0 0 0\n"
426 "RenderEvent 61 239 0 0 0 0 0\n"
427 "MouseMoveEvent 60 239 0 0 0 0 0\n"
428 "RenderEvent 60 239 0 0 0 0 0\n"
429 "MouseMoveEvent 60 238 0 0 0 0 0\n"
430 "RenderEvent 60 238 0 0 0 0 0\n"
431 "MouseMoveEvent 60 237 0 0 0 0 0\n"
432 "RenderEvent 60 237 0 0 0 0 0\n"
433 "MouseMoveEvent 60 236 0 0 0 0 0\n"
434 "RenderEvent 60 236 0 0 0 0 0\n"
435 "MouseMoveEvent 60 235 0 0 0 0 0\n"
436 "RenderEvent 60 235 0 0 0 0 0\n"
437 "MouseMoveEvent 60 234 0 0 0 0 0\n"
438 "RenderEvent 60 234 0 0 0 0 0\n"
439 "MouseMoveEvent 60 233 0 0 0 0 0\n"
440 "RenderEvent 60 233 0 0 0 0 0\n"
441 "MouseMoveEvent 60 232 0 0 0 0 0\n"
442 "RenderEvent 60 232 0 0 0 0 0\n"
443 "MouseMoveEvent 60 231 0 0 0 0 0\n"
444 "RenderEvent 60 231 0 0 0 0 0\n"
445 "MouseMoveEvent 60 230 0 0 0 0 0\n"
446 "RenderEvent 60 230 0 0 0 0 0\n"
447 "MouseMoveEvent 60 229 0 0 0 0 0\n"
448 "RenderEvent 60 229 0 0 0 0 0\n"
449 "MouseMoveEvent 60 228 0 0 0 0 0\n"
450 "RenderEvent 60 228 0 0 0 0 0\n"
451 "MouseMoveEvent 60 227 0 0 0 0 0\n"
452 "RenderEvent 60 227 0 0 0 0 0\n"
453 "MouseMoveEvent 60 226 0 0 0 0 0\n"
454 "RenderEvent 60 226 0 0 0 0 0\n"
455 "MouseMoveEvent 60 225 0 0 0 0 0\n"
456 "RenderEvent 60 225 0 0 0 0 0\n"
457 "MouseMoveEvent 60 224 0 0 0 0 0\n"
458 "RenderEvent 60 224 0 0 0 0 0\n"
459 "MouseMoveEvent 60 223 0 0 0 0 0\n"
460 "RenderEvent 60 223 0 0 0 0 0\n"
461 "MouseMoveEvent 61 222 0 0 0 0 0\n"
462 "RenderEvent 61 222 0 0 0 0 0\n"
463 "MouseMoveEvent 61 221 0 0 0 0 0\n"
464 "RenderEvent 61 221 0 0 0 0 0\n"
465 "MouseMoveEvent 61 220 0 0 0 0 0\n"
466 "RenderEvent 61 220 0 0 0 0 0\n"
467 "MouseMoveEvent 61 219 0 0 0 0 0\n"
468 "RenderEvent 61 219 0 0 0 0 0\n"
469 "MouseMoveEvent 62 219 0 0 0 0 0\n"
470 "RenderEvent 62 219 0 0 0 0 0\n"
471 "MouseMoveEvent 62 218 0 0 0 0 0\n"
472 "RenderEvent 62 218 0 0 0 0 0\n"
473 "MouseMoveEvent 62 217 0 0 0 0 0\n"
474 "RenderEvent 62 217 0 0 0 0 0\n"
475 "LeftButtonReleaseEvent 62 217 0 0 0 0 0\n"
476 "RenderEvent 62 217 0 0 0 0 0\n"
477 "MouseMoveEvent 62 216 0 0 0 0 0\n"
478 "RenderEvent 62 216 0 0 0 0 0\n"
479 "MouseMoveEvent 62 215 0 0 0 0 0\n"
480 "RenderEvent 62 215 0 0 0 0 0\n"
481 "MouseMoveEvent 62 214 0 0 0 0 0\n"
482 "RenderEvent 62 214 0 0 0 0 0\n"
483 "MouseMoveEvent 63 214 0 0 0 0 0\n"
484 "RenderEvent 63 214 0 0 0 0 0\n"
485 "MouseMoveEvent 63 213 0 0 0 0 0\n"
486 "RenderEvent 63 213 0 0 0 0 0\n"
487 "MouseMoveEvent 64 211 0 0 0 0 0\n"
488 "RenderEvent 64 211 0 0 0 0 0\n"
489 "MouseMoveEvent 64 209 0 0 0 0 0\n"
490 "RenderEvent 64 209 0 0 0 0 0\n"
491 "MouseMoveEvent 65 207 0 0 0 0 0\n"
492 "RenderEvent 65 207 0 0 0 0 0\n"
493 "MouseMoveEvent 67 199 0 0 0 0 0\n"
494 "RenderEvent 67 199 0 0 0 0 0\n"
495 "MouseMoveEvent 67 191 0 0 0 0 0\n"
496 "RenderEvent 67 191 0 0 0 0 0\n"
497 "MouseMoveEvent 69 183 0 0 0 0 0\n"
498 "RenderEvent 69 183 0 0 0 0 0\n"
499 "MouseMoveEvent 71 175 0 0 0 0 0\n"
500 "RenderEvent 71 175 0 0 0 0 0\n"
501 "MouseMoveEvent 73 165 0 0 0 0 0\n"
502 "RenderEvent 73 165 0 0 0 0 0\n"
503 "MouseMoveEvent 73 155 0 0 0 0 0\n"
504 "RenderEvent 73 155 0 0 0 0 0\n"
505 "MouseMoveEvent 75 145 0 0 0 0 0\n"
506 "RenderEvent 75 145 0 0 0 0 0\n"
507 "MouseMoveEvent 77 133 0 0 0 0 0\n"
508 "RenderEvent 77 133 0 0 0 0 0\n"
509 "MouseMoveEvent 79 123 0 0 0 0 0\n"
510 "RenderEvent 79 123 0 0 0 0 0\n"
511 "MouseMoveEvent 81 113 0 0 0 0 0\n"
512 "RenderEvent 81 113 0 0 0 0 0\n"
513 "MouseMoveEvent 83 103 0 0 0 0 0\n"
514 "RenderEvent 83 103 0 0 0 0 0\n"
515 "MouseMoveEvent 83 95 0 0 0 0 0\n"
516 "RenderEvent 83 95 0 0 0 0 0\n"
517 "MouseMoveEvent 87 89 0 0 0 0 0\n"
518 "RenderEvent 87 89 0 0 0 0 0\n"
519 "MouseMoveEvent 89 83 0 0 0 0 0\n"
520 "RenderEvent 89 83 0 0 0 0 0\n"
521 "MouseMoveEvent 89 80 0 0 0 0 0\n"
522 "RenderEvent 89 80 0 0 0 0 0\n"
523 "MouseMoveEvent 89 78 0 0 0 0 0\n"
524 "RenderEvent 89 78 0 0 0 0 0\n"
525 "MouseMoveEvent 90 76 0 0 0 0 0\n"
526 "RenderEvent 90 76 0 0 0 0 0\n"
527 "MouseMoveEvent 90 75 0 0 0 0 0\n"
528 "RenderEvent 90 75 0 0 0 0 0\n"
529 "MouseMoveEvent 90 74 0 0 0 0 0\n"
530 "RenderEvent 90 74 0 0 0 0 0\n"
531 "MouseMoveEvent 90 73 0 0 0 0 0\n"
532 "RenderEvent 90 73 0 0 0 0 0\n"
533 "MouseMoveEvent 91 73 0 0 0 0 0\n"
534 "RenderEvent 91 73 0 0 0 0 0\n"
535 "MouseMoveEvent 91 74 0 0 0 0 0\n"
536 "RenderEvent 91 74 0 0 0 0 0\n"
537 "MouseMoveEvent 91 75 0 0 0 0 0\n"
538 "RenderEvent 91 75 0 0 0 0 0\n"
539 "MouseMoveEvent 91 76 0 0 0 0 0\n"
540 "RenderEvent 91 76 0 0 0 0 0\n"
541 "MouseMoveEvent 92 77 0 0 0 0 0\n"
542 "RenderEvent 92 77 0 0 0 0 0\n"
543 "MouseMoveEvent 92 78 0 0 0 0 0\n"
544 "RenderEvent 92 78 0 0 0 0 0\n"
545 "MouseMoveEvent 92 79 0 0 0 0 0\n"
546 "RenderEvent 92 79 0 0 0 0 0\n"
547 "MouseMoveEvent 92 80 0 0 0 0 0\n"
548 "RenderEvent 92 80 0 0 0 0 0\n"
549 "MouseMoveEvent 92 81 0 0 0 0 0\n"
550 "RenderEvent 92 81 0 0 0 0 0\n"
551 "LeftButtonPressEvent 92 81 0 0 0 0 0\n"
552 "RenderEvent 92 81 0 0 0 0 0\n"
553 "MouseMoveEvent 93 81 0 0 0 0 0\n"
554 "RenderEvent 93 81 0 0 0 0 0\n"
555 "MouseMoveEvent 94 81 0 0 0 0 0\n"
556 "RenderEvent 94 81 0 0 0 0 0\n"
557 "MouseMoveEvent 94 82 0 0 0 0 0\n"
558 "RenderEvent 94 82 0 0 0 0 0\n"
559 "MouseMoveEvent 95 83 0 0 0 0 0\n"
560 "RenderEvent 95 83 0 0 0 0 0\n"
561 "MouseMoveEvent 97 84 0 0 0 0 0\n"
562 "RenderEvent 97 84 0 0 0 0 0\n"
563 "MouseMoveEvent 98 86 0 0 0 0 0\n"
564 "RenderEvent 98 86 0 0 0 0 0\n"
565 "MouseMoveEvent 99 88 0 0 0 0 0\n"
566 "RenderEvent 99 88 0 0 0 0 0\n"
567 "MouseMoveEvent 101 89 0 0 0 0 0\n"
568 "RenderEvent 101 89 0 0 0 0 0\n"
569 "MouseMoveEvent 107 93 0 0 0 0 0\n"
570 "RenderEvent 107 93 0 0 0 0 0\n"
571 "MouseMoveEvent 113 97 0 0 0 0 0\n"
572 "RenderEvent 113 97 0 0 0 0 0\n"
573 "MouseMoveEvent 115 98 0 0 0 0 0\n"
574 "RenderEvent 115 98 0 0 0 0 0\n"
575 "MouseMoveEvent 119 102 0 0 0 0 0\n"
576 "RenderEvent 119 102 0 0 0 0 0\n"
577 "MouseMoveEvent 125 106 0 0 0 0 0\n"
578 "RenderEvent 125 106 0 0 0 0 0\n"
579 "MouseMoveEvent 129 110 0 0 0 0 0\n"
580 "RenderEvent 129 110 0 0 0 0 0\n"
581 "MouseMoveEvent 135 112 0 0 0 0 0\n"
582 "RenderEvent 135 112 0 0 0 0 0\n"
583 "MouseMoveEvent 139 116 0 0 0 0 0\n"
584 "RenderEvent 139 116 0 0 0 0 0\n"
585 "MouseMoveEvent 143 120 0 0 0 0 0\n"
586 "RenderEvent 143 120 0 0 0 0 0\n"
587 "MouseMoveEvent 145 121 0 0 0 0 0\n"
588 "RenderEvent 145 121 0 0 0 0 0\n"
589 "MouseMoveEvent 149 125 0 0 0 0 0\n"
590 "RenderEvent 149 125 0 0 0 0 0\n"
591 "MouseMoveEvent 151 126 0 0 0 0 0\n"
592 "RenderEvent 151 126 0 0 0 0 0\n"
593 "MouseMoveEvent 155 130 0 0 0 0 0\n"
594 "RenderEvent 155 130 0 0 0 0 0\n"
595 "MouseMoveEvent 157 131 0 0 0 0 0\n"
596 "RenderEvent 157 131 0 0 0 0 0\n"
597 "MouseMoveEvent 160 131 0 0 0 0 0\n"
598 "RenderEvent 160 131 0 0 0 0 0\n"
599 "MouseMoveEvent 162 132 0 0 0 0 0\n"
600 "RenderEvent 162 132 0 0 0 0 0\n"
601 "MouseMoveEvent 163 134 0 0 0 0 0\n"
602 "RenderEvent 163 134 0 0 0 0 0\n"
603 "MouseMoveEvent 165 135 0 0 0 0 0\n"
604 "RenderEvent 165 135 0 0 0 0 0\n"
605 "MouseMoveEvent 169 139 0 0 0 0 0\n"
606 "RenderEvent 169 139 0 0 0 0 0\n"
607 "MouseMoveEvent 171 140 0 0 0 0 0\n"
608 "RenderEvent 171 140 0 0 0 0 0\n"
609 "MouseMoveEvent 173 141 0 0 0 0 0\n"
610 "RenderEvent 173 141 0 0 0 0 0\n"
611 "MouseMoveEvent 174 143 0 0 0 0 0\n"
612 "RenderEvent 174 143 0 0 0 0 0\n"
613 "MouseMoveEvent 176 144 0 0 0 0 0\n"
614 "RenderEvent 176 144 0 0 0 0 0\n"
615 "MouseMoveEvent 178 144 0 0 0 0 0\n"
616 "RenderEvent 178 144 0 0 0 0 0\n"
617 "MouseMoveEvent 180 145 0 0 0 0 0\n"
618 "RenderEvent 180 145 0 0 0 0 0\n"
619 "MouseMoveEvent 182 146 0 0 0 0 0\n"
620 "RenderEvent 182 146 0 0 0 0 0\n"
621 "MouseMoveEvent 184 146 0 0 0 0 0\n"
622 "RenderEvent 184 146 0 0 0 0 0\n"
623 "MouseMoveEvent 186 147 0 0 0 0 0\n"
624 "RenderEvent 186 147 0 0 0 0 0\n"
625 "MouseMoveEvent 187 148 0 0 0 0 0\n"
626 "RenderEvent 187 148 0 0 0 0 0\n"
627 "MouseMoveEvent 189 148 0 0 0 0 0\n"
628 "RenderEvent 189 148 0 0 0 0 0\n"
629 "MouseMoveEvent 190 149 0 0 0 0 0\n"
630 "RenderEvent 190 149 0 0 0 0 0\n"
631 "MouseMoveEvent 191 149 0 0 0 0 0\n"
632 "RenderEvent 191 149 0 0 0 0 0\n"
633 "MouseMoveEvent 192 150 0 0 0 0 0\n"
634 "RenderEvent 192 150 0 0 0 0 0\n"
635 "MouseMoveEvent 194 150 0 0 0 0 0\n"
636 "RenderEvent 194 150 0 0 0 0 0\n"
637 "MouseMoveEvent 195 151 0 0 0 0 0\n"
638 "RenderEvent 195 151 0 0 0 0 0\n"
639 "MouseMoveEvent 196 151 0 0 0 0 0\n"
640 "RenderEvent 196 151 0 0 0 0 0\n"
641 "MouseMoveEvent 198 151 0 0 0 0 0\n"
642 "RenderEvent 198 151 0 0 0 0 0\n"
643 "MouseMoveEvent 199 152 0 0 0 0 0\n"
644 "RenderEvent 199 152 0 0 0 0 0\n"
645 "MouseMoveEvent 201 152 0 0 0 0 0\n"
646 "RenderEvent 201 152 0 0 0 0 0\n"
647 "MouseMoveEvent 203 153 0 0 0 0 0\n"
648 "RenderEvent 203 153 0 0 0 0 0\n"
649 "MouseMoveEvent 205 153 0 0 0 0 0\n"
650 "RenderEvent 205 153 0 0 0 0 0\n"
651 "MouseMoveEvent 207 153 0 0 0 0 0\n"
652 "RenderEvent 207 153 0 0 0 0 0\n"
653 "MouseMoveEvent 209 153 0 0 0 0 0\n"
654 "RenderEvent 209 153 0 0 0 0 0\n"
655 "MouseMoveEvent 210 153 0 0 0 0 0\n"
656 "RenderEvent 210 153 0 0 0 0 0\n"
657 "MouseMoveEvent 213 153 0 0 0 0 0\n"
658 "RenderEvent 213 153 0 0 0 0 0\n"
659 "MouseMoveEvent 215 153 0 0 0 0 0\n"
660 "RenderEvent 215 153 0 0 0 0 0\n"
661 "MouseMoveEvent 217 153 0 0 0 0 0\n"
662 "RenderEvent 217 153 0 0 0 0 0\n"
663 "MouseMoveEvent 219 153 0 0 0 0 0\n"
664 "RenderEvent 219 153 0 0 0 0 0\n"
665 "MouseMoveEvent 220 153 0 0 0 0 0\n"
666 "RenderEvent 220 153 0 0 0 0 0\n"
667 "MouseMoveEvent 221 153 0 0 0 0 0\n"
668 "RenderEvent 221 153 0 0 0 0 0\n"
669 "MouseMoveEvent 222 153 0 0 0 0 0\n"
670 "RenderEvent 222 153 0 0 0 0 0\n"
671 "MouseMoveEvent 224 153 0 0 0 0 0\n"
672 "RenderEvent 224 153 0 0 0 0 0\n"
673 "MouseMoveEvent 227 153 0 0 0 0 0\n"
674 "RenderEvent 227 153 0 0 0 0 0\n"
675 "MouseMoveEvent 228 153 0 0 0 0 0\n"
676 "RenderEvent 228 153 0 0 0 0 0\n"
677 "MouseMoveEvent 229 153 0 0 0 0 0\n"
678 "RenderEvent 229 153 0 0 0 0 0\n"
679 "MouseMoveEvent 230 153 0 0 0 0 0\n"
680 "RenderEvent 230 153 0 0 0 0 0\n"
681 "MouseMoveEvent 231 153 0 0 0 0 0\n"
682 "RenderEvent 231 153 0 0 0 0 0\n"
683 "MouseMoveEvent 232 153 0 0 0 0 0\n"
684 "RenderEvent 232 153 0 0 0 0 0\n"
685 "MouseMoveEvent 233 153 0 0 0 0 0\n"
686 "RenderEvent 233 153 0 0 0 0 0\n"
687 "MouseMoveEvent 234 153 0 0 0 0 0\n"
688 "RenderEvent 234 153 0 0 0 0 0\n"
689 "MouseMoveEvent 235 153 0 0 0 0 0\n"
690 "RenderEvent 235 153 0 0 0 0 0\n"
691 "MouseMoveEvent 236 153 0 0 0 0 0\n"
692 "RenderEvent 236 153 0 0 0 0 0\n"
693 "MouseMoveEvent 237 153 0 0 0 0 0\n"
694 "RenderEvent 237 153 0 0 0 0 0\n"
695 "MouseMoveEvent 238 153 0 0 0 0 0\n"
696 "RenderEvent 238 153 0 0 0 0 0\n"
697 "MouseMoveEvent 239 153 0 0 0 0 0\n"
698 "RenderEvent 239 153 0 0 0 0 0\n"
699 "MouseMoveEvent 240 153 0 0 0 0 0\n"
700 "RenderEvent 240 153 0 0 0 0 0\n"
701 "MouseMoveEvent 241 153 0 0 0 0 0\n"
702 "RenderEvent 241 153 0 0 0 0 0\n"
703 "MouseMoveEvent 242 153 0 0 0 0 0\n"
704 "RenderEvent 242 153 0 0 0 0 0\n"
705 "MouseMoveEvent 243 153 0 0 0 0 0\n"
706 "RenderEvent 243 153 0 0 0 0 0\n"
707 "MouseMoveEvent 244 153 0 0 0 0 0\n"
708 "RenderEvent 244 153 0 0 0 0 0\n"
709 "MouseMoveEvent 245 153 0 0 0 0 0\n"
710 "RenderEvent 245 153 0 0 0 0 0\n"
711 "MouseMoveEvent 246 153 0 0 0 0 0\n"
712 "RenderEvent 246 153 0 0 0 0 0\n"
713 "MouseMoveEvent 247 153 0 0 0 0 0\n"
714 "RenderEvent 247 153 0 0 0 0 0\n"
715 "MouseMoveEvent 248 153 0 0 0 0 0\n"
716 "RenderEvent 248 153 0 0 0 0 0\n"
717 "MouseMoveEvent 249 153 0 0 0 0 0\n"
718 "RenderEvent 249 153 0 0 0 0 0\n"
719 "MouseMoveEvent 250 153 0 0 0 0 0\n"
720 "RenderEvent 250 153 0 0 0 0 0\n"
721 "MouseMoveEvent 251 153 0 0 0 0 0\n"
722 "RenderEvent 251 153 0 0 0 0 0\n"
723 "MouseMoveEvent 252 153 0 0 0 0 0\n"
724 "RenderEvent 252 153 0 0 0 0 0\n"
725 "MouseMoveEvent 253 153 0 0 0 0 0\n"
726 "RenderEvent 253 153 0 0 0 0 0\n"
727 "MouseMoveEvent 254 153 0 0 0 0 0\n"
728 "RenderEvent 254 153 0 0 0 0 0\n"
729 "MouseMoveEvent 255 153 0 0 0 0 0\n"
730 "RenderEvent 255 153 0 0 0 0 0\n"
731 "MouseMoveEvent 256 153 0 0 0 0 0\n"
732 "RenderEvent 256 153 0 0 0 0 0\n"
733 "LeftButtonReleaseEvent 256 153 0 0 0 0 0\n"
734 "RenderEvent 256 153 0 0 0 0 0\n"
735 "MouseMoveEvent 256 152 0 0 0 0 0\n"
736 "RenderEvent 256 152 0 0 0 0 0\n"
737 "MouseMoveEvent 255 152 0 0 0 0 0\n"
738 "RenderEvent 255 152 0 0 0 0 0\n"
739 "MouseMoveEvent 255 150 0 0 0 0 0\n"
740 "RenderEvent 255 150 0 0 0 0 0\n"
741 "MouseMoveEvent 254 149 0 0 0 0 0\n"
742 "RenderEvent 254 149 0 0 0 0 0\n"
743 "MouseMoveEvent 253 148 0 0 0 0 0\n"
744 "RenderEvent 253 148 0 0 0 0 0\n"
745 "MouseMoveEvent 251 147 0 0 0 0 0\n"
746 "RenderEvent 251 147 0 0 0 0 0\n"
747 "MouseMoveEvent 250 146 0 0 0 0 0\n"
748 "RenderEvent 250 146 0 0 0 0 0\n"
749 "MouseMoveEvent 249 145 0 0 0 0 0\n"
750 "RenderEvent 249 145 0 0 0 0 0\n"
751 "MouseMoveEvent 247 144 0 0 0 0 0\n"
752 "RenderEvent 247 144 0 0 0 0 0\n"
753 "MouseMoveEvent 246 143 0 0 0 0 0\n"
754 "RenderEvent 246 143 0 0 0 0 0\n"
755 "MouseMoveEvent 244 142 0 0 0 0 0\n"
756 "RenderEvent 244 142 0 0 0 0 0\n"
757 "MouseMoveEvent 243 140 0 0 0 0 0\n"
758 "RenderEvent 243 140 0 0 0 0 0\n"
759 "MouseMoveEvent 241 139 0 0 0 0 0\n"
760 "RenderEvent 241 139 0 0 0 0 0\n"
761 "MouseMoveEvent 239 133 0 0 0 0 0\n"
762 "RenderEvent 239 133 0 0 0 0 0\n"
763 "MouseMoveEvent 235 127 0 0 0 0 0\n"
764 "RenderEvent 235 127 0 0 0 0 0\n"
765 "MouseMoveEvent 231 121 0 0 0 0 0\n"
766 "RenderEvent 231 121 0 0 0 0 0\n"
767 "MouseMoveEvent 229 113 0 0 0 0 0\n"
768 "RenderEvent 229 113 0 0 0 0 0\n"
769 "MouseMoveEvent 227 107 0 0 0 0 0\n"
770 "RenderEvent 227 107 0 0 0 0 0\n"
771 "MouseMoveEvent 223 101 0 0 0 0 0\n"
772 "RenderEvent 223 101 0 0 0 0 0\n"
773 "MouseMoveEvent 221 95 0 0 0 0 0\n"
774 "RenderEvent 221 95 0 0 0 0 0\n"
775 "MouseMoveEvent 219 87 0 0 0 0 0\n"
776 "RenderEvent 219 87 0 0 0 0 0\n"
777 "MouseMoveEvent 215 83 0 0 0 0 0\n"
778 "RenderEvent 215 83 0 0 0 0 0\n"
779 "MouseMoveEvent 213 77 0 0 0 0 0\n"
780 "RenderEvent 213 77 0 0 0 0 0\n"
781 "MouseMoveEvent 211 71 0 0 0 0 0\n"
782 "RenderEvent 211 71 0 0 0 0 0\n"
783 "MouseMoveEvent 209 65 0 0 0 0 0\n"
784 "RenderEvent 209 65 0 0 0 0 0\n"
785 "MouseMoveEvent 208 63 0 0 0 0 0\n"
786 "RenderEvent 208 63 0 0 0 0 0\n"
787 "MouseMoveEvent 207 61 0 0 0 0 0\n"
788 "RenderEvent 207 61 0 0 0 0 0\n"
789 "MouseMoveEvent 206 59 0 0 0 0 0\n"
790 "RenderEvent 206 59 0 0 0 0 0\n"
791 "MouseMoveEvent 206 56 0 0 0 0 0\n"
792 "RenderEvent 206 56 0 0 0 0 0\n"
793 "MouseMoveEvent 205 55 0 0 0 0 0\n"
794 "RenderEvent 205 55 0 0 0 0 0\n"
795 "MouseMoveEvent 204 53 0 0 0 0 0\n"
796 "RenderEvent 204 53 0 0 0 0 0\n"
797 "MouseMoveEvent 204 52 0 0 0 0 0\n"
798 "RenderEvent 204 52 0 0 0 0 0\n"
799 "MouseMoveEvent 203 50 0 0 0 0 0\n"
800 "RenderEvent 203 50 0 0 0 0 0\n"
801 "MouseMoveEvent 202 49 0 0 0 0 0\n"
802 "RenderEvent 202 49 0 0 0 0 0\n"
803 "MouseMoveEvent 201 48 0 0 0 0 0\n"
804 "RenderEvent 201 48 0 0 0 0 0\n"
805 "MouseMoveEvent 200 48 0 0 0 0 0\n"
806 "RenderEvent 200 48 0 0 0 0 0\n"
807 "KeyPressEvent 222 88 0 0 113 1 q\n"
808 "CharEvent 222 88 0 0 113 1 q\n"
809 "ExitEvent 222 88 0 0 113 1 q\n"
810 ;
811 
812 // This callback is responsible for adjusting the point position.
813 // It looks in the region around the point and finds the maximum or
814 // minimum value.
815 class vtkDistanceWidget3DCallback : public vtkCommand
816 {
817 public:
New()818   static vtkDistanceWidget3DCallback *New()
819     { return new vtkDistanceWidget3DCallback; }
820   void Execute(vtkObject *caller, unsigned long, void*) override;
vtkDistanceWidget3DCallback()821   vtkDistanceWidget3DCallback():Renderer(nullptr),RenderWindow(nullptr),DistanceWidget(nullptr),Distance(nullptr) {}
822   vtkRenderer *Renderer;
823   vtkRenderWindow *RenderWindow;
824   vtkDistanceWidget *DistanceWidget;
825   vtkDistanceRepresentation3D *Distance;
826 };
827 
828 
829 // Method re-positions the points using random perturbation
Execute(vtkObject *,unsigned long eid,void * callData)830 void vtkDistanceWidget3DCallback::Execute(vtkObject*, unsigned long eid, void* callData)
831 {
832   if ( eid == vtkCommand::InteractionEvent ||
833        eid == vtkCommand::EndInteractionEvent )
834   {
835         double pos1[3], pos2[3];
836     // Modify the measure axis
837     this->Distance->GetPoint1WorldPosition(pos1);
838     this->Distance->GetPoint2WorldPosition(pos2);
839     double dist=sqrt(vtkMath::Distance2BetweenPoints(pos1,pos2));
840 
841     char title[256];
842 //    this->Distance->GetAxis()->SetRange(0.0,dist);
843     snprintf(title,sizeof(title),"%-#6.3g",dist);
844 //    this->Distance->GetAxis()->SetTitle(title);
845   }
846   else
847   {
848     int pid = *(reinterpret_cast<int*>(callData));
849 
850     //From the point id, get the display coordinates
851     double pos1[3], pos2[3], *pos;
852     this->Distance->GetPoint1DisplayPosition(pos1);
853     this->Distance->GetPoint2DisplayPosition(pos2);
854     if ( pid == 0 )
855     {
856       pos = pos1;
857     }
858     else
859     {
860       pos = pos2;
861     }
862 
863     // Okay, render without the widget, and get the color buffer
864     int enabled = this->DistanceWidget->GetEnabled();
865     if ( enabled )
866     {
867       this->DistanceWidget->SetEnabled(0); //does a Render() as a side effect
868     }
869 
870     // Pretend we are doing something serious....just randomly bump the
871     // location of the point.
872     double p[3];
873     p[0] = pos[0] + static_cast<int>(vtkMath::Random(-5.5,5.5));
874     p[1] = pos[1] + static_cast<int>(vtkMath::Random(-5.5,5.5));
875     p[2] = 0.0;
876 
877     // Set the new position
878     if ( pid == 0 )
879     {
880       this->Distance->SetPoint1DisplayPosition(p);
881     }
882     else
883     {
884       this->Distance->SetPoint2DisplayPosition(p);
885     }
886 
887     // Side effect of a render here
888     if ( enabled )
889     {
890       this->DistanceWidget->SetEnabled(1);
891     }
892   }
893 }
894 
895 // The actual test function
TestDistanceWidget3D(int argc,char * argv[])896 int TestDistanceWidget3D( int argc, char *argv[] )
897 {
898   // Create the RenderWindow, Renderer and both Actors
899   //
900   VTK_CREATE(vtkRenderer, ren1);
901   VTK_CREATE(vtkRenderWindow, renWin);
902   renWin->AddRenderer(ren1);
903 
904   VTK_CREATE(vtkRenderWindowInteractor, iren);
905   iren->SetRenderWindow(renWin);
906 
907   // Create a test pipeline
908   //
909   VTK_CREATE(vtkSphereSource, ss);
910   VTK_CREATE(vtkPolyDataMapper, mapper);
911   mapper->SetInputConnection(ss->GetOutputPort());
912   VTK_CREATE(vtkActor, actor);
913   actor->SetMapper(mapper);
914 
915   // Create the widget and its representation
916   VTK_CREATE(vtkPointHandleRepresentation3D, handle);
917   handle->GetProperty()->SetColor(1,0,0);
918   VTK_CREATE(vtkDistanceRepresentation3D, rep);
919   rep->SetHandleRepresentation(handle);
920   rep->RulerModeOn();
921   rep->SetRulerDistance(0.1);
922   rep->SetNumberOfRulerTicks(4);
923   double glyphScale = rep->GetGlyphScale();
924   rep->SetGlyphScale(2.0);
925   if (rep->GetGlyphScale() != 2.0)
926   {
927     std::cerr << "Error setting glyph scale to 2.0, returned " << rep->GetGlyphScale() << std::endl;
928     return EXIT_FAILURE;
929   }
930   rep->SetGlyphScale(glyphScale);
931   if (rep->GetGlyphScale() != glyphScale)
932   {
933     std::cerr << "Error setting glyph scale to " << glyphScale << ", returned " << rep->GetGlyphScale() << std::endl;
934     return EXIT_FAILURE;
935   }
936   rep->SetGlyphScale(0.1);
937   if (rep->GetGlyphScale() != 0.1)
938   {
939     cerr << "Error setting glyph scale to 0.1, returned " << rep->GetGlyphScale() << std::endl;
940     return EXIT_FAILURE;
941   }
942 
943 
944   if (!rep->GetLineProperty())
945   {
946     std::cerr << "Error getting representation line property" << endl;
947     return EXIT_FAILURE;
948   }
949   rep->GetLineProperty()->SetColor(1.0, 0.0, 1.0);
950   rep->SetLabelPosition(0.45);
951   if (rep->GetLabelPosition() != 0.45)
952   {
953     std::cerr << "Error setting label position to 0.45, returned : " << rep->GetLabelPosition() << std::endl;
954     return EXIT_FAILURE;
955   }
956   for (int maxTicks = 1; maxTicks < 100; maxTicks += 10)
957   {
958     rep->SetMaximumNumberOfRulerTicks(maxTicks);
959     if (rep->GetMaximumNumberOfRulerTicks() != maxTicks)
960     {
961       std::cerr << "Error setting maximum number of ruler ticks to " << maxTicks << ", get returned " << rep->GetMaximumNumberOfRulerTicks() << std::endl;
962       return EXIT_FAILURE;
963     }
964   }
965   vtkActor *glyphActor = rep->GetGlyphActor();
966   if (!glyphActor)
967   {
968     std::cerr << "Error getting glyph actor" << std::endl;
969     return EXIT_FAILURE;
970   }
971   glyphActor->GetProperty()->SetColor(1.0, 0.0, 0.0);
972   vtkFollower *labelActor = rep->GetLabelActor();
973   if (!labelActor)
974   {
975     std::cerr << "Error getting label actor" << std::endl;
976     return EXIT_FAILURE;
977   }
978   labelActor->GetProperty()->SetColor(0.0, 1.0, 0.0);
979 
980   VTK_CREATE(vtkDistanceWidget, widget);
981   widget->SetInteractor(iren);
982   widget->SetRepresentation(rep);
983 
984   VTK_CREATE(vtkDistanceWidget3DCallback, mcbk);
985   mcbk->Renderer = ren1;
986   mcbk->RenderWindow = renWin;
987   mcbk->Distance = rep;
988   mcbk->DistanceWidget = widget;
989 
990   // Add the actors to the renderer, set the background and size
991   //
992   ren1->AddActor(actor);
993   ren1->SetBackground(0.1, 0.2, 0.4);
994   renWin->SetSize(300, 300);
995 
996   // record events
997   VTK_CREATE(vtkInteractorEventRecorder, recorder);
998   recorder->SetInteractor(iren);
999   recorder->On();
1000   //recorder->SetFileName("/tmp/record2.log");
1001   //recorder->Record();
1002   recorder->ReadFromInputStringOn();
1003   recorder->SetInputString(TestDistanceWidget3DEventLog);
1004 
1005   // render the image
1006   //
1007   iren->Initialize();
1008   renWin->Render();
1009   widget->On();
1010   renWin->Render();
1011   recorder->Play();
1012 
1013   // Remove the observers so we can go interactive. Without this the "-I"
1014   // testing option fails.
1015 
1016   int retVal = vtkRegressionTestImage( renWin );
1017   if ( retVal == vtkRegressionTester::DO_INTERACTOR)
1018   {
1019     iren->Start();
1020   }
1021 
1022   recorder->Off();
1023   widget->Off();
1024   widget->RemoveObserver(mcbk);
1025 
1026   return !retVal;
1027 }
1028