1#!/usr/bin/env python
2import vtk
3import vtk.test.Testing
4from vtk.util.misc import vtkGetDataRoot
5VTK_DATA_ROOT = vtkGetDataRoot()
6
7# This script exercises vtkInteractorStyleUser. It creates some
8# simple bindings for the mouse bottons and scroll wheel.
9
10# Helper math stuff
11import math
12def magnitude(v):
13    return math.sqrt(sum(v[i]*v[i] for i in range(0,3)))
14def dot(u, v):
15    return sum(u[i]*v[i] for i in range(0,3))
16def normalize(v):
17    vmag = magnitude(v)
18    return [ v[i]/vmag  for i in range(0,3) ]
19
20# Variables local to this module
21left = 0
22middle = 0
23right = 0
24
25oldPickD = []
26newPickD = []
27oldPickW = [0,0,0,0]
28newPickW = [0,0,0,0]
29fpD = [0,0,0]
30motionD = [0,0]
31motionW = [0,0,0]
32cam = ""
33
34# The binding actions are defined below
35# This general method computes some common information from mouse
36# motion and button presses.
37def getMotion(iRen,ren):
38    global oldPickD, newPickD, oldPickW, newPickW, fpD, fpW, posW
39    global motionD, motionW, cam
40    style = iRen.GetInteractorStyle()
41    oldPickD = iRen.GetLastEventPosition()
42    newPickD = iRen.GetEventPosition()
43    motionD[0] = newPickD[0] - oldPickD[0];
44    motionD[1] = newPickD[1] - oldPickD[1];
45    cam = ren.GetActiveCamera()
46    fpW = cam.GetFocalPoint()
47    posW = cam.GetPosition()
48    style.ComputeWorldToDisplay(ren, fpW[0], fpW[1], fpW[2], fpD)
49    focalDepth = fpD[2]
50    style.ComputeDisplayToWorld(ren,oldPickD[0],oldPickD[1],focalDepth,oldPickW)
51    style.ComputeDisplayToWorld(ren,newPickD[0],newPickD[1],focalDepth,newPickW)
52    motionW[0] = oldPickW[0] - newPickW[0]
53    motionW[1] = oldPickW[1] - newPickW[1]
54    motionW[2] = oldPickW[2] - newPickW[2]
55
56# Left mouse button is pan
57def mouseLeftMove(iRen,ren):
58    getMotion(iRen,ren)
59    cam.SetFocalPoint(fpW[0]+motionW[0],fpW[1]+motionW[1],fpW[2]+motionW[2])
60    cam.SetPosition(posW[0]+motionW[0],posW[1]+motionW[1],posW[2]+motionW[2])
61    iRen.Render()
62
63# Mouse middle button up/down is elevation, and left and right is azimuth
64def mouseMiddleMove(iRen,ren):
65    getMotion(iRen,ren)
66    if abs(motionD[0]) > abs(motionD[1]):
67        cam.Azimuth(-2.0*motionD[0])
68    else:
69        vup = cam.GetViewUp()
70        normalize(vup)
71        dop = cam.GetDirectionOfProjection();
72        normalize(dop)
73        theta = math.degrees( math.acos(-dot(vup,dop)) )
74        cam.Elevation(-motionD[1])
75    iRen.Render()
76
77# Right mouse button is rotate (left/right movement) and zoom in/out (up/down
78# movement)
79def mouseRightMove(iRen,ren):
80    getMotion(iRen,ren)
81    if abs(motionD[0]) > abs(motionD[1]):
82        cam.Azimuth(-2.0*motionD[0])
83    else:
84        cam.Zoom(1 + motionD[1]/100.0)
85    iRen.Render()
86
87# Mouse scroll wheel is zoom in/out
88def mouseWheelForward(iRen,ren):
89    cam = ren.GetActiveCamera()
90    cam.Zoom(1.1)
91    iRen.Render()
92def mouseWheelBackward(iRen,ren):
93    cam = ren.GetActiveCamera()
94    cam.Zoom(0.9)
95    iRen.Render()
96
97# The events to be played back
98Recording = \
99    "# StreamVersion 1\n\
100    EnterEvent 299 92 0 0 0 0 0\n\
101    MouseMoveEvent 299 92 0 0 0 0 0\n\
102    MouseMoveEvent 296 98 0 0 0 0 0\n\
103    MouseMoveEvent 293 104 0 0 0 0 0\n\
104    MouseMoveEvent 290 108 0 0 0 0 0\n\
105    MouseMoveEvent 287 112 0 0 0 0 0\n\
106    MouseMoveEvent 285 116 0 0 0 0 0\n\
107    MouseMoveEvent 282 120 0 0 0 0 0\n\
108    MouseMoveEvent 281 122 0 0 0 0 0\n\
109    MouseMoveEvent 279 124 0 0 0 0 0\n\
110    MouseMoveEvent 277 126 0 0 0 0 0\n\
111    MouseMoveEvent 276 127 0 0 0 0 0\n\
112    MouseMoveEvent 275 128 0 0 0 0 0\n\
113    MouseMoveEvent 273 129 0 0 0 0 0\n\
114    MouseMoveEvent 272 130 0 0 0 0 0\n\
115    MouseMoveEvent 271 131 0 0 0 0 0\n\
116    MouseMoveEvent 269 132 0 0 0 0 0\n\
117    LeftButtonPressEvent 269 132 0 0 0 0 0\n\
118    MouseMoveEvent 268 132 0 0 0 0 0\n\
119    MouseMoveEvent 267 132 0 0 0 0 0\n\
120    MouseMoveEvent 267 132 0 0 0 0 0\n\
121    MouseMoveEvent 265 132 0 0 0 0 0\n\
122    MouseMoveEvent 263 132 0 0 0 0 0\n\
123    MouseMoveEvent 260 132 0 0 0 0 0\n\
124    MouseMoveEvent 258 132 0 0 0 0 0\n\
125    MouseMoveEvent 255 133 0 0 0 0 0\n\
126    MouseMoveEvent 250 134 0 0 0 0 0\n\
127    MouseMoveEvent 246 135 0 0 0 0 0\n\
128    MouseMoveEvent 245 136 0 0 0 0 0\n\
129    MouseMoveEvent 243 136 0 0 0 0 0\n\
130    MouseMoveEvent 242 136 0 0 0 0 0\n\
131    MouseMoveEvent 241 136 0 0 0 0 0\n\
132    MouseMoveEvent 240 136 0 0 0 0 0\n\
133    MouseMoveEvent 239 136 0 0 0 0 0\n\
134    MouseMoveEvent 238 136 0 0 0 0 0\n\
135    MouseMoveEvent 237 136 0 0 0 0 0\n\
136    MouseMoveEvent 235 136 0 0 0 0 0\n\
137    MouseMoveEvent 231 136 0 0 0 0 0\n\
138    MouseMoveEvent 230 136 0 0 0 0 0\n\
139    MouseMoveEvent 227 136 0 0 0 0 0\n\
140    MouseMoveEvent 224 136 0 0 0 0 0\n\
141    MouseMoveEvent 219 136 0 0 0 0 0\n\
142    MouseMoveEvent 215 136 0 0 0 0 0\n\
143    MouseMoveEvent 211 136 0 0 0 0 0\n\
144    MouseMoveEvent 208 136 0 0 0 0 0\n\
145    MouseMoveEvent 205 136 0 0 0 0 0\n\
146    MouseMoveEvent 203 136 0 0 0 0 0\n\
147    MouseMoveEvent 201 136 0 0 0 0 0\n\
148    MouseMoveEvent 199 136 0 0 0 0 0\n\
149    MouseMoveEvent 197 136 0 0 0 0 0\n\
150    MouseMoveEvent 194 136 0 0 0 0 0\n\
151    MouseMoveEvent 191 136 0 0 0 0 0\n\
152    MouseMoveEvent 189 136 0 0 0 0 0\n\
153    MouseMoveEvent 187 136 0 0 0 0 0\n\
154    MouseMoveEvent 185 136 0 0 0 0 0\n\
155    MouseMoveEvent 181 136 0 0 0 0 0\n\
156    MouseMoveEvent 178 136 0 0 0 0 0\n\
157    MouseMoveEvent 175 136 0 0 0 0 0\n\
158    MouseMoveEvent 172 136 0 0 0 0 0\n\
159    MouseMoveEvent 168 136 0 0 0 0 0\n\
160    MouseMoveEvent 163 136 0 0 0 0 0\n\
161    MouseMoveEvent 159 136 0 0 0 0 0\n\
162    MouseMoveEvent 157 136 0 0 0 0 0\n\
163    MouseMoveEvent 155 136 0 0 0 0 0\n\
164    MouseMoveEvent 154 136 0 0 0 0 0\n\
165    MouseMoveEvent 153 136 0 0 0 0 0\n\
166    MouseMoveEvent 152 136 0 0 0 0 0\n\
167    MouseMoveEvent 151 136 0 0 0 0 0\n\
168    MouseMoveEvent 151 136 0 0 0 0 0\n\
169    MouseMoveEvent 153 135 0 0 0 0 0\n\
170    MouseMoveEvent 157 135 0 0 0 0 0\n\
171    MouseMoveEvent 163 133 0 0 0 0 0\n\
172    MouseMoveEvent 173 133 0 0 0 0 0\n\
173    MouseMoveEvent 180 133 0 0 0 0 0\n\
174    MouseMoveEvent 187 132 0 0 0 0 0\n\
175    MouseMoveEvent 197 132 0 0 0 0 0\n\
176    MouseMoveEvent 206 132 0 0 0 0 0\n\
177    MouseMoveEvent 212 131 0 0 0 0 0\n\
178    MouseMoveEvent 216 131 0 0 0 0 0\n\
179    MouseMoveEvent 218 131 0 0 0 0 0\n\
180    MouseMoveEvent 221 131 0 0 0 0 0\n\
181    MouseMoveEvent 221 131 0 0 0 0 0\n\
182    MouseMoveEvent 222 131 0 0 0 0 0\n\
183    MouseMoveEvent 223 131 0 0 0 0 0\n\
184    MouseMoveEvent 225 130 0 0 0 0 0\n\
185    MouseMoveEvent 225 130 0 0 0 0 0\n\
186    MouseMoveEvent 227 130 0 0 0 0 0\n\
187    MouseMoveEvent 227 130 0 0 0 0 0\n\
188    MouseMoveEvent 229 130 0 0 0 0 0\n\
189    MouseMoveEvent 231 130 0 0 0 0 0\n\
190    MouseMoveEvent 233 130 0 0 0 0 0\n\
191    MouseMoveEvent 234 130 0 0 0 0 0\n\
192    MouseMoveEvent 235 130 0 0 0 0 0\n\
193    MouseMoveEvent 237 130 0 0 0 0 0\n\
194    MouseMoveEvent 238 130 0 0 0 0 0\n\
195    MouseMoveEvent 239 130 0 0 0 0 0\n\
196    MouseMoveEvent 239 130 0 0 0 0 0\n\
197    MouseMoveEvent 239 130 0 0 0 0 0\n\
198    MouseMoveEvent 238 130 0 0 0 0 0\n\
199    MouseMoveEvent 237 130 0 0 0 0 0\n\
200    MouseMoveEvent 235 130 0 0 0 0 0\n\
201    MouseMoveEvent 234 130 0 0 0 0 0\n\
202    MouseMoveEvent 233 130 0 0 0 0 0\n\
203    LeftButtonReleaseEvent 233 130 0 0 0 0 0\n\
204    MouseMoveEvent 233 130 0 0 0 0 0\n\
205    MouseMoveEvent 231 129 0 0 0 0 0\n\
206    MouseMoveEvent 228 128 0 0 0 0 0\n\
207    MouseMoveEvent 227 126 0 0 0 0 0\n\
208    MouseMoveEvent 226 126 0 0 0 0 0\n\
209    MouseMoveEvent 224 125 0 0 0 0 0\n\
210    MouseMoveEvent 219 124 0 0 0 0 0\n\
211    MouseMoveEvent 217 124 0 0 0 0 0\n\
212    MouseMoveEvent 216 123 0 0 0 0 0\n\
213    MouseMoveEvent 215 122 0 0 0 0 0\n\
214    MouseMoveEvent 213 122 0 0 0 0 0\n\
215    MouseMoveEvent 212 122 0 0 0 0 0\n\
216    MouseMoveEvent 209 121 0 0 0 0 0\n\
217    MouseMoveEvent 208 120 0 0 0 0 0\n\
218    MouseMoveEvent 207 120 0 0 0 0 0\n\
219    MouseMoveEvent 205 118 0 0 0 0 0\n\
220    MouseMoveEvent 204 117 0 0 0 0 0\n\
221    MouseMoveEvent 204 118 0 0 0 0 0\n\
222    MouseMoveEvent 204 122 0 0 0 0 0\n\
223    MouseMoveEvent 204 125 0 0 0 0 0\n\
224    MouseMoveEvent 204 129 0 0 0 0 0\n\
225    MouseMoveEvent 204 133 0 0 0 0 0\n\
226    MouseMoveEvent 204 136 0 0 0 0 0\n\
227    MouseMoveEvent 204 140 0 0 0 0 0\n\
228    MouseMoveEvent 204 142 0 0 0 0 0\n\
229    MouseMoveEvent 204 145 0 0 0 0 0\n\
230    MouseMoveEvent 204 147 0 0 0 0 0\n\
231    MouseMoveEvent 204 149 0 0 0 0 0\n\
232    MouseMoveEvent 204 152 0 0 0 0 0\n\
233    MouseMoveEvent 205 154 0 0 0 0 0\n\
234    MouseMoveEvent 205 156 0 0 0 0 0\n\
235    MouseMoveEvent 205 158 0 0 0 0 0\n\
236    MouseMoveEvent 206 160 0 0 0 0 0\n\
237    MouseMoveEvent 206 162 0 0 0 0 0\n\
238    MouseMoveEvent 207 163 0 0 0 0 0\n\
239    MouseMoveEvent 207 166 0 0 0 0 0\n\
240    MouseMoveEvent 207 168 0 0 0 0 0\n\
241    MouseMoveEvent 207 169 0 0 0 0 0\n\
242    MouseMoveEvent 208 169 0 0 0 0 0\n\
243    MouseMoveEvent 208 170 0 0 0 0 0\n\
244    MouseMoveEvent 208 172 0 0 0 0 0\n\
245    MiddleButtonPressEvent 208 172 0 0 0 0 0\n\
246    MouseMoveEvent 209 172 0 0 0 0 0\n\
247    MouseMoveEvent 209 173 0 0 0 0 0\n\
248    MouseMoveEvent 209 174 0 0 0 0 0\n\
249    MouseMoveEvent 209 174 0 0 0 0 0\n\
250    MouseMoveEvent 209 176 0 0 0 0 0\n\
251    MouseMoveEvent 209 177 0 0 0 0 0\n\
252    MouseMoveEvent 209 178 0 0 0 0 0\n\
253    MouseMoveEvent 209 179 0 0 0 0 0\n\
254    MouseMoveEvent 209 180 0 0 0 0 0\n\
255    MouseMoveEvent 210 182 0 0 0 0 0\n\
256    MouseMoveEvent 211 184 0 0 0 0 0\n\
257    MouseMoveEvent 211 186 0 0 0 0 0\n\
258    MouseMoveEvent 212 188 0 0 0 0 0\n\
259    MouseMoveEvent 212 190 0 0 0 0 0\n\
260    MouseMoveEvent 213 192 0 0 0 0 0\n\
261    MouseMoveEvent 214 196 0 0 0 0 0\n\
262    MouseMoveEvent 214 198 0 0 0 0 0\n\
263    MouseMoveEvent 215 201 0 0 0 0 0\n\
264    MouseMoveEvent 215 204 0 0 0 0 0\n\
265    MouseMoveEvent 216 206 0 0 0 0 0\n\
266    MouseMoveEvent 217 209 0 0 0 0 0\n\
267    MouseMoveEvent 217 212 0 0 0 0 0\n\
268    MouseMoveEvent 218 213 0 0 0 0 0\n\
269    MouseMoveEvent 218 214 0 0 0 0 0\n\
270    MouseMoveEvent 218 216 0 0 0 0 0\n\
271    MouseMoveEvent 218 217 0 0 0 0 0\n\
272    MouseMoveEvent 218 218 0 0 0 0 0\n\
273    MouseMoveEvent 218 218 0 0 0 0 0\n\
274    MouseMoveEvent 218 219 0 0 0 0 0\n\
275    MouseMoveEvent 218 218 0 0 0 0 0\n\
276    MouseMoveEvent 218 215 0 0 0 0 0\n\
277    MouseMoveEvent 218 212 0 0 0 0 0\n\
278    MouseMoveEvent 218 210 0 0 0 0 0\n\
279    MouseMoveEvent 218 206 0 0 0 0 0\n\
280    MouseMoveEvent 218 203 0 0 0 0 0\n\
281    MouseMoveEvent 218 200 0 0 0 0 0\n\
282    MouseMoveEvent 218 197 0 0 0 0 0\n\
283    MouseMoveEvent 218 194 0 0 0 0 0\n\
284    MouseMoveEvent 218 192 0 0 0 0 0\n\
285    MouseMoveEvent 218 189 0 0 0 0 0\n\
286    MouseMoveEvent 218 186 0 0 0 0 0\n\
287    MouseMoveEvent 218 183 0 0 0 0 0\n\
288    MouseMoveEvent 218 182 0 0 0 0 0\n\
289    MouseMoveEvent 218 179 0 0 0 0 0\n\
290    MouseMoveEvent 218 178 0 0 0 0 0\n\
291    MouseMoveEvent 218 176 0 0 0 0 0\n\
292    MouseMoveEvent 218 175 0 0 0 0 0\n\
293    MouseMoveEvent 218 174 0 0 0 0 0\n\
294    MouseMoveEvent 218 172 0 0 0 0 0\n\
295    MouseMoveEvent 218 171 0 0 0 0 0\n\
296    MouseMoveEvent 218 169 0 0 0 0 0\n\
297    MouseMoveEvent 218 168 0 0 0 0 0\n\
298    MouseMoveEvent 218 167 0 0 0 0 0\n\
299    MouseMoveEvent 218 166 0 0 0 0 0\n\
300    MouseMoveEvent 218 166 0 0 0 0 0\n\
301    MouseMoveEvent 218 164 0 0 0 0 0\n\
302    MouseMoveEvent 218 163 0 0 0 0 0\n\
303    MouseMoveEvent 218 162 0 0 0 0 0\n\
304    MouseMoveEvent 218 161 0 0 0 0 0\n\
305    MouseMoveEvent 218 160 0 0 0 0 0\n\
306    MouseMoveEvent 218 159 0 0 0 0 0\n\
307    MouseMoveEvent 218 158 0 0 0 0 0\n\
308    MouseMoveEvent 218 157 0 0 0 0 0\n\
309    MouseMoveEvent 218 156 0 0 0 0 0\n\
310    MouseMoveEvent 218 156 0 0 0 0 0\n\
311    MiddleButtonReleaseEvent 218 156 0 0 0 0 0\n\
312    MouseMoveEvent 218 156 0 0 0 0 0\n\
313    MouseMoveEvent 217 156 0 0 0 0 0\n\
314    MouseMoveEvent 214 156 0 0 0 0 0\n\
315    MouseMoveEvent 210 156 0 0 0 0 0\n\
316    MouseMoveEvent 204 156 0 0 0 0 0\n\
317    MouseMoveEvent 197 158 0 0 0 0 0\n\
318    MouseMoveEvent 193 158 0 0 0 0 0\n\
319    MouseMoveEvent 183 161 0 0 0 0 0\n\
320    MouseMoveEvent 173 163 0 0 0 0 0\n\
321    MiddleButtonPressEvent 173 163 0 0 0 0 0\n\
322    MouseMoveEvent 165 164 0 0 0 0 0\n\
323    MouseMoveEvent 155 166 0 0 0 0 0\n\
324    MouseMoveEvent 147 167 0 0 0 0 0\n\
325    MouseMoveEvent 137 169 0 0 0 0 0\n\
326    MouseMoveEvent 131 171 0 0 0 0 0\n\
327    MouseMoveEvent 124 172 0 0 0 0 0\n\
328    MouseMoveEvent 121 173 0 0 0 0 0\n\
329    MouseMoveEvent 119 173 0 0 0 0 0\n\
330    MouseMoveEvent 118 173 0 0 0 0 0\n\
331    MouseMoveEvent 117 174 0 0 0 0 0\n\
332    MouseMoveEvent 116 174 0 0 0 0 0\n\
333    MouseMoveEvent 115 174 0 0 0 0 0\n\
334    MouseMoveEvent 113 174 0 0 0 0 0\n\
335    MouseMoveEvent 110 174 0 0 0 0 0\n\
336    MouseMoveEvent 108 174 0 0 0 0 0\n\
337    MouseMoveEvent 106 174 0 0 0 0 0\n\
338    MouseMoveEvent 105 174 0 0 0 0 0\n\
339    MouseMoveEvent 103 174 0 0 0 0 0\n\
340    MouseMoveEvent 103 174 0 0 0 0 0\n\
341    MouseMoveEvent 101 175 0 0 0 0 0\n\
342    MouseMoveEvent 101 175 0 0 0 0 0\n\
343    MouseMoveEvent 100 175 0 0 0 0 0\n\
344    MouseMoveEvent 101 175 0 0 0 0 0\n\
345    MouseMoveEvent 104 175 0 0 0 0 0\n\
346    MouseMoveEvent 107 175 0 0 0 0 0\n\
347    MouseMoveEvent 112 175 0 0 0 0 0\n\
348    MouseMoveEvent 118 175 0 0 0 0 0\n\
349    MouseMoveEvent 122 175 0 0 0 0 0\n\
350    MouseMoveEvent 128 175 0 0 0 0 0\n\
351    MouseMoveEvent 132 175 0 0 0 0 0\n\
352    MouseMoveEvent 136 175 0 0 0 0 0\n\
353    MouseMoveEvent 142 175 0 0 0 0 0\n\
354    MouseMoveEvent 145 175 0 0 0 0 0\n\
355    MouseMoveEvent 148 175 0 0 0 0 0\n\
356    MouseMoveEvent 151 175 0 0 0 0 0\n\
357    MouseMoveEvent 153 175 0 0 0 0 0\n\
358    MouseMoveEvent 154 175 0 0 0 0 0\n\
359    MouseMoveEvent 155 175 0 0 0 0 0\n\
360    MouseMoveEvent 155 174 0 0 0 0 0\n\
361    MouseMoveEvent 156 174 0 0 0 0 0\n\
362    MouseMoveEvent 157 174 0 0 0 0 0\n\
363    MouseMoveEvent 157 174 0 0 0 0 0\n\
364    MouseMoveEvent 158 174 0 0 0 0 0\n\
365    MouseMoveEvent 159 174 0 0 0 0 0\n\
366    MouseMoveEvent 159 174 0 0 0 0 0\n\
367    MouseMoveEvent 161 174 0 0 0 0 0\n\
368    MouseMoveEvent 164 174 0 0 0 0 0\n\
369    MouseMoveEvent 166 174 0 0 0 0 0\n\
370    MouseMoveEvent 169 174 0 0 0 0 0\n\
371    MouseMoveEvent 172 174 0 0 0 0 0\n\
372    MouseMoveEvent 174 174 0 0 0 0 0\n\
373    MouseMoveEvent 177 174 0 0 0 0 0\n\
374    MouseMoveEvent 178 174 0 0 0 0 0\n\
375    MouseMoveEvent 179 174 0 0 0 0 0\n\
376    MouseMoveEvent 181 174 0 0 0 0 0\n\
377    MouseMoveEvent 181 174 0 0 0 0 0\n\
378    MouseMoveEvent 182 174 0 0 0 0 0\n\
379    MouseMoveEvent 183 175 0 0 0 0 0\n\
380    MouseMoveEvent 183 175 0 0 0 0 0\n\
381    MouseMoveEvent 184 175 0 0 0 0 0\n\
382    MouseMoveEvent 185 175 0 0 0 0 0\n\
383    MiddleButtonReleaseEvent 185 175 0 0 0 0 0\n\
384    MouseMoveEvent 185 175 0 0 0 0 0\n\
385    RightButtonPressEvent 185 175 0 0 0 0 0\n\
386    MouseMoveEvent 185 176 0 0 0 0 0\n\
387    MouseMoveEvent 185 178 0 0 0 0 0\n\
388    MouseMoveEvent 183 181 0 0 0 0 0\n\
389    MouseMoveEvent 183 183 0 0 0 0 0\n\
390    MouseMoveEvent 183 185 0 0 0 0 0\n\
391    MouseMoveEvent 182 188 0 0 0 0 0\n\
392    MouseMoveEvent 182 189 0 0 0 0 0\n\
393    MouseMoveEvent 182 191 0 0 0 0 0\n\
394    MouseMoveEvent 182 193 0 0 0 0 0\n\
395    MouseMoveEvent 182 194 0 0 0 0 0\n\
396    MouseMoveEvent 182 195 0 0 0 0 0\n\
397    MouseMoveEvent 182 196 0 0 0 0 0\n\
398    MouseMoveEvent 182 198 0 0 0 0 0\n\
399    MouseMoveEvent 182 199 0 0 0 0 0\n\
400    MouseMoveEvent 182 200 0 0 0 0 0\n\
401    MouseMoveEvent 182 201 0 0 0 0 0\n\
402    MouseMoveEvent 182 202 0 0 0 0 0\n\
403    MouseMoveEvent 182 203 0 0 0 0 0\n\
404    MouseMoveEvent 182 204 0 0 0 0 0\n\
405    MouseMoveEvent 182 204 0 0 0 0 0\n\
406    MouseMoveEvent 182 206 0 0 0 0 0\n\
407    MouseMoveEvent 182 206 0 0 0 0 0\n\
408    MouseMoveEvent 182 207 0 0 0 0 0\n\
409    MouseMoveEvent 182 208 0 0 0 0 0\n\
410    MouseMoveEvent 182 210 0 0 0 0 0\n\
411    MouseMoveEvent 182 212 0 0 0 0 0\n\
412    MouseMoveEvent 182 213 0 0 0 0 0\n\
413    MouseMoveEvent 182 215 0 0 0 0 0\n\
414    MouseMoveEvent 182 216 0 0 0 0 0\n\
415    MouseMoveEvent 182 218 0 0 0 0 0\n\
416    MouseMoveEvent 182 221 0 0 0 0 0\n\
417    MouseMoveEvent 183 224 0 0 0 0 0\n\
418    MouseMoveEvent 184 226 0 0 0 0 0\n\
419    MouseMoveEvent 184 228 0 0 0 0 0\n\
420    MouseMoveEvent 185 230 0 0 0 0 0\n\
421    MouseMoveEvent 185 232 0 0 0 0 0\n\
422    MouseMoveEvent 185 233 0 0 0 0 0\n\
423    MouseMoveEvent 185 234 0 0 0 0 0\n\
424    MouseMoveEvent 185 237 0 0 0 0 0\n\
425    MouseMoveEvent 186 238 0 0 0 0 0\n\
426    MouseMoveEvent 187 240 0 0 0 0 0\n\
427    MouseMoveEvent 187 241 0 0 0 0 0\n\
428    MouseMoveEvent 187 242 0 0 0 0 0\n\
429    MouseMoveEvent 187 244 0 0 0 0 0\n\
430    MouseMoveEvent 188 245 0 0 0 0 0\n\
431    MouseMoveEvent 188 246 0 0 0 0 0\n\
432    MouseMoveEvent 188 247 0 0 0 0 0\n\
433    MouseMoveEvent 189 248 0 0 0 0 0\n\
434    MouseMoveEvent 189 249 0 0 0 0 0\n\
435    MouseMoveEvent 189 250 0 0 0 0 0\n\
436    MouseMoveEvent 189 250 0 0 0 0 0\n\
437    MouseMoveEvent 189 251 0 0 0 0 0\n\
438    MouseMoveEvent 190 252 0 0 0 0 0\n\
439    MouseMoveEvent 190 252 0 0 0 0 0\n\
440    MouseMoveEvent 190 254 0 0 0 0 0\n\
441    MouseMoveEvent 191 255 0 0 0 0 0\n\
442    MouseMoveEvent 191 256 0 0 0 0 0\n\
443    MouseMoveEvent 192 258 0 0 0 0 0\n\
444    MouseMoveEvent 192 259 0 0 0 0 0\n\
445    MouseMoveEvent 193 261 0 0 0 0 0\n\
446    MouseMoveEvent 193 264 0 0 0 0 0\n\
447    MouseMoveEvent 193 265 0 0 0 0 0\n\
448    MouseMoveEvent 194 267 0 0 0 0 0\n\
449    MouseMoveEvent 194 269 0 0 0 0 0\n\
450    MouseMoveEvent 194 270 0 0 0 0 0\n\
451    MouseMoveEvent 195 273 0 0 0 0 0\n\
452    MouseMoveEvent 196 275 0 0 0 0 0\n\
453    MouseMoveEvent 196 276 0 0 0 0 0\n\
454    MouseMoveEvent 197 278 0 0 0 0 0\n\
455    MouseMoveEvent 197 279 0 0 0 0 0\n\
456    MouseMoveEvent 197 280 0 0 0 0 0\n\
457    MouseMoveEvent 197 280 0 0 0 0 0\n\
458    MouseMoveEvent 197 282 0 0 0 0 0\n\
459    MouseMoveEvent 197 282 0 0 0 0 0\n\
460    MouseMoveEvent 197 284 0 0 0 0 0\n\
461    MouseMoveEvent 197 284 0 0 0 0 0\n\
462    MouseMoveEvent 197 286 0 0 0 0 0\n\
463    MouseMoveEvent 197 287 0 0 0 0 0\n\
464    MouseMoveEvent 198 288 0 0 0 0 0\n\
465    MouseMoveEvent 198 288 0 0 0 0 0\n\
466    MouseMoveEvent 198 289 0 0 0 0 0\n\
467    MouseMoveEvent 198 288 0 0 0 0 0\n\
468    MouseMoveEvent 198 287 0 0 0 0 0\n\
469    MouseMoveEvent 198 286 0 0 0 0 0\n\
470    MouseMoveEvent 197 283 0 0 0 0 0\n\
471    MouseMoveEvent 197 280 0 0 0 0 0\n\
472    MouseMoveEvent 196 278 0 0 0 0 0\n\
473    MouseMoveEvent 195 276 0 0 0 0 0\n\
474    MouseMoveEvent 193 272 0 0 0 0 0\n\
475    MouseMoveEvent 193 269 0 0 0 0 0\n\
476    MouseMoveEvent 193 266 0 0 0 0 0\n\
477    MouseMoveEvent 192 262 0 0 0 0 0\n\
478    MouseMoveEvent 191 258 0 0 0 0 0\n\
479    MouseMoveEvent 191 256 0 0 0 0 0\n\
480    MouseMoveEvent 190 253 0 0 0 0 0\n\
481    MouseMoveEvent 189 251 0 0 0 0 0\n\
482    MouseMoveEvent 189 249 0 0 0 0 0\n\
483    MouseMoveEvent 189 248 0 0 0 0 0\n\
484    MouseMoveEvent 189 246 0 0 0 0 0\n\
485    MouseMoveEvent 189 246 0 0 0 0 0\n\
486    MouseMoveEvent 189 244 0 0 0 0 0\n\
487    MouseMoveEvent 189 244 0 0 0 0 0\n\
488    MouseMoveEvent 189 243 0 0 0 0 0\n\
489    MouseMoveEvent 189 242 0 0 0 0 0\n\
490    MouseMoveEvent 189 242 0 0 0 0 0\n\
491    MouseMoveEvent 188 241 0 0 0 0 0\n\
492    MouseMoveEvent 188 240 0 0 0 0 0\n\
493    MouseMoveEvent 188 238 0 0 0 0 0\n\
494    MouseMoveEvent 188 237 0 0 0 0 0\n\
495    MouseMoveEvent 188 236 0 0 0 0 0\n\
496    MouseMoveEvent 188 235 0 0 0 0 0\n\
497    MouseMoveEvent 187 234 0 0 0 0 0\n\
498    MouseMoveEvent 187 233 0 0 0 0 0\n\
499    MouseMoveEvent 187 231 0 0 0 0 0\n\
500    MouseMoveEvent 187 230 0 0 0 0 0\n\
501    MouseMoveEvent 187 228 0 0 0 0 0\n\
502    MouseMoveEvent 187 227 0 0 0 0 0\n\
503    MouseMoveEvent 187 226 0 0 0 0 0\n\
504    MouseMoveEvent 186 225 0 0 0 0 0\n\
505    MouseMoveEvent 185 224 0 0 0 0 0\n\
506    MouseMoveEvent 185 222 0 0 0 0 0\n\
507    MouseMoveEvent 185 221 0 0 0 0 0\n\
508    MouseMoveEvent 185 220 0 0 0 0 0\n\
509    MouseMoveEvent 185 218 0 0 0 0 0\n\
510    MouseMoveEvent 185 217 0 0 0 0 0\n\
511    MouseMoveEvent 185 216 0 0 0 0 0\n\
512    MouseMoveEvent 184 215 0 0 0 0 0\n\
513    MouseMoveEvent 184 214 0 0 0 0 0\n\
514    MouseMoveEvent 184 212 0 0 0 0 0\n\
515    MouseMoveEvent 184 212 0 0 0 0 0\n\
516    MouseMoveEvent 184 210 0 0 0 0 0\n\
517    MouseMoveEvent 184 209 0 0 0 0 0\n\
518    MouseMoveEvent 183 208 0 0 0 0 0\n\
519    MouseMoveEvent 183 208 0 0 0 0 0\n\
520    MouseMoveEvent 183 207 0 0 0 0 0\n\
521    MouseMoveEvent 183 206 0 0 0 0 0\n\
522    MouseMoveEvent 183 204 0 0 0 0 0\n\
523    MouseMoveEvent 183 204 0 0 0 0 0\n\
524    MouseMoveEvent 183 202 0 0 0 0 0\n\
525    MouseMoveEvent 183 202 0 0 0 0 0\n\
526    MouseMoveEvent 183 200 0 0 0 0 0\n\
527    MouseMoveEvent 183 198 0 0 0 0 0\n\
528    MouseMoveEvent 183 198 0 0 0 0 0\n\
529    MouseMoveEvent 183 196 0 0 0 0 0\n\
530    MouseMoveEvent 183 195 0 0 0 0 0\n\
531    MouseMoveEvent 183 193 0 0 0 0 0\n\
532    MouseMoveEvent 183 192 0 0 0 0 0\n\
533    MouseMoveEvent 183 192 0 0 0 0 0\n\
534    MouseMoveEvent 183 190 0 0 0 0 0\n\
535    MouseMoveEvent 183 189 0 0 0 0 0\n\
536    MouseMoveEvent 183 188 0 0 0 0 0\n\
537    MouseMoveEvent 183 188 0 0 0 0 0\n\
538    MouseMoveEvent 182 186 0 0 0 0 0\n\
539    MouseMoveEvent 182 185 0 0 0 0 0\n\
540    MouseMoveEvent 182 184 0 0 0 0 0\n\
541    MouseMoveEvent 182 183 0 0 0 0 0\n\
542    MouseMoveEvent 182 182 0 0 0 0 0\n\
543    MouseMoveEvent 181 182 0 0 0 0 0\n\
544    MouseMoveEvent 181 181 0 0 0 0 0\n\
545    MouseMoveEvent 181 180 0 0 0 0 0\n\
546    MouseMoveEvent 181 180 0 0 0 0 0\n\
547    MouseMoveEvent 181 179 0 0 0 0 0\n\
548    MouseMoveEvent 181 178 0 0 0 0 0\n\
549    MouseMoveEvent 181 178 0 0 0 0 0\n\
550    MouseMoveEvent 181 176 0 0 0 0 0\n\
551    MouseMoveEvent 181 175 0 0 0 0 0\n\
552    MouseMoveEvent 181 174 0 0 0 0 0\n\
553    MouseMoveEvent 181 172 0 0 0 0 0\n\
554    MouseMoveEvent 181 172 0 0 0 0 0\n\
555    MouseMoveEvent 181 170 0 0 0 0 0\n\
556    MouseMoveEvent 181 170 0 0 0 0 0\n\
557    MouseMoveEvent 181 168 0 0 0 0 0\n\
558    MouseMoveEvent 181 168 0 0 0 0 0\n\
559    MouseMoveEvent 181 167 0 0 0 0 0\n\
560    MouseMoveEvent 181 166 0 0 0 0 0\n\
561    MouseMoveEvent 181 165 0 0 0 0 0\n\
562    MouseMoveEvent 181 164 0 0 0 0 0\n\
563    MouseMoveEvent 181 163 0 0 0 0 0\n\
564    MouseMoveEvent 181 162 0 0 0 0 0\n\
565    MouseMoveEvent 181 160 0 0 0 0 0\n\
566    MouseMoveEvent 181 159 0 0 0 0 0\n\
567    MouseMoveEvent 181 158 0 0 0 0 0\n\
568    MouseMoveEvent 181 158 0 0 0 0 0\n\
569    MouseMoveEvent 180 157 0 0 0 0 0\n\
570    MouseMoveEvent 180 156 0 0 0 0 0\n\
571    MouseMoveEvent 180 156 0 0 0 0 0\n\
572    MouseMoveEvent 180 155 0 0 0 0 0\n\
573    MouseMoveEvent 180 154 0 0 0 0 0\n\
574    MouseMoveEvent 179 154 0 0 0 0 0\n\
575    MouseMoveEvent 177 154 0 0 0 0 0\n\
576    MouseMoveEvent 173 154 0 0 0 0 0\n\
577    MouseMoveEvent 169 154 0 0 0 0 0\n\
578    MouseMoveEvent 166 154 0 0 0 0 0\n\
579    MouseMoveEvent 163 154 0 0 0 0 0\n\
580    MouseMoveEvent 159 154 0 0 0 0 0\n\
581    MouseMoveEvent 155 154 0 0 0 0 0\n\
582    MouseMoveEvent 152 154 0 0 0 0 0\n\
583    MouseMoveEvent 148 154 0 0 0 0 0\n\
584    MouseMoveEvent 145 155 0 0 0 0 0\n\
585    MouseMoveEvent 141 155 0 0 0 0 0\n\
586    MouseMoveEvent 137 156 0 0 0 0 0\n\
587    MouseMoveEvent 135 156 0 0 0 0 0\n\
588    MouseMoveEvent 132 156 0 0 0 0 0\n\
589    MouseMoveEvent 130 156 0 0 0 0 0\n\
590    MouseMoveEvent 129 156 0 0 0 0 0\n\
591    MouseMoveEvent 128 156 0 0 0 0 0\n\
592    MouseMoveEvent 127 156 0 0 0 0 0\n\
593    MouseMoveEvent 126 156 0 0 0 0 0\n\
594    MouseMoveEvent 125 156 0 0 0 0 0\n\
595    MouseMoveEvent 123 157 0 0 0 0 0\n\
596    MouseMoveEvent 123 157 0 0 0 0 0\n\
597    MouseMoveEvent 121 157 0 0 0 0 0\n\
598    MouseMoveEvent 121 157 0 0 0 0 0\n\
599    MouseMoveEvent 119 158 0 0 0 0 0\n\
600    MouseMoveEvent 119 158 0 0 0 0 0\n\
601    MouseMoveEvent 118 158 0 0 0 0 0\n\
602    MouseMoveEvent 117 158 0 0 0 0 0\n\
603    MouseMoveEvent 117 158 0 0 0 0 0\n\
604    MouseMoveEvent 116 158 0 0 0 0 0\n\
605    MouseMoveEvent 115 158 0 0 0 0 0\n\
606    MouseMoveEvent 114 158 0 0 0 0 0\n\
607    MouseMoveEvent 113 158 0 0 0 0 0\n\
608    MouseMoveEvent 111 158 0 0 0 0 0\n\
609    MouseMoveEvent 110 158 0 0 0 0 0\n\
610    MouseMoveEvent 109 158 0 0 0 0 0\n\
611    MouseMoveEvent 107 158 0 0 0 0 0\n\
612    MouseMoveEvent 106 158 0 0 0 0 0\n\
613    MouseMoveEvent 105 158 0 0 0 0 0\n\
614    MouseMoveEvent 103 158 0 0 0 0 0\n\
615    MouseMoveEvent 103 158 0 0 0 0 0\n\
616    MouseMoveEvent 102 158 0 0 0 0 0\n\
617    MouseMoveEvent 101 158 0 0 0 0 0\n\
618    MouseMoveEvent 101 158 0 0 0 0 0\n\
619    MouseMoveEvent 100 158 0 0 0 0 0\n\
620    MouseMoveEvent 99 158 0 0 0 0 0\n\
621    MouseMoveEvent 99 158 0 0 0 0 0\n\
622    MouseMoveEvent 98 158 0 0 0 0 0\n\
623    MouseMoveEvent 97 158 0 0 0 0 0\n\
624    MouseMoveEvent 97 158 0 0 0 0 0\n\
625    MouseMoveEvent 97 159 0 0 0 0 0\n\
626    MouseMoveEvent 97 160 0 0 0 0 0\n\
627    MouseMoveEvent 96 161 0 0 0 0 0\n\
628    MouseMoveEvent 96 162 0 0 0 0 0\n\
629    MouseMoveEvent 96 163 0 0 0 0 0\n\
630    MouseMoveEvent 96 164 0 0 0 0 0\n\
631    MouseMoveEvent 96 165 0 0 0 0 0\n\
632    MouseMoveEvent 96 166 0 0 0 0 0\n\
633    MouseMoveEvent 96 167 0 0 0 0 0\n\
634    MouseMoveEvent 96 168 0 0 0 0 0\n\
635    MouseMoveEvent 96 168 0 0 0 0 0\n\
636    MouseMoveEvent 96 170 0 0 0 0 0\n\
637    MouseMoveEvent 96 170 0 0 0 0 0\n\
638    MouseMoveEvent 96 171 0 0 0 0 0\n\
639    MouseMoveEvent 97 171 0 0 0 0 0\n\
640    MouseMoveEvent 97 172 0 0 0 0 0\n\
641    MouseMoveEvent 97 172 0 0 0 0 0\n\
642    MouseMoveEvent 98 173 0 0 0 0 0\n\
643    MouseMoveEvent 99 174 0 0 0 0 0\n\
644    MouseMoveEvent 99 174 0 0 0 0 0\n\
645    MouseMoveEvent 99 175 0 0 0 0 0\n\
646    MouseMoveEvent 100 176 0 0 0 0 0\n\
647    MouseMoveEvent 100 176 0 0 0 0 0\n\
648    MouseMoveEvent 101 177 0 0 0 0 0\n\
649    MouseMoveEvent 101 178 0 0 0 0 0\n\
650    MouseMoveEvent 103 179 0 0 0 0 0\n\
651    MouseMoveEvent 103 180 0 0 0 0 0\n\
652    MouseMoveEvent 103 180 0 0 0 0 0\n\
653    MouseMoveEvent 104 181 0 0 0 0 0\n\
654    MouseMoveEvent 105 182 0 0 0 0 0\n\
655    MouseMoveEvent 105 183 0 0 0 0 0\n\
656    MouseMoveEvent 105 184 0 0 0 0 0\n\
657    MouseMoveEvent 106 185 0 0 0 0 0\n\
658    MouseMoveEvent 107 186 0 0 0 0 0\n\
659    MouseMoveEvent 107 187 0 0 0 0 0\n\
660    MouseMoveEvent 108 188 0 0 0 0 0\n\
661    MouseMoveEvent 108 188 0 0 0 0 0\n\
662    MouseMoveEvent 108 189 0 0 0 0 0\n\
663    MouseMoveEvent 108 190 0 0 0 0 0\n\
664    MouseMoveEvent 109 190 0 0 0 0 0\n\
665    MouseMoveEvent 109 190 0 0 0 0 0\n\
666    MouseMoveEvent 110 192 0 0 0 0 0\n\
667    MouseMoveEvent 110 192 0 0 0 0 0\n\
668    MouseMoveEvent 111 194 0 0 0 0 0\n\
669    MouseMoveEvent 111 195 0 0 0 0 0\n\
670    MouseMoveEvent 111 196 0 0 0 0 0\n\
671    MouseMoveEvent 112 198 0 0 0 0 0\n\
672    MouseMoveEvent 112 198 0 0 0 0 0\n\
673    MouseMoveEvent 113 199 0 0 0 0 0\n\
674    MouseMoveEvent 113 200 0 0 0 0 0\n\
675    MouseMoveEvent 113 201 0 0 0 0 0\n\
676    MouseMoveEvent 113 202 0 0 0 0 0\n\
677    MouseMoveEvent 113 202 0 0 0 0 0\n\
678    MouseMoveEvent 114 203 0 0 0 0 0\n\
679    MouseMoveEvent 114 204 0 0 0 0 0\n\
680    MouseMoveEvent 114 204 0 0 0 0 0\n\
681    MouseMoveEvent 114 205 0 0 0 0 0\n\
682    MouseMoveEvent 114 206 0 0 0 0 0\n\
683    MouseMoveEvent 114 206 0 0 0 0 0\n\
684    MouseMoveEvent 114 207 0 0 0 0 0\n\
685    MouseMoveEvent 114 208 0 0 0 0 0\n\
686    MouseMoveEvent 114 210 0 0 0 0 0\n\
687    RightButtonReleaseEvent 114 210 0 0 0 0 0\n\
688"
689
690# Now define a script to build a pipeline
691# Start by loading some data.
692#
693dem = vtk.vtkDEMReader()
694dem.SetFileName(VTK_DATA_ROOT + "/Data/SainteHelens.dem")
695dem.Update()
696
697Scale = 2
698lut = vtk.vtkLookupTable()
699lut.SetHueRange(0.6, 0)
700lut.SetSaturationRange(1.0, 0)
701lut.SetValueRange(0.5, 1.0)
702lo = Scale * dem.GetElevationBounds()[0]
703hi = Scale * dem.GetElevationBounds()[1]
704
705shrink = vtk.vtkImageShrink3D()
706shrink.SetShrinkFactors(4, 4, 1)
707shrink.SetInputConnection(dem.GetOutputPort())
708shrink.AveragingOn()
709
710geom = vtk.vtkImageDataGeometryFilter()
711geom.SetInputConnection(shrink.GetOutputPort())
712geom.ReleaseDataFlagOn()
713
714warp = vtk.vtkWarpScalar()
715warp.SetInputConnection(geom.GetOutputPort())
716warp.SetNormal(0, 0, 1)
717warp.UseNormalOn()
718warp.SetScaleFactor(Scale)
719warp.ReleaseDataFlagOn()
720
721elevation = vtk.vtkElevationFilter()
722elevation.SetInputConnection(warp.GetOutputPort())
723elevation.SetLowPoint(0, 0, lo)
724elevation.SetHighPoint(0, 0, hi)
725elevation.SetScalarRange(lo, hi)
726elevation.ReleaseDataFlagOn()
727
728normals = vtk.vtkPolyDataNormals()
729normals.SetInputConnection(elevation.GetOutputPort())
730normals.SetFeatureAngle(60)
731normals.ConsistencyOff()
732normals.SplittingOff()
733normals.ReleaseDataFlagOn()
734normals.Update()
735
736demMapper = vtk.vtkPolyDataMapper()
737demMapper.SetInputConnection(normals.GetOutputPort())
738demMapper.SetScalarRange(lo, hi)
739demMapper.SetLookupTable(lut)
740
741demActor = vtk.vtkActor()
742demActor.SetMapper(demMapper)
743
744# Create the RenderWindow, Renderer and both Actors
745#
746ren = vtk.vtkRenderer()
747renWin = vtk.vtkRenderWindow()
748renWin.SetMultiSamples(0)
749renWin.AddRenderer(ren)
750iRen = vtk.vtkRenderWindowInteractor()
751iRen.SetRenderWindow(renWin)
752iRen.LightFollowCameraOff()
753
754recorder = vtk.vtkInteractorEventRecorder()
755recorder.SetInteractor(iRen)
756#recorder.SetFileName("c:/d/VTK/record.log")
757#recorder.Record()
758recorder.ReadFromInputStringOn()
759recorder.SetInputString(Recording)
760
761# Add the actors to the renderer, set the background and size
762#
763ren.AddActor(demActor)
764ren.SetBackground(1, 1, 1)
765renWin.SetSize(300, 300)
766ren.SetBackground(0.1, 0.2, 0.4)
767
768cam1 = ren.GetActiveCamera()
769cam1.SetViewUp(0, 0, 1)
770cam1.SetFocalPoint(dem.GetOutput().GetCenter())
771cam1.SetPosition(1, 0, 0)
772ren.ResetCamera()
773cam1.Elevation(25)
774cam1.Azimuth(125)
775cam1.Zoom(1.25)
776
777# This is where the bindings are set up
778
779# The callback stubs are defined here.  The callback takes two arguments.
780# The first being the object that generates the event and the second argument
781# the event name (which is a string).
782
783def leftDown(widget, event_string):
784    global left
785    left = 1
786def leftUp(widget, event_string):
787    global left
788    left = 0
789
790def middleDown(widget, event_string):
791    global middle
792    middle = 1
793def middleUp(widget, event_string):
794    global middle
795    middle = 0
796
797def rightDown(widget, event_string):
798    global right
799    right = 1
800def rightUp(widget, event_string):
801    global right
802    right = 0
803
804def wheelForward(widget, event_string):
805    mouseWheelForward(iRen,ren)
806def wheelBackward(widget, event_string):
807    mouseWheelBackward(iRen,ren)
808
809def mouseMove(widget, event_string):
810    global left, middle, right
811    if left == 1:
812        mouseLeftMove(iRen,ren)
813    if middle == 1:
814        mouseMiddleMove(iRen,ren)
815    if right == 1:
816        mouseRightMove(iRen,ren)
817    if ( (left == 0) and (middle == 0) and (right == 0) ) :
818        pass
819
820# This is where the interaction style is defined
821style = vtk.vtkInteractorStyleUser()
822iRen.SetInteractorStyle(style)
823
824style.AddObserver("LeftButtonPressEvent", leftDown)
825style.AddObserver("LeftButtonReleaseEvent", leftUp)
826style.AddObserver("MiddleButtonPressEvent", middleDown)
827style.AddObserver("MiddleButtonReleaseEvent", middleUp)
828style.AddObserver("RightButtonPressEvent", rightDown)
829style.AddObserver("RightButtonReleaseEvent", rightUp)
830style.AddObserver("MouseWheelForwardEvent", wheelForward)
831style.AddObserver("MouseWheelBackwardEvent", wheelBackward)
832style.AddObserver("MouseMoveEvent", mouseMove)
833
834iRen.Initialize()
835renWin.Render()
836
837# render the image
838renWin.Render()
839recorder.Play()
840
841#iRen.Start()
842