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)
  super

  set_configure_event

  init_gl(@area)
end
clear_slide() click to toggle source
Calls superclass method
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 49
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 34
def detach
  finalize_gl

  if !@window.destroyed? and @configure_signal_id
    @window.signal_handler_disconnect(@configure_signal_id)
    @configure_signal_id = nil
  end

  super
end
display?() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 115
def display?
  true
end
index_mode_off() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 111
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 106
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 68
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 55
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 65
def post_iconify
end
post_move(old_index, index) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 73
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 77
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 84
def post_parse
  clear_compiled_slides
  update_cursor(:blank, true)
end
post_to_pixbuf(canceled) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 103
def post_to_pixbuf(canceled)
end
post_toggle_index_mode() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 92
def post_toggle_index_mode
  queue_draw
end
post_unfullscreen() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 60
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 81
def pre_parse
end
pre_to_pixbuf(slide_size) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 96
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 89
def pre_toggle_index_mode
end
to_pixbufing(i) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 99
def to_pixbufing(i)
  true
end
widget() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 45
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 215
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 219
def clear_compiled_slides
  @compiled_slides = {}
end
compile_slide(slide) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 227
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 223
def compiled_slide?(slide)
  @compiled_slides.has_key?(slide)
end
configured(x, y, w, h) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 180
def configured(x, y, w, h)
  @real_width = @drawable.width
  @real_height = @drawable.height
  @size_dirty = true
end
configured_after(widget, event) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 205
def configured_after(widget, event)
  update_size(event.width, event.height)
  reload_theme if @drawable
end
depth() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 133
def depth
  @area.window.depth
end
draw(widget) click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 156
def draw(widget)
  draw_current_slide
end
draw_current_slide() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 160
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 232
def grab
  @area.grab_add
  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::CURRENT_TIME)
end
init_dpi() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 120
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 125
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 143
def mapped(widget)
  set_drawable(widget.window)
end
pointer() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 248
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 210
def reload_theme(&callback)
  callback ||= Utils.process_pending_events_proc
  @canvas.activate("ReloadTheme", &callback)
end
set_configure_event() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 172
def set_configure_event
  id = @window.signal_connect("configure_event") do |widget, event|
    configured(event.x, event.y, event.width, event.height)
    false
  end
  @configure_signal_id = id
end
set_configure_event_after() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 186
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 147
def set_draw
  @area.signal_connect("draw") do |widget, context|
    init_context(context)
    draw(widget)
    finish_renderer
    Gdk::Event::PROPAGATE
  end
end
set_map() click to toggle source
# File lib/rabbit/renderer/display/drawing-area-primitive.rb, line 137
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 243
def ungrab
  @area.grab_remove
  Gdk.pointer_ungrab(Gdk::CURRENT_TIME)
end