rabbit 0.6.4 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +1 -1
- data/NEWS.en +157 -2
- data/NEWS.ja +153 -1
- data/README.en +8 -1
- data/README.ja +8 -1
- data/Rakefile +4 -1
- data/TODO +17 -0
- data/bin/rabbiter +96 -0
- data/lib/rabbit/element/block-element.rb +0 -2
- data/lib/rabbit/element/block.rb +5 -4
- data/lib/rabbit/element/container-element.rb +2 -1
- data/lib/rabbit/element/description-list.rb +5 -2
- data/lib/rabbit/element/enum-list.rb +4 -0
- data/lib/rabbit/element/image.rb +41 -1
- data/lib/rabbit/element/item-list.rb +3 -0
- data/lib/rabbit/element/method-list.rb +2 -2
- data/lib/rabbit/element/poppler-page.rb +1 -0
- data/lib/rabbit/element/slide-element.rb +1 -0
- data/lib/rabbit/element/slide.rb +1 -1
- data/lib/rabbit/element/table.rb +7 -2
- data/lib/rabbit/element/tag.rb +1 -0
- data/lib/rabbit/element/text-block-element.rb +11 -0
- data/lib/rabbit/element/text-container-element.rb +4 -0
- data/lib/rabbit/element/text.rb +6 -3
- data/lib/rabbit/element/title-slide.rb +10 -10
- data/lib/rabbit/parser/ext/aafigure.rb +31 -0
- data/lib/rabbit/parser/rd.rb +2 -1
- data/lib/rabbit/parser/rd/ext/aafigure.rb +18 -0
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +27 -1
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +16 -22
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +8 -2
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +7 -1
- data/lib/rabbit/parser/wiki/output.rb +35 -6
- data/lib/rabbit/rabbit.rb +7 -1
- data/lib/rabbit/renderer/display/clutter-embed.rb +2 -0
- data/lib/rabbit/renderer/display/comment-drawing-area.rb +2 -0
- data/lib/rabbit/renderer/print/base.rb +6 -1
- data/lib/rabbit/theme/applier.rb +1 -1
- data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +85 -0
- data/lib/rabbit/theme/body-background-image/body-background-image.rb +8 -0
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
- data/lib/rabbit/theme/default/default.rb +12 -4
- data/lib/rabbit/theme/per-slide-background-image/per-slide-background-image.rb +7 -35
- data/lib/rabbit/theme/table/table.rb +13 -11
- data/lib/rabbit/theme/tag/property.rb +4 -0
- data/lib/rabbit/theme/tag/tag.rb +35 -0
- data/lib/rabbit/theme/title-background-image/title-background-image.rb +19 -17
- data/sample/rabbit-en.rd +89 -1
- data/sample/rabbit.rd +91 -2
- data/sample/table.hiki +34 -0
- metadata +106 -32
@@ -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
|
-
|
5
|
-
slide
|
6
|
-
|
7
|
-
|
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
|
-
|
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,
|
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,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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
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
|
data/sample/rabbit-en.rd
CHANGED
@@ -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
|
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
|
data/sample/rabbit.rd
CHANGED
@@ -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
|
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
|
: スクリーンショット
|