module Rabbit::Renderer::Display::DrawingAreaPrimitive

Attributes

filename[RW]

Public Class Methods

new(canvas) click to toggle source
Calls superclass method Rabbit::Renderer::Display::Cursor.new
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 19
def initialize(canvas)
  super
  @filename = nil
  clear_compiled_slides
  init_drawing_area
end

Public Instance Methods

attach_to(window, container=nil) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 26
def attach_to(window, container=nil)
  init_gl(@area)
  super
end
clear_slide() click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 40
def clear_slide
  super
  clear_compiled_slide
  redraw
end
detach() click to toggle source
Calls superclass method Rabbit::Renderer::Display::Base#detach
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 31
def detach
  finalize_gl
  super
end
display?() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 105
def display?
  true
end
index_mode_off() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 101
def index_mode_off
  restore_cursor(:index)
end
index_mode_on() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 96
def index_mode_on
  keep_cursor(:index)
  update_cursor(nil, true)
end
post_apply_theme() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 59
def post_apply_theme
  clear_compiled_slides
  queue_draw
end
post_fullscreen() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 46
def post_fullscreen
  update_cursor(:blank, true)
  clear_compiled_slides
end
post_iconify() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 56
def post_iconify
end
post_move(old_index, index) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 64
def post_move(old_index, index)
  queue_draw
end
post_move_in_slide(old_index, index) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 68
def post_move_in_slide(old_index, index)
  queue_draw
end
post_parse() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 75
def post_parse
  clear_compiled_slides
end
post_to_pixbuf(canceled) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 93
def post_to_pixbuf(canceled)
end
post_toggle_index_mode() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 82
def post_toggle_index_mode
  queue_draw
end
post_unfullscreen() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 51
def post_unfullscreen
  update_cursor(nil, true)
  update_menu
end
pre_parse() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 72
def pre_parse
end
pre_to_pixbuf(slide_size) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 86
def pre_to_pixbuf(slide_size)
end
pre_toggle_index_mode() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 79
def pre_toggle_index_mode
end
to_pixbufing(i) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 89
def to_pixbufing(i)
  true
end
widget() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 36
def widget
  @area
end

Private Instance Methods

clear_compiled_slide(slide=nil) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 180
def clear_compiled_slide(slide=nil)
  @compiled_slides.delete(slide || @canvas.current_slide)
end
clear_compiled_slides() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 184
def clear_compiled_slides
  @compiled_slides = {}
end
compile_slide(slide) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 192
def compile_slide(slide)
  @compiled_slides[slide] = true
  slide.draw(@canvas, true)
end
compiled_slide?(slide) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 188
def compiled_slide?(slide)
  @compiled_slides.has_key?(slide)
end
configured_after(widget, event) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 170
def configured_after(widget, event)
  reload_theme if @drawable
  false
end
depth() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 123
def depth
  @area.window.depth
end
draw_current_slide() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 152
def draw_current_slide
  slide = @canvas.current_slide
  if slide
    begin
      compile_slide(slide) unless compiled_slide?(slide)
      slide.draw(@canvas, false)
    rescue
      @canvas.logger.warn($!)
    end
  end
end
exposed(widget, event) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 147
def exposed(widget, event)
  draw_current_slide
  true
end
grab() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 197
def grab
  Gtk.grab_add(@area)
  Gdk.pointer_grab(@area.window, false,
                   Gdk::Event::BUTTON_PRESS_MASK |
                   Gdk::Event::BUTTON_RELEASE_MASK |
                   Gdk::Event::SCROLL_MASK |
                   Gdk::Event::POINTER_MOTION_MASK,
                   nil, nil,
                   Gdk::Event::CURRENT_TIME)
end
init_dpi() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 110
def init_dpi
  @x_dpi = ScreenInfo.screen_x_resolution
  @y_dpi = ScreenInfo.screen_y_resolution
end
init_drawing_area() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 115
def init_drawing_area
  @area = Gtk::DrawingArea.new
  @area.can_focus = true
  set_map
  set_expose_event
  set_configure_event_after
end
mapped(widget) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 133
def mapped(widget)
  @drawable = widget.window
  prepare_renderer(@drawable)
end
pointer() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 213
def pointer
  window, x, y, mask = @area.window.pointer
  [x, y, mask]
end
reload_theme(&callback) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 175
def reload_theme(&callback)
  callback ||= Utils.process_pending_events_proc
  @canvas.activate("ReloadTheme", &callback)
end
set_configure_event_after() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 164
def set_configure_event_after
  @area.signal_connect_after("configure_event") do |widget, event|
    configured_after(widget, event)
  end
end
set_expose_event() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 138
def set_expose_event
  @area.signal_connect("expose_event") do |widget, event|
    init_renderer(@drawable)
    result = exposed(widget, event)
    finish_renderer
    result
  end
end
set_map() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 127
def set_map
  @area.signal_connect_after("map") do |widget|
    mapped(widget)
  end
end
ungrab() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 208
def ungrab
  Gtk.grab_remove(@area)
  Gdk.pointer_ungrab(Gdk::Event::CURRENT_TIME)
end