Class: GtkVTKRenderWindowBase

Inherits:
Gtk::GL::Area
  • Object
show all
Defined in:
lib/VTK/gtk/GtkVTKRenderWindow.rb

Direct Known Subclasses

GtkVTKRenderWindow

Instance Method Summary collapse

Constructor Details

#initializeGtkVTKRenderWindowBase

A base class that enables one to embed a vtkRenderWindow into

a pyGTK widget.  This class embeds the RenderWindow correctly.
Provided are some empty methods that can be overloaded to provide
a user defined interaction behaviour.  The event handling
functions have names that are somewhat similar to the ones in the
vtkInteractorStyle class included with VTK.


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 48

def initialize
  super

  glconfig = Gdk::GLConfig.new(Gdk::GLConfig::MODE_RGB|
                               Gdk::GLConfig::MODE_DOUBLE)

  set_gl_capability(glconfig)


  @RenderWindow = Vtk::RenderWindow.new

  # private attributes
  @Created = false

  # used by the LOD actors
  @DesiredUpdateRate = 15
  @StillUpdateRate = 0.0001

  self.ConnectSignals

  # need this to be able to handle key_press events.
  self.set_flags(Gtk::Window::CAN_FOCUS)
  # default size
  self.set_usize(300, 300)
end

Instance Method Details

#ConnectSignalsObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 74

def ConnectSignals
  self.signal_connect("realize"){|wid, event| OnRealize(wid,event) }
  self.signal_connect("expose_event"){|wid, event| OnExpose(wid,event) }
  self.signal_connect("configure_event"){|wid, event| OnConfigure(wid,event) }
  self.signal_connect("button_press_event"){|wid, event| OnButtonDown(wid,event) }
  self.signal_connect("button_release_event"){|wid, event| OnButtonUp(wid,event) }
  self.signal_connect("motion_notify_event"){|wid, event| OnMouseMove(wid,event) }
  self.signal_connect("enter_notify_event"){|wid, event| OnEnter(wid,event) }
  self.signal_connect("leave_notify_event"){|wid, event| OnLeave(wid,event) }
  self.signal_connect("key_press_event"){|wid, event| OnKeyPress(wid,event) }
  self.signal_connect("delete_event"){|wid, event| OnDestroy(wid,event) }
  self.add_events(Gdk::Event::EXPOSURE_MASK|
                  Gdk::Event::BUTTON_PRESS_MASK |
                  Gdk::Event::BUTTON_RELEASE_MASK |
                  Gdk::Event::KEY_PRESS_MASK |
                  Gdk::Event::POINTER_MOTION_MASK |
                  Gdk::Event::POINTER_MOTION_HINT_MASK |
                  Gdk::Event::ENTER_NOTIFY_MASK |
                  Gdk::Event::LEAVE_NOTIFY_MASK)
end

#GetDesiredUpdateRateObject



111
112
113
114
115
116
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 111

def GetDesiredUpdateRate
=begin
  Mirrors the method with the same name in vtkRenderWindowInteractor.
=end
  return @DesiredUpdateRate 
end

#GetRendererObject



99
100
101
102
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 99

def GetRenderer
  @RenderWindow.GetRenderers.InitTraversal
  return @RenderWindow.GetRenderers.GetNextItem
end

#GetRenderWindowObject



95
96
97
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 95

def GetRenderWindow
  return @RenderWindow
end

#GetStillUpdateRateObject



125
126
127
128
129
130
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 125

def GetStillUpdateRate
=begin
  Mirrors the method with the same name in vtkRenderWindowInteractor.
=end
  return @StillUpdateRate
end

#OnButtonDown(wid, event) ⇒ Object



169
170
171
172
173
174
175
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 169

def OnButtonDown(wid, event)
=begin
  Mouse button pressed.
=end
  @RenderWindow.SetDesiredUpdateRate(@DesiredUpdateRate)
  return true
end

#OnButtonUp(wid, event) ⇒ Object



177
178
179
180
181
182
183
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 177

def OnButtonUp(wid, event)
=begin
  Mouse button released.
=end
  @RenderWindow.SetDesiredUpdateRate(@StillUpdateRate)
  return true
end

#OnConfigure(wid, event = nil) ⇒ Object



149
150
151
152
153
154
155
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 149

def OnConfigure(wid, event=nil)
  sz = @RenderWindow.GetSize
  if (event.width != sz[0]) || (event.height != sz[1])
    @RenderWindow.SetSize(event.width, event.height)
  end
  return true
end

#OnDestroy(wid, event = nil) ⇒ Object



162
163
164
165
166
167
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 162

def OnDestroy(wid, event=nil)
  self.hide
  @RenderWindow = nil
  self.destroy
  return true
end

#OnEnter(wid, event) ⇒ Object



192
193
194
195
196
197
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 192

def OnEnter(wid, event)
=begin
  Entering the vtkRenderWindow.
=end
  return true
end

#OnExpose(wid, event) ⇒ Object



157
158
159
160
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 157

def OnExpose(wid, event)
  self.Render
  return true
end

#OnKeyPress(wid, event) ⇒ Object



206
207
208
209
210
211
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 206

def OnKeyPress(wid, event)
=begin
  Key pressed.
=end
  return true
end

#OnKeyRelease(wid, event) ⇒ Object



213
214
215
216
217
218
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 213

def OnKeyRelease(wid, event)
=begin
  Key released.
=end
  return true
end

#OnLeave(wid, event) ⇒ Object



199
200
201
202
203
204
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 199

def OnLeave(wid, event)
=begin
  Leaving the vtkRenderWindow.
=end
  return true
end

#OnMouseMove(wid, event) ⇒ Object



185
186
187
188
189
190
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 185

def OnMouseMove(wid, event)
=begin
  Mouse has moved.
=end
  return true
end

#OnRealize(wid, event) ⇒ Object



138
139
140
141
142
143
144
145
146
147
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 138

def OnRealize(wid, event)
  if @Created == 0
    # you can't get the xid without the window being realized.
    self.realize
    win_id = self.get_window.xid.to_s
    @RenderWindow.SetWindowInfo(win_id)
    @Created = true
  end
  return true
end

#RenderObject



132
133
134
135
136
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 132

def Render
  if @Created
    @RenderWindow.Render
  end
end

#SetDesiredUpdateRate(rate) ⇒ Object



104
105
106
107
108
109
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 104

def SetDesiredUpdateRate(rate)
=begin
  Mirrors the method with the same name in vtkRenderWindowInteractor.
=end
  @DesiredUpdateRate = rate
end

#SetStillUpdateRate(rate) ⇒ Object



118
119
120
121
122
123
# File 'lib/VTK/gtk/GtkVTKRenderWindow.rb', line 118

def SetStillUpdateRate(rate)
=begin
  Mirrors the method with the same name in vtkRenderWindowInteractor.
=end
  @StillUpdateRate = rate
end