Class: Rabbit::Element::Video

Inherits:
Object
  • Object
show all
Includes:
Base, BlockElement, BlockHorizontalCentering, TextRenderer
Defined in:
lib/rabbit/element/video.rb

Constant Summary

Constants included from GetText

GetText::DOMAIN

Instance Attribute Summary collapse

Attributes included from TextRenderer

#first_line_height, #first_line_width, #indent, #layout, #original_height, #original_width, #wrap_mode

Attributes included from Base

#base_h, #base_w, #base_x, #base_y, #default_margin_bottom, #default_margin_left, #default_margin_right, #default_margin_top, #default_padding_bottom, #default_padding_left, #default_padding_right, #default_padding_top, #default_visible, #h, #horizontal_centering, #margin_bottom, #margin_left, #margin_right, #margin_top, #padding_bottom, #padding_left, #padding_right, #padding_top, #parent, #ph, #pw, #px, #py, #real_simulation, #user_property, #vertical_centering, #w, #x, #y

Attributes included from BlockHorizontalCentering

#oh, #ow, #ox, #oy

Instance Method Summary collapse

Methods included from TextRenderer

#align=, #as_large_as_possible, #clear_theme, #dirty!, #dirty?, #do_horizontal_centering, #do_horizontal_centering?, #font_size, #have_numerical_font_size?, #justify=, #keep_in_size, #markuped_text, #pixel_font_size, #reset_horizontal_centering, #spacing=, #text_clear_theme, #text_compile, #text_dirty?, #text_props, #text_renderer?, #text_to_html

Methods included from Base

#[], #[]=, #add_default_prop, #adjust_x_centering, #adjust_y_margin, #adjust_y_padding, #available_w, #centering_adjusted_height, #centering_adjusted_width, #clear_margin, #clear_padding, #clear_theme, #clone, #compile_element, #compile_horizontal, #default_prop, #dirty!, #dirty?, #do_horizontal_centering, #do_horizontal_centering?, #do_vertical_centering?, #draw, #font, #have_tag?, #have_wait_tag?, #hide, #if_dirty, #init_default_margin, #init_default_padding, #init_default_visible, #inline_element?, #inspect, #margin_set, #margin_with, #match?, #next_element, #padding_set, #padding_with, #previous_element, #prop_delete, #prop_get, #prop_set, #prop_value, #reset_horizontal_centering, #restore_x_margin, #restore_x_padding, #setup_margin, #setup_padding, #show, #slide, #substitute_newline, #substitute_text, #text_renderer?, #visible?, #wait

Methods included from Base::DrawHook

#clear_draw_procs, def_draw_hook, def_draw_hooks

Methods included from Utils

arg_list, collect_classes_under_module, collect_modules_under_module, collect_under_module, combination, compute_bottom_y, compute_left_x, compute_right_x, compute_top_y, corresponding_class_under_module, corresponding_module_under_module, corresponding_objects, ensure_time, events_pending_available?, extract_four_way, find_path_in_load_path, init_by_constants_as_default_value, move_to, move_to_bottom_left, move_to_bottom_right, move_to_top_left, move_to_top_right, parse_four_way, process_pending_events, process_pending_events_proc, quartz?, require_files_under_directory_in_load_path, require_safe, split_number_to_minute_and_second, stringify_hash_key, support_console_input?, support_console_output?, syntax_highlighting_debug?, time, to_class_name, unescape_title, windows?

Methods included from GetText

included

Methods included from BlockHorizontalCentering

#clear_theme, #do_horizontal_centering, #reset_horizontal_centering

Methods included from BlockElement

#adjust_y_padding, #inline_element?

Constructor Details

#initialize(filename, prop) ⇒ Video

Returns a new instance of Video.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/rabbit/element/video.rb', line 24

def initialize(filename, prop)
  @filename = filename
  prop = Utils.stringify_hash_key(prop)
  super()
  normalized_prop = {}
  prop.each do |name, value|
    normalized_prop[name.gsub(/-/, '_')] = value
  end
  prop = normalized_prop
  %w(as_large_as_possible).each do |name|
    instance_variable_set("@#{name}", true_value?(prop[name]))
  end
  %w(width height
     normalized_width normalized_height
     relative_width relative_height
     relative_margin_top relative_margin_bottom
     relative_margin_left relative_margin_right
     relative_padding_top relative_padding_bottom
     relative_padding_left relative_padding_right
    ).each do |name|
    begin
      instance_variable_set("@#{name}", prop[name] && Integer(prop[name]))
    rescue ArgumentError
      raise InvalidImageSizeError.new(filename, name, prop[name])
    end
  end

  resize(@width, @height)
end

Instance Attribute Details

#filenameObject (readonly)

Returns the value of attribute filename.



16
17
18
# File 'lib/rabbit/element/video.rb', line 16

def filename
  @filename
end

#normalized_heightObject (readonly)

Returns the value of attribute normalized_height.



17
18
19
# File 'lib/rabbit/element/video.rb', line 17

def normalized_height
  @normalized_height
end

#normalized_widthObject (readonly)

Returns the value of attribute normalized_width.



17
18
19
# File 'lib/rabbit/element/video.rb', line 17

def normalized_width
  @normalized_width
end

#relative_heightObject (readonly)

Returns the value of attribute relative_height.



18
19
20
# File 'lib/rabbit/element/video.rb', line 18

def relative_height
  @relative_height
end

#relative_margin_bottomObject (readonly)

Returns the value of attribute relative_margin_bottom.



19
20
21
# File 'lib/rabbit/element/video.rb', line 19

def relative_margin_bottom
  @relative_margin_bottom
end

#relative_margin_leftObject (readonly)

Returns the value of attribute relative_margin_left.



20
21
22
# File 'lib/rabbit/element/video.rb', line 20

def relative_margin_left
  @relative_margin_left
end

#relative_margin_rightObject (readonly)

Returns the value of attribute relative_margin_right.



20
21
22
# File 'lib/rabbit/element/video.rb', line 20

def relative_margin_right
  @relative_margin_right
end

#relative_margin_topObject (readonly)

Returns the value of attribute relative_margin_top.



19
20
21
# File 'lib/rabbit/element/video.rb', line 19

def relative_margin_top
  @relative_margin_top
end

#relative_padding_bottomObject (readonly)

Returns the value of attribute relative_padding_bottom.



21
22
23
# File 'lib/rabbit/element/video.rb', line 21

def relative_padding_bottom
  @relative_padding_bottom
end

#relative_padding_leftObject (readonly)

Returns the value of attribute relative_padding_left.



22
23
24
# File 'lib/rabbit/element/video.rb', line 22

def relative_padding_left
  @relative_padding_left
end

#relative_padding_rightObject (readonly)

Returns the value of attribute relative_padding_right.



22
23
24
# File 'lib/rabbit/element/video.rb', line 22

def relative_padding_right
  @relative_padding_right
end

#relative_padding_topObject (readonly)

Returns the value of attribute relative_padding_top.



21
22
23
# File 'lib/rabbit/element/video.rb', line 21

def relative_padding_top
  @relative_padding_top
end

#relative_widthObject (readonly)

Returns the value of attribute relative_width.



18
19
20
# File 'lib/rabbit/element/video.rb', line 18

def relative_width
  @relative_width
end

Instance Method Details

#_compileObject



54
# File 'lib/rabbit/element/video.rb', line 54

alias _compile compile

#as_large_as_possible?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/rabbit/element/video.rb', line 72

def as_large_as_possible?
  @as_large_as_possible
end

#compile(canvas, x, y, w, h) ⇒ Object



59
60
61
62
# File 'lib/rabbit/element/video.rb', line 59

def compile(canvas, x, y, w, h)
  super
  adjust_size(canvas, @x, @y, @w, @h)
end

#compile_for_horizontal_centering(canvas, x, y, w, h) ⇒ Object



55
56
57
# File 'lib/rabbit/element/video.rb', line 55

def compile_for_horizontal_centering(canvas, x, y, w, h)
  _compile(canvas, x, y, w, h)
end

#draw_element(canvas, x, y, w, h, simulation) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rabbit/element/video.rb', line 76

def draw_element(canvas, x, y, w, h, simulation)
  unless simulation
    if canvas.display?
      require "rabbit/video-window"
      VideoWindow.show(canvas.window, self)
    else
      draw_layout(canvas, x, y)
    end
  end
  [x, y + height, w, h - height]
end

#heightObject



68
69
70
# File 'lib/rabbit/element/video.rb', line 68

def height
  @height.to_i + @padding_top + @padding_bottom
end

#textObject



88
89
90
# File 'lib/rabbit/element/video.rb', line 88

def text
  "video : #{File.basename(@filename)}"
end

#to_rdObject



92
93
94
# File 'lib/rabbit/element/video.rb', line 92

def to_rd
  text
end

#widthObject



64
65
66
# File 'lib/rabbit/element/video.rb', line 64

def width
  @width.to_i + @padding_left + @padding_right
end