module Rabbit::Renderer::Display::GL
Private Instance Methods
finalize_gl()
click to toggle source
# File lib/rabbit/renderer/display/gl.rb, line 83 def finalize_gl @gl_widget = nil end
gl_context()
click to toggle source
# File lib/rabbit/renderer/display/gl.rb, line 91 def gl_context @gl_widget.gl_context end
gl_drawable()
click to toggle source
# File lib/rabbit/renderer/display/gl.rb, line 87 def gl_drawable @gl_widget.gl_drawable end
init_gl(widget)
click to toggle source
# File lib/rabbit/renderer/display/gl.rb, line 13 def init_gl(widget) return unless gl_available? init_gl_event init_gl_capability(widget) end
init_gl_capability(widget)
click to toggle source
# File lib/rabbit/renderer/display/gl.rb, line 74 def init_gl_capability(widget) mode = ::Gdk::GLConfig::MODE_RGBA mode |= ::Gdk::GLConfig::MODE_DEPTH # gl_config = ::Gdk::GLConfig.new(mode | ::Gdk::GLConfig::MODE_DOUBLE) gl_config = ::Gdk::GLConfig.new(mode) widget.set_gl_capability(gl_config) @gl_widget = widget end
init_gl_event()
click to toggle source
# File lib/rabbit/renderer/display/gl.rb, line 19 def init_gl_event begin_x = nil begin_y = nil start_time = nil handled = false view_scale_max = 2.0 view_scale_min = 0.5 add_button_press_hook do |event| handled = false start_time = event.time begin_x = event.x begin_y = event.y false end add_motion_notify_hook do |event| state = event.state if state.button2_mask? handled = true processed = true x = event.x.to_f y = event.y.to_f w = width.to_f h = height.to_f if state.control_mask? scale = gl_scale * (1.0 + (y - begin_y) / h) scale = [view_scale_min, scale].max self.gl_scale = [scale, view_scale_max].min elsif state.shift_mask? d_quat = TrackBall.trackball((2.0 * begin_x - w) / w, (h - 2.0 * begin_y) / h, (2.0 * x - w) / w, (h - 2.0 * y) / h) quat = TrackBall.add_quats(d_quat, gl_quaternion) self.gl_quaternion = quat else processed = false end if processed and event.time > start_time + 100 redraw start_time = event.time end end false end add_button_release_hook do |event, last_button_press_event| redraw if handled handled end end