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 201
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 205
def clear_compiled_slides
  @compiled_slides = {}
end
compile_slide(slide) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 213
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 209
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 192
def configured_after(widget, event)
  reload_theme if @drawable
end
depth() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 123
def depth
  @area.window.depth
end
draw(widget, context) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 157
def draw(widget, context)
  draw_current_slide
end
draw_current_slide() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 161
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
grab() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 218
def grab
  Gtk.grab_add(@area)
  Gdk.pointer_grab(@area.window, false,
                   Gdk::EventMask::BUTTON_PRESS_MASK |
                   Gdk::EventMask::BUTTON_RELEASE_MASK |
                   Gdk::EventMask::SCROLL_MASK |
                   Gdk::EventMask::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_draw
  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)
  set_drawable(widget.window)
  prepare_renderer(@drawable)
end
pointer() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 234
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 196
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 173
def set_configure_event_after
  prev_x = prev_y = prev_width = prev_height = nil
  @area.signal_connect_after("configure_event") do |widget, event|
    prev_x ||= event.x
    prev_y ||= event.y
    prev_width ||= event.width
    prev_height ||= event.height
    if [prev_x, prev_y, prev_width, prev_height] !=
        [event.x, event.y, event.width, event.height]
      configured_after(widget, event)
    end
    prev_x = event.x
    prev_y = event.y
    prev_width = event.width
    prev_height = event.height
    false
  end
end
set_draw() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 138
def set_draw
  stop_events = false
  if @area.class.signals.include?("draw")
    @area.signal_connect("draw") do |widget, context|
      init_context(context)
      draw(widget, context)
      finish_renderer
      stop_events
    end
  else
    @area.signal_connect("expose_event") do |widget, event|
      init_renderer(@drawable)
      draw(widget, @drawable.create_cairo_context)
      finish_renderer
      stop_events
    end
  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 229
def ungrab
  Gtk.grab_remove(@area)
  Gdk.pointer_ungrab(Gdk::Event::CURRENT_TIME)
end