rabbit 0.6.3 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ proc_name = "per-slide-background-color"
2
+
3
+ match(Slide) do |slides|
4
+ slides.each do |slide|
5
+ slide.delete_pre_draw_proc_by_name(proc_name)
6
+
7
+ background_color = slide["background-color"]
8
+ next if background_color.nil?
9
+
10
+ slide.add_pre_draw_proc(proc_name) do |canvas, x, y, w, h, simulation|
11
+ unless simulation
12
+ canvas.draw_rectangle(true, 0, 0, canvas.width, canvas.height,
13
+ background_color)
14
+ end
15
+ [x, y, w, h]
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ @category = N_("Toolkit")
2
+ @title = N_("PerSlideBackgroundColor")
3
+ @abstract = N_("Toolkit to set background color of each slide")
4
+ @description = N_("Set background color of each slide.\n" \
5
+ "\n" \
6
+ "Each image is specified as a slide property:\n" \
7
+ " = target slide\n" \
8
+ " \n" \
9
+ " ...\n" \
10
+ " \n" \
11
+ " == properties\n" \
12
+ " \n" \
13
+ " : background-color\n" \
14
+ " black\n")
15
+ @parameters = {
16
+ }
@@ -0,0 +1,39 @@
1
+ proc_name = "per-slide-background-image"
2
+
3
+ match(Slide) do |slides|
4
+ slides.each do |slide|
5
+ slide.delete_pre_draw_proc_by_name(proc_name)
6
+
7
+ background_image = slide["background-image"]
8
+ next if background_image.nil?
9
+
10
+ properties = {}
11
+ slide.user_property.each do |name, value|
12
+ if /\Abackground-image-/ =~ name
13
+ properties[$POSTMATCH.gsub(/-/, '_')] = value
14
+ end
15
+ end
16
+ image = Image.new(canvas.full_path(background_image), properties)
17
+ image.horizontal_centering = true
18
+ image.vertical_centering = true
19
+ slide.add_pre_draw_proc(proc_name) do |canvas, x, y, w, h, simulation|
20
+ if simulation
21
+ _x, _y, _w, _h = 0, 0, canvas.width, canvas.height
22
+ image.compile(canvas, _x, _y, _w, _h)
23
+ if image.do_vertical_centering?
24
+ adjust_height = ((_h - image.height - image.padding_bottom) / 2.0).ceil
25
+ if _y + adjust_height > 0
26
+ _y += adjust_height
27
+ _h -= adjust_height
28
+ image.compile(canvas, _x, _y, _w, _h)
29
+ end
30
+ end
31
+ if image.do_horizontal_centering?
32
+ image.do_horizontal_centering(canvas, _x, _y, _w, _h)
33
+ end
34
+ end
35
+ image.draw(simulation)
36
+ [x, y, w, h]
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,16 @@
1
+ @category = N_("Toolkit")
2
+ @title = N_("PerSlideBackgroundImage")
3
+ @abstract = N_("Toolkit to display an image as a background of each slide")
4
+ @description = N_("Displays an image as a background of each slide.\n" \
5
+ "\n" \
6
+ "Each image is specified as a slide property:\n" \
7
+ " = target slide\n" \
8
+ " \n" \
9
+ " ...\n" \
10
+ " \n" \
11
+ " == properties\n" \
12
+ " \n" \
13
+ " : background-image\n" \
14
+ " my-picture.png\n")
15
+ @parameters = {
16
+ }
@@ -46,6 +46,12 @@ module Rabbit
46
46
  else
47
47
  collector = "collect_all_theme"
48
48
  end
49
+
50
+ unless only_image
51
+ entry = SingleFileEntry.new(base_directory, theme_name)
52
+ return entry if entry.available?
53
+ end
54
+
49
55
  found_entry = nil
50
56
  __send__(collector) do |entry|
51
57
  if theme_name == entry.name
@@ -53,6 +59,7 @@ module Rabbit
53
59
  break
54
60
  end
55
61
  end
62
+
56
63
  raise LoadError, "can't find theme: #{theme_name}." if found_entry.nil?
57
64
  found_entry
58
65
  end
@@ -86,15 +93,22 @@ module Rabbit
86
93
  end
87
94
 
88
95
  def collect_theme(&block)
89
- _collect_theme($LOAD_PATH, &block)
96
+ _collect_theme(theme_load_path, DirectoryEntry, &block)
90
97
  end
91
98
 
92
99
  def collect_image_theme(&block)
93
- _collect_theme(Config::IMAGE_PATH + $LOAD_PATH,
94
- "image_dir", :image, &block)
100
+ _collect_theme(image_load_path, ImageDirectoryEntry, "image_dir", &block)
95
101
  end
96
-
97
- def _collect_theme(path, converter=nil, type=nil, &block)
102
+
103
+ def theme_load_path
104
+ $LOAD_PATH
105
+ end
106
+
107
+ def image_load_path
108
+ Config::IMAGE_PATH + $LOAD_PATH
109
+ end
110
+
111
+ def _collect_theme(path, entry_class, converter=nil, &block)
98
112
  converter ||= "theme_dir"
99
113
  themes = []
100
114
  theme_name = {}
@@ -103,8 +117,8 @@ module Rabbit
103
117
  if File.directory?(base_name)
104
118
  Dir.foreach(base_name) do |theme|
105
119
  next if /\A..?\z/ =~ theme
106
- entry = Entry.new(File.join(File.expand_path(base_name), theme),
107
- type)
120
+ file = File.join(File.expand_path(base_name), theme)
121
+ entry = entry_class.new(file)
108
122
  if entry.available? and !theme_name.has_key?(theme)
109
123
  block.call(entry) if block
110
124
  themes << entry
@@ -3,31 +3,5 @@ proc_name = "title-shadow"
3
3
  @title_shadow_color ||= "#6f6f6fcc"
4
4
 
5
5
  match(TitleSlide, Title) do |titles|
6
-
7
- shadow_layout = nil
8
- move_x = nil
9
- move_y = nil
10
-
11
- titles.delete_pre_draw_proc_by_name(proc_name)
12
-
13
- titles.add_pre_draw_proc(proc_name) do |title, canvas, x, y, w, h, simulation|
14
- unless simulation
15
- if shadow_layout.nil?
16
- font_size = title.pixel_font_size
17
- move_x = screen_x(font_size.to_f / screen_size(10))
18
- move_y = screen_y(font_size.to_f / screen_size(20))
19
-
20
- shadow_title = title.clone
21
- shadow_title.font :color => nil
22
- shadow_layout = canvas.make_layout(shadow_title.markuped_text)
23
- shadow_layout.set_width(w * Pango::SCALE)
24
- if title.do_horizontal_centering?
25
- shadow_layout.set_alignment(Pango::Layout::ALIGN_CENTER)
26
- end
27
- end
28
- args = [shadow_layout, x + move_x, y + move_y, @title_shadow_color]
29
- canvas.draw_layout(*args)
30
- end
31
- [x, y, w, h]
32
- end
6
+ titles[0]["shadow-color"] = @title_shadow_color
33
7
  end