338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 338
def UpdateRenderer(x,y)
=begin
UpdateRenderer will identify the renderer under the mouse && set
up _CurrentRenderer, _CurrentCamera, && _CurrentLight.
=end
windowX = self.get_window.width
windowY = self.get_window.height
renderers = @RenderWindow.GetRenderers
numRenderers = renderers.GetNumberOfItems
@CurrentRenderer = nil
renderers.InitTraversal
for i in 0...numRenderers
renderer = renderers.GetNextItem
vx,vy = [0,0]
if (windowX > 1)
vx = x.to_f/(windowX-1)
end
if (windowY > 1)
vy = (windowY-y.to_f-1)/(windowY-1)
end
(vpxmin,vpymin,vpxmax,vpymax) = renderer.GetViewport
if (vx >= vpxmin && vx <= vpxmax && vy >= vpymin && vy <= vpymax)
@CurrentRenderer = renderer
@ViewportCenterX = windowX.to_f*(vpxmax-vpxmin)/2.0 +vpxmin
@ViewportCenterY = windowY.to_f*(vpymax-vpymin)/2.0 +vpymin
@CurrentCamera = @CurrentRenderer.GetActiveCamera
lights = @CurrentRenderer.GetLights
lights.InitTraversal
break if @CurrentLight = lights.GetNextItem
end
end
@LastX = x
@LastY = y
end
|