Method: GtkVTKRenderWindow#UpdateRenderer

Defined in:
lib/VTK/gtk/GtkVTKRenderWindow.rb

#UpdateRenderer(x, y) ⇒ Object



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