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.
- 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
|
: スクリーンショット
|