rabbit 0.6.4 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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
  : スクリーンショット