Class: Rabbit::Element::Image

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

Constant Summary

Constants included from GetText

GetText::DOMAIN

Instance Attribute Summary collapse

Attributes included from BlockHorizontalCentering

#oh, #ow, #ox, #oy

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

Instance Method Summary collapse

Methods included from BlockHorizontalCentering

#clear_theme, #do_horizontal_centering, #reset_horizontal_centering

Methods included from BlockElement

#adjust_y_padding, #inline_element?

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?, #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

Constructor Details

#initialize(filename, prop) ⇒ Image

Returns a new instance of Image.



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
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/rabbit/element/image.rb', line 25

def initialize(filename, prop)
  @filename = filename
  prop = Utils.stringify_hash_key(prop)
  super(filename, prop)
  normalized_prop = {}
  prop.each do |name, value|
    normalized_prop[name.gsub(/-/, '_')] = value
  end
  prop = normalized_prop
  %w(caption dither_mode).each do |name|
    instance_variable_set("@#{name}", prop[name])
  end
  %w(keep_scale keep_ratio).each do |name|
    unless prop[name].nil?
      self.keep_ratio = true_value?(prop[name])
    end
  end
  %w(as_large_as_possible).each do |name|
    instance_variable_set("@#{name}", true_value?(prop[name]))
  end
  %w(width height
     x_dither y_dither
     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

  setup_draw_parameters(prop)
  resize(@width, @height)
end

Instance Attribute Details

#captionObject (readonly)

Returns the value of attribute caption.



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

def caption
  @caption
end

#filenameObject (readonly)

Returns the value of attribute filename.



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

def filename
  @filename
end

#normalized_heightObject (readonly)

Returns the value of attribute normalized_height.



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

def normalized_height
  @normalized_height
end

#normalized_widthObject (readonly)

Returns the value of attribute normalized_width.



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

def normalized_width
  @normalized_width
end

#relative_heightObject (readonly)

Returns the value of attribute relative_height.



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

def relative_height
  @relative_height
end

#relative_margin_bottomObject (readonly)

Returns the value of attribute relative_margin_bottom.



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

def relative_margin_bottom
  @relative_margin_bottom
end

#relative_margin_leftObject (readonly)

Returns the value of attribute relative_margin_left.



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

def relative_margin_left
  @relative_margin_left
end

#relative_margin_rightObject (readonly)

Returns the value of attribute relative_margin_right.



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

def relative_margin_right
  @relative_margin_right
end

#relative_margin_topObject (readonly)

Returns the value of attribute relative_margin_top.



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

def relative_margin_top
  @relative_margin_top
end

#relative_padding_bottomObject (readonly)

Returns the value of attribute relative_padding_bottom.



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

def relative_padding_bottom
  @relative_padding_bottom
end

#relative_padding_leftObject (readonly)

Returns the value of attribute relative_padding_left.



23
24
25
# File 'lib/rabbit/element/image.rb', line 23

def relative_padding_left
  @relative_padding_left
end

#relative_padding_rightObject (readonly)

Returns the value of attribute relative_padding_right.



23
24
25
# File 'lib/rabbit/element/image.rb', line 23

def relative_padding_right
  @relative_padding_right
end

#relative_padding_topObject (readonly)

Returns the value of attribute relative_padding_top.



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

def relative_padding_top
  @relative_padding_top
end

#relative_widthObject (readonly)

Returns the value of attribute relative_width.



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

def relative_width
  @relative_width
end

Instance Method Details

#_compileObject



106
# File 'lib/rabbit/element/image.rb', line 106

alias _compile compile

#as_large_as_possible?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/rabbit/element/image.rb', line 124

def as_large_as_possible?
  @as_large_as_possible
end

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



111
112
113
114
# File 'lib/rabbit/element/image.rb', line 111

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



107
108
109
# File 'lib/rabbit/element/image.rb', line 107

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

#dither_modeObject



88
89
90
91
92
93
94
95
96
# File 'lib/rabbit/element/image.rb', line 88

def dither_mode
  @dither_mode ||= "normal"
  mode_name = "DITHER_#{@dither_mode.upcase}"
  if Gdk::RGB.const_defined?(mode_name)
    Gdk::RGB.const_get(mode_name)
  else
    Gdk::RGB::DITHER_NORMAL
  end
end

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



65
66
67
# File 'lib/rabbit/element/image.rb', line 65

def draw_element(canvas, x, y, w, h, simulation)
  draw_image(canvas, x, y, w, h, simulation)
end

#heightObject



120
121
122
# File 'lib/rabbit/element/image.rb', line 120

def height
  super + @padding_top + @padding_bottom
end

#textObject



69
70
71
# File 'lib/rabbit/element/image.rb', line 69

def text
  @caption.to_s
end

#to_html(generator) ⇒ Object



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

def to_html(generator)
  src = generator.save_pixbuf(pixbuf, File.basename(@filename))
  html = "<img "
  if @caption
    alt = generator.h(@caption)
    html << "title=\"#{alt}\" alt=\"#{alt}\" "
  end
  html << "src=\"#{src}\" />"
  html
end

#to_rdObject



73
74
75
# File 'lib/rabbit/element/image.rb', line 73

def to_rd
  text
end

#widthObject



116
117
118
# File 'lib/rabbit/element/image.rb', line 116

def width
  super + @padding_left + @padding_right
end

#x_ditherObject



98
99
100
# File 'lib/rabbit/element/image.rb', line 98

def x_dither
  @x_dither || 0
end

#y_ditherObject



102
103
104
# File 'lib/rabbit/element/image.rb', line 102

def y_dither
  @y_dither || 0
end