rabbit 0.6.4 → 0.9.0

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.
Files changed (51) hide show
  1. data/COPYING +1 -1
  2. data/NEWS.en +157 -2
  3. data/NEWS.ja +153 -1
  4. data/README.en +8 -1
  5. data/README.ja +8 -1
  6. data/Rakefile +4 -1
  7. data/TODO +17 -0
  8. data/bin/rabbiter +96 -0
  9. data/lib/rabbit/element/block-element.rb +0 -2
  10. data/lib/rabbit/element/block.rb +5 -4
  11. data/lib/rabbit/element/container-element.rb +2 -1
  12. data/lib/rabbit/element/description-list.rb +5 -2
  13. data/lib/rabbit/element/enum-list.rb +4 -0
  14. data/lib/rabbit/element/image.rb +41 -1
  15. data/lib/rabbit/element/item-list.rb +3 -0
  16. data/lib/rabbit/element/method-list.rb +2 -2
  17. data/lib/rabbit/element/poppler-page.rb +1 -0
  18. data/lib/rabbit/element/slide-element.rb +1 -0
  19. data/lib/rabbit/element/slide.rb +1 -1
  20. data/lib/rabbit/element/table.rb +7 -2
  21. data/lib/rabbit/element/tag.rb +1 -0
  22. data/lib/rabbit/element/text-block-element.rb +11 -0
  23. data/lib/rabbit/element/text-container-element.rb +4 -0
  24. data/lib/rabbit/element/text.rb +6 -3
  25. data/lib/rabbit/element/title-slide.rb +10 -10
  26. data/lib/rabbit/parser/ext/aafigure.rb +31 -0
  27. data/lib/rabbit/parser/rd.rb +2 -1
  28. data/lib/rabbit/parser/rd/ext/aafigure.rb +18 -0
  29. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +27 -1
  30. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +16 -22
  31. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +8 -2
  32. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +7 -1
  33. data/lib/rabbit/parser/wiki/output.rb +35 -6
  34. data/lib/rabbit/rabbit.rb +7 -1
  35. data/lib/rabbit/renderer/display/clutter-embed.rb +2 -0
  36. data/lib/rabbit/renderer/display/comment-drawing-area.rb +2 -0
  37. data/lib/rabbit/renderer/print/base.rb +6 -1
  38. data/lib/rabbit/theme/applier.rb +1 -1
  39. data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +85 -0
  40. data/lib/rabbit/theme/body-background-image/body-background-image.rb +8 -0
  41. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  42. data/lib/rabbit/theme/default/default.rb +12 -4
  43. data/lib/rabbit/theme/per-slide-background-image/per-slide-background-image.rb +7 -35
  44. data/lib/rabbit/theme/table/table.rb +13 -11
  45. data/lib/rabbit/theme/tag/property.rb +4 -0
  46. data/lib/rabbit/theme/tag/tag.rb +35 -0
  47. data/lib/rabbit/theme/title-background-image/title-background-image.rb +19 -17
  48. data/sample/rabbit-en.rd +89 -1
  49. data/sample/rabbit.rd +91 -2
  50. data/sample/table.hiki +34 -0
  51. metadata +106 -32
@@ -0,0 +1,8 @@
1
+ match(Slide, Body) do |bodies|
2
+ options = {
3
+ :proc_name => "body-background-image",
4
+ }
5
+ bodies.each do |body|
6
+ apply_background_image_property(body, options)
7
+ end
8
+ end
@@ -94,6 +94,6 @@ include_theme("slide-logo")
94
94
  @icon_images = ["clear-blue-icon.png"]
95
95
  include_theme("icon")
96
96
 
97
- @slide_footer_info_left_text ||= canvas.title
97
+ @slide_footer_info_left_text ||= canvas.title.gsub(/\n/, '')
98
98
  @slide_footer_info_right_text ||= "Powered by Rabbit #{Rabbit::VERSION}"
99
99
  include_theme("slide-footer-info")
@@ -5,10 +5,6 @@ set_foreground(@default_foreground)
5
5
  set_background(@default_background)
6
6
 
7
7
  add_image_path("ruby-images")
8
- include_theme("image")
9
- include_theme("table")
10
- include_theme("newline-in-slides")
11
- include_theme("slide-number")
12
8
  include_theme("default-icon")
13
9
  include_theme("default-title-text")
14
10
  include_theme("default-text")
@@ -20,3 +16,15 @@ include_theme("default-preformatted")
20
16
  include_theme("default-block-quote")
21
17
  include_theme("default-foot-text")
22
18
  include_theme("default-description")
19
+ include_theme("image")
20
+ include_theme("table")
21
+ include_theme("newline-in-slides")
22
+ include_theme("slide-number")
23
+
24
+ include_theme("per-slide-background-color")
25
+
26
+ include_theme("background-image-toolkit")
27
+ include_theme("per-slide-background-image")
28
+ include_theme("body-background-image")
29
+
30
+ include_theme("tag")
@@ -1,39 +1,11 @@
1
- proc_name = "per-slide-background-image"
2
-
3
1
  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]
2
+ options = {
3
+ :proc_name => "per-slide-background-image",
4
+ :compute_initial_geometry => Proc.new do |canvas, x, y, w, h|
5
+ [0, 0, canvas.width, canvas.height]
37
6
  end
7
+ }
8
+ slides.each do |slide|
9
+ apply_background_image_property(slide, options)
38
10
  end
39
11
  end
@@ -96,6 +96,12 @@ match(*(all_table + [TableHead, TableRow, TableHeader])) do |headers|
96
96
  end
97
97
  [x, y, w, h]
98
98
  end
99
+
100
+ headers.add_post_draw_proc(name) do |header, canvas, x, y, w, h, simulation|
101
+ moved_x = header.width + header.padding_left + header.padding_right
102
+ moved_y = header.height - header.padding_top - header.padding_bottom
103
+ [x + moved_x, y - moved_y, w - moved_x, h + moved_y]
104
+ end
99
105
  end
100
106
 
101
107
  match(*(all_table + [TableBody, TableRow, TableCell])) do |cells|
@@ -123,7 +129,9 @@ match(*(all_table + [TableBody, TableRow, TableCell])) do |cells|
123
129
 
124
130
  cells.each do |cell|
125
131
  orig_x = nil
132
+ orig_y = nil
126
133
  orig_w = nil
134
+ orig_h = nil
127
135
  cell_w = nil
128
136
  width_not_set = true
129
137
 
@@ -132,21 +140,15 @@ match(*(all_table + [TableBody, TableRow, TableCell])) do |cells|
132
140
 
133
141
  cell.add_pre_draw_proc(name) do |canvas, x, y, w, h, simulation|
134
142
  orig_x = x
143
+ orig_y = y
135
144
  orig_w = w
145
+ orig_h = h
136
146
  if simulation
137
147
  cell_w = table.available_w / row.elements.size
138
148
  base_y = y + cell.padding_top
139
149
  text_width = cell_w - cell.padding_left - cell.padding_right
140
-
141
- need_recompile = false
142
- if cell.layout.nil? or cell.layout.pixel_size[0] > text_width
143
- need_recompile = true
144
- elsif width_not_set
145
- need_recompile = true
146
- width_not_set = false
147
- end
148
-
149
- if need_recompile
150
+
151
+ if cell.layout.nil? or cell.width > text_width
150
152
  cell.dirty!
151
153
  cell.text_compile(canvas, x, base_y, text_width, h)
152
154
  end
@@ -155,7 +157,7 @@ match(*(all_table + [TableBody, TableRow, TableCell])) do |cells|
155
157
  end
156
158
 
157
159
  cell.add_post_draw_proc(name) do |canvas, x, y, w, h, simulation|
158
- [orig_x + cell_w, y, orig_w - cell_w, h]
160
+ [orig_x + cell_w, orig_y, orig_w - cell_w, orig_h]
159
161
  end
160
162
 
161
163
  draw_frame(cell, params) do |_, canvas, x, y, w, h|
@@ -0,0 +1,4 @@
1
+ @category = N_("Toolkit")
2
+ @title = N_("Tag")
3
+ @abstract = N_("Toolkit to apply custom tag")
4
+ @description = N_("Applyes custom tag style.")
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ @tag_uninstall ||= false
4
+
5
+ theme_exit if @tag_uninstall
6
+
7
+ match("**", CustomTag) do |tags|
8
+ find_block_element = lambda do |tag|
9
+ element = tag
10
+ while element.inline_element?
11
+ element = element.parent
12
+ end
13
+ element
14
+ end
15
+
16
+ find_markup_target = lambda do |tag|
17
+ if tag.elements.empty?
18
+ tag.parent
19
+ else
20
+ tag
21
+ end
22
+ end
23
+
24
+ tags.each do |tag|
25
+ case tag.name
26
+ when "center"
27
+ find_block_element.call(tag).horizontal_centering = true
28
+ when "right"
29
+ find_block_element.call(tag).align = "right"
30
+ when "x-large"
31
+ find_markup_target.call(tag).prop_set("size", @x_large_font_size)
32
+ end
33
+ end
34
+ end
35
+
@@ -1,25 +1,27 @@
1
- proc_name = "title-background-image"
2
-
3
1
  if @title_background_image.nil?
4
2
  theme_exit("must specify @title_background_image!!")
5
3
  end
6
4
 
7
- match(TitleSlide) do |slides|
8
- loader = ImageLoader.new(find_file(@title_background_image))
9
- resized = false
10
-
11
- slides.delete_pre_draw_proc_by_name(proc_name)
5
+ @title_background_image_properties ||= {}
6
+ default_title_backgroud_image_properties = {
7
+ "as_large_as_possible" => true,
8
+ "align" => "center",
9
+ "assign_box" => false,
10
+ "keep_ratio" => true,
11
+ }
12
12
 
13
- slides.add_pre_draw_proc(proc_name) do |slide, canvas, x, y, w, h, simulation|
14
- unless simulation
15
- unless loader.nil?
16
- unless resized
17
- loader.resize(canvas.width, canvas.height)
18
- resized = true
19
- end
20
- loader.draw(canvas, 0, 0)
21
- end
13
+ match(TitleSlide) do |slides|
14
+ slides.each do |slide|
15
+ image_properties = default_title_backgroud_image_properties.dup
16
+ @title_background_image_properties.each do |key, value|
17
+ value = value.to_s if value.is_a?(Symbol)
18
+ image_properties[key.to_s.gsub(/-/, "_")] = value
22
19
  end
23
- [x, y, w, h]
20
+ properties = {
21
+ :file_name => find_file(@title_background_image),
22
+ :proc_name => "title-background-image",
23
+ :properties => image_properties,
24
+ }
25
+ apply_background_image_property(slide, properties)
24
26
  end
25
27
  end
@@ -1,6 +1,6 @@
1
1
  # To run with it without system install.
2
2
  # % ruby -I./lib bin/rabbit -f sample/rabbit-en.rd
3
- # $Id: rabbit-en.rd 1260 2009-06-27 13:38:12Z kou $
3
+ # $Id: rabbit-en.rd 1409 2010-09-25 12:49:27Z kou $
4
4
 
5
5
  = Rabbit(en)
6
6
 
@@ -106,6 +106,14 @@ A presentation tool
106
106
  * Theme reload
107
107
  * Change theme
108
108
 
109
+ = Features: Tag
110
+
111
+ (('tag:x-large:Large Text'))
112
+
113
+ (('tag:center'))Centerized Text
114
+
115
+ (('tag:right'))Right-Justified Text
116
+
109
117
  = ToDo
110
118
 
111
119
  * Inline images
@@ -134,6 +142,38 @@ A presentation tool
134
142
  # relative_height = 80
135
143
  # reflect_ratio = 0.5
136
144
 
145
+ = Image: Background (1)
146
+
147
+ * Background image
148
+ * Centering by default
149
+
150
+ == Properties
151
+
152
+ : background-image
153
+ lavie.png
154
+
155
+ : background-image-relative-width
156
+ 50
157
+
158
+ # : background-image-align
159
+ # right
160
+
161
+ : background-image-relative-margin-right
162
+ 3
163
+
164
+ = Image: Background (2)
165
+
166
+ # image
167
+ # src = lavie.png
168
+ # relative-width = 30
169
+ # align = right
170
+ # # vertical-align = top
171
+ # relative-margin-right = -5
172
+
173
+ * Right justified backgorund image
174
+ * Specify in slide
175
+ * align = right
176
+
137
177
  = Image size
138
178
 
139
179
  Relative image sizes
@@ -206,6 +246,25 @@ Create EPS ahead of time((-needs gs-))
206
246
  # src = rabbit.xcf
207
247
  # relative_height = 100
208
248
 
249
+ = aafigure
250
+
251
+ # aafigure
252
+ # relative_width = 90
253
+ # # foreground = #ff3333
254
+ A B C D E F G H I J K L M
255
+ AA BB CC DD EE FF GG HH II JJ KK LL MM
256
+ AA BB CC DD EE FF GG HH II JJ KK LL MM
257
+
258
+ aa bb cc dd ee ff gg hh ii jj kk ll mm
259
+ aa bb cc dd ee ff gg hh ii jj kk ll mm
260
+
261
+ N O P Q R S T U V W X Y Z
262
+ NN OO PP QQ RR SS TT UU VV WW XX YY ZZ
263
+ NN OO PP QQ RR SS TT UU VV WW XX YY ZZ
264
+
265
+ nn oo pp qq rr ss tt uu vv ww xx yy zz
266
+ nn oo pp qq rr ss tt uu vv ww xx yy zz
267
+
209
268
  = Word Wrapping
210
269
 
211
270
  looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong
@@ -317,6 +376,35 @@ End of source code.
317
376
  : Toggle info window
318
377
  I
319
378
 
379
+ = Op.: On stage (3)
380
+
381
+ : Magnifier
382
+ Ctrl + right click
383
+
384
+ Change scale by wheel
385
+
386
+ : Spotlight
387
+ Double right clicks
388
+
389
+ Change radius by wheel
390
+
391
+ = Op.: On stage (4)
392
+
393
+ : Graffiti
394
+ Popup menu (right click) (('→'))\n
395
+ "Graffiti mode"
396
+
397
+ : Mouse gesture
398
+ Right button drag
399
+
400
+ = Op.: On stage (5)
401
+
402
+ : Whiteout
403
+ W
404
+
405
+ : Blackout
406
+ B
407
+
320
408
  = Op.: Save
321
409
 
322
410
  : Screenshot
@@ -1,6 +1,6 @@
1
1
  # To run with it without system install.
2
- # % ruby -I./lib bin/rabbit -f sample/rabbit.rd
3
- # $Id: rabbit.rd 1260 2009-06-27 13:38:12Z kou $
2
+ # % ruby -I./lib bin/rabbit -f sample/rabbit.rd
3
+ # $Id: rabbit.rd 1409 2010-09-25 12:49:27Z kou $
4
4
 
5
5
  = Rabbit
6
6
 
@@ -107,6 +107,14 @@
107
107
  * テーマの再読み込み
108
108
  * テーマの切り替え
109
109
 
110
+ = 機能: タグ
111
+
112
+ (('tag:x-large:大きなテキスト'))
113
+
114
+ (('tag:center'))中央寄せされたテキスト
115
+
116
+ (('tag:right'))右寄せされたテキスト
117
+
110
118
  = ToDo
111
119
 
112
120
  * インラインでの画像表示
@@ -134,6 +142,38 @@
134
142
  # relative_height = 80
135
143
  # reflect_ratio = 0.5
136
144
 
145
+ = 画像: 背景(1)
146
+
147
+ * 背景画像
148
+ * デフォルトはセンタリング
149
+
150
+ == プロパティ
151
+
152
+ : background-image
153
+ lavie.png
154
+
155
+ : background-image-relative-width
156
+ 50
157
+
158
+ # : background-image-align
159
+ # right
160
+
161
+ # : background-image-relative-margin-right
162
+ # 3
163
+
164
+ = 画像: 背景(2)
165
+
166
+ # image
167
+ # src = lavie.png
168
+ # relative-width = 30
169
+ # align = right
170
+ # # vertical-align = top
171
+ # relative-margin-right = -5
172
+
173
+ * 右寄せ背景画像
174
+ * スライド内で指定
175
+ * align = right
176
+
137
177
  = 画像サイズ
138
178
 
139
179
  スライドサイズに応じて変更可能
@@ -203,6 +243,27 @@ URL先の画像をダウンロード
203
243
  # src = rabbit.xcf
204
244
  # relative_height = 100
205
245
 
246
+ = aafigure
247
+
248
+ # aafigure
249
+ # relative_width = 90
250
+ # # foreground = #ff3333
251
+ # # option = font=mikachan
252
+ あいうえお
253
+ A B C D E F G H I J K L M
254
+ AA BB CC DD EE FF GG HH II JJ KK LL MM
255
+ AA BB CC DD EE FF GG HH II JJ KK LL MM
256
+
257
+ aa bb cc dd ee ff gg hh ii jj kk ll mm
258
+ aa bb cc dd ee ff gg hh ii jj kk ll mm
259
+
260
+ N O P Q R S T U V W X Y Z
261
+ NN OO PP QQ RR SS TT UU VV WW XX YY ZZ
262
+ NN OO PP QQ RR SS TT UU VV WW XX YY ZZ
263
+
264
+ nn oo pp qq rr ss tt uu vv ww xx yy zz
265
+ nn oo pp qq rr ss tt uu vv ww xx yy zz
266
+
206
267
  = 折り返し
207
268
 
208
269
  なーーーーーーーーーーーーーーーーーーーーーーーーーーーーーがーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーい行
@@ -324,6 +385,34 @@ URL先の画像をダウンロード
324
385
  : 情報ウィンドウ表示切替え
325
386
  I
326
387
 
388
+ = 操作: 本番用(3)
389
+
390
+ : 虫眼鏡
391
+ Ctrl+右クリック
392
+
393
+ ホイールで拡大率変更
394
+
395
+ : スポットライト
396
+ ダブル右クリック
397
+
398
+ ホイールで半径変更
399
+
400
+ = 操作: 本番用(4)
401
+
402
+ : 落書き
403
+ ポップアップ(右クリック)→\n落書きモード
404
+
405
+ : マウスジェスチャー
406
+ 右ドラッグ
407
+
408
+ = 操作: 本番用(5)
409
+
410
+ : ホワイトアウト
411
+ W
412
+
413
+ : ブラックアウト
414
+ B
415
+
327
416
  = 操作: 保存
328
417
 
329
418
  : スクリーンショット