rabbit 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- data/NEWS.en +83 -1
- data/NEWS.ja +80 -1
- data/README.en +3 -1
- data/README.ja +3 -1
- data/Rakefile +2 -0
- data/TODO +1 -0
- data/bin/rabbit +8 -0
- data/data/rabbit/image/rabbit-images/mini-butler-rabbit.png +0 -0
- data/lib/rabbit/canvas.rb +9 -1
- data/lib/rabbit/cursor-manager.rb +1 -1
- data/lib/rabbit/element/tag.rb +10 -0
- data/lib/rabbit/html/generator.rb +8 -3
- data/lib/rabbit/parser/rd.rb +2 -0
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +12 -0
- data/lib/rabbit/parser/wiki/output.rb +2 -2
- data/lib/rabbit/rabbit.rb +1 -1
- data/lib/rabbit/renderer/base.rb +2 -0
- data/lib/rabbit/renderer/display/button-handler.rb +11 -6
- data/lib/rabbit/renderer/display/clutter-embed.rb +1 -0
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -0
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +0 -4
- data/lib/rabbit/renderer/display/drawing-area.rb +0 -4
- data/lib/rabbit/renderer/engine/cairo.rb +6 -1
- data/lib/rabbit/renderer/engine/gdk.rb +1 -0
- data/lib/rabbit/renderer/kernel.rb +0 -1
- data/lib/rabbit/source/base.rb +4 -2
- data/lib/rabbit/theme/blue-bar/blue-bar.rb +0 -2
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -2
- data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +33 -16
- data/lib/rabbit/theme/default-item-mark/default-item-mark.rb +13 -1
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +5 -1
- data/lib/rabbit/theme/default-text/default-text.rb +8 -0
- data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +2 -2
- data/lib/rabbit/theme/lightning-monochrome/lightning-monochrome.rb +16 -0
- data/lib/rabbit/theme/lightning-monochrome/property.rb +3 -0
- data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
- data/lib/rabbit/theme/newline-in-slides/newline-in-slides.rb +27 -1
- data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +3 -0
- data/lib/rabbit/utils.rb +12 -6
- data/misc/update-rd.rb +2 -0
- metadata +16 -3
data/NEWS.en
CHANGED
@@ -2,7 +2,89 @@
|
|
2
2
|
|
3
3
|
= NEWS.en
|
4
4
|
|
5
|
-
$Id: NEWS.en
|
5
|
+
$Id: NEWS.en 1331 2009-12-16 13:09:53Z kou $
|
6
|
+
|
7
|
+
== Changes 0.6.3 from 0.6.2: 2009-12-16
|
8
|
+
|
9
|
+
=== Improvements
|
10
|
+
|
11
|
+
* [#180] Supported inline markup in DL with Wiki format.
|
12
|
+
[kdmsnr]
|
13
|
+
* Added butler rabbit to the standard theme.
|
14
|
+
* Changed to use scaled images by default even when
|
15
|
+
printing mode.
|
16
|
+
* Supported pixbuf rendering with alpha channel.
|
17
|
+
(when cairo is used as rendering engine)
|
18
|
+
|
19
|
+
==== Theme
|
20
|
+
|
21
|
+
* Added:
|
22
|
+
* lightning-monochrome:
|
23
|
+
Takahashi method slide + monochrome normal slide
|
24
|
+
* Changed:
|
25
|
+
* default-block-quote: Added
|
26
|
+
@block_quote_image_background_alpha parameter that
|
27
|
+
specifies alpha channel of background images.
|
28
|
+
* default-preformatted: Made auto text size adjustment
|
29
|
+
optional. It is customized by
|
30
|
+
@preformatted_keep_in_size parameter.
|
31
|
+
* clear-blue: Displayed title in the left bottom by
|
32
|
+
default. It can be disabled by the following theme:
|
33
|
+
include_theme("clear-blue")
|
34
|
+
@slide_footer_info_left_text = ""
|
35
|
+
* Supported nest of "itemize > enum" and
|
36
|
+
"itemize > itemize > enum".
|
37
|
+
|
38
|
+
==== Experimental
|
39
|
+
|
40
|
+
((*This maybe changed in the feature.*))
|
41
|
+
|
42
|
+
* Supported tag:
|
43
|
+
|
44
|
+
syntax:
|
45
|
+
(('tag:name:content'))
|
46
|
+
or
|
47
|
+
(('tag:name'))content
|
48
|
+
|
49
|
+
e.g.:
|
50
|
+
slide.rab:
|
51
|
+
(('tag:center'))Hi, look it!
|
52
|
+
|
53
|
+
theme.rb:
|
54
|
+
match("**", CustomTag) do |tags|
|
55
|
+
tags.each do |tag|
|
56
|
+
case tag.name
|
57
|
+
when "center"
|
58
|
+
tag.parent.horizontal_centering = true
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
output(before):
|
64
|
+
+-------------------+
|
65
|
+
| Hi, look it! |
|
66
|
+
+-------------------+
|
67
|
+
|
68
|
+
output(after):
|
69
|
+
+-------------------+
|
70
|
+
| Hi, look it! |
|
71
|
+
+-------------------+
|
72
|
+
|
73
|
+
=== Fixes
|
74
|
+
|
75
|
+
* Fixed a problem that fullscreen doesn't work on Ruby 1.9
|
76
|
+
[Masaki Suketa]
|
77
|
+
* [#179] Fixed a problem that Rabbit sometimes crashes
|
78
|
+
with mouse clicks. [kdmsnr]
|
79
|
+
* newline-in-slides theme: Disabled newline substitution in
|
80
|
+
preformatted text.
|
81
|
+
* Fixed a problem that cursor isn't displayed after
|
82
|
+
unfullscreen.
|
83
|
+
|
84
|
+
=== Thanks
|
85
|
+
|
86
|
+
* Masaki Suketa
|
87
|
+
* kdmsnr
|
6
88
|
|
7
89
|
== Changes 0.6.2 from 0.6.1: 2009-10-03
|
8
90
|
|
data/NEWS.ja
CHANGED
@@ -2,7 +2,86 @@
|
|
2
2
|
|
3
3
|
= NEWS.ja
|
4
4
|
|
5
|
-
$Id: NEWS.ja
|
5
|
+
$Id: NEWS.ja 1330 2009-12-16 13:07:47Z kou $
|
6
|
+
|
7
|
+
== 0.6.2から0.6.3の変更点: 2009-12-16
|
8
|
+
|
9
|
+
=== 改良
|
10
|
+
|
11
|
+
* [#180] Wikiフォーマットの定義リスト内でインラインマーク
|
12
|
+
アップが効かない問題を修正。
|
13
|
+
[kdmsnrさん]
|
14
|
+
* 執事うさぎを標準テーマに追加。
|
15
|
+
* 印刷時でもデフォルトでは拡大・縮小後の画像を使用。
|
16
|
+
* アルファチャンネル付きのpixbufレンダリング対応。
|
17
|
+
(cairoレンダリングエンジン使用時)
|
18
|
+
|
19
|
+
==== テーマ
|
20
|
+
|
21
|
+
* 追加
|
22
|
+
* lightning-monochrome:
|
23
|
+
高橋メソッドスライド + モノクロな通常スライド
|
24
|
+
* 変更
|
25
|
+
* default-block-quote: 背景画像の透明度を指定する
|
26
|
+
@block_quote_image_background_alphaパラメーターを追加。
|
27
|
+
* default-preformatted: テキストの自動サイズ調整をカスタ
|
28
|
+
マイズできるようにした。@preformatted_keep_in_sizeパラ
|
29
|
+
メータで変更可能。
|
30
|
+
* clear-blue: デフォルトで左下にタイトルを表示するように
|
31
|
+
変更。無効にする場合は以下を追加するとよい。
|
32
|
+
include_theme("clear-blue")
|
33
|
+
@slide_footer_info_left_text = ""
|
34
|
+
* 箇条書きと列挙のネスト"itemize > enum"と
|
35
|
+
"itemize > itemize > enum"に対応
|
36
|
+
|
37
|
+
==== 実験的
|
38
|
+
|
39
|
+
((*変更される可能性があります。*))
|
40
|
+
|
41
|
+
* タグのサポート
|
42
|
+
|
43
|
+
構文:
|
44
|
+
(('tag:name:内容'))
|
45
|
+
または
|
46
|
+
(('tag:name'))内容
|
47
|
+
|
48
|
+
例:
|
49
|
+
slide.rab:
|
50
|
+
(('tag:center'))どうもどうも
|
51
|
+
|
52
|
+
theme.rb:
|
53
|
+
match("**", CustomTag) do |tags|
|
54
|
+
tags.each do |tag|
|
55
|
+
case tag.name
|
56
|
+
when "center"
|
57
|
+
tag.parent.horizontal_centering = true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
出力(テーマ適用前):
|
63
|
+
+-------------------+
|
64
|
+
| どうもどうも |
|
65
|
+
+-------------------+
|
66
|
+
|
67
|
+
出力(テーマ適用後):
|
68
|
+
+-------------------+
|
69
|
+
| どうもどうも |
|
70
|
+
+-------------------+
|
71
|
+
|
72
|
+
=== 修正
|
73
|
+
|
74
|
+
* Ruby 1.9でフルスクリーンが動かない問題を修正 [助田さん]
|
75
|
+
* [#179] マウス使用時にクラッシュすることがある問題を修正
|
76
|
+
[kdmsnrさん]
|
77
|
+
* newline-in-slidesテーマ: 整形済みテキストでは改行を置換
|
78
|
+
しないようにした。
|
79
|
+
* フルスクリーン解除時にカーソルが表示されない問題を修正
|
80
|
+
|
81
|
+
=== 感謝
|
82
|
+
|
83
|
+
* 助田さん
|
84
|
+
* kdmsnrさん
|
6
85
|
|
7
86
|
== 0.6.1から0.6.2の変更点: 2009-10-03
|
8
87
|
|
data/README.en
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
= README.en
|
4
4
|
|
5
|
-
$Id: README.en
|
5
|
+
$Id: README.en 1309 2009-10-17 09:18:27Z kou $
|
6
6
|
|
7
7
|
== Name
|
8
8
|
|
@@ -834,3 +834,5 @@ page from XXX.rd.
|
|
834
834
|
* JunichiNakai: Reports bugs.
|
835
835
|
* Eduardo Gonzalez: Improves documents in English.
|
836
836
|
* Kazuhiro NISHIYAMA: Reported a bug.
|
837
|
+
* Masaki Suketa: Reported bugs related Ruby 1.9.
|
838
|
+
* kdmsnr: Reported a bug.
|
data/README.ja
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
= README.ja
|
4
4
|
|
5
|
-
$Id: README.ja
|
5
|
+
$Id: README.ja 1309 2009-10-17 09:18:27Z kou $
|
6
6
|
|
7
7
|
== 名前
|
8
8
|
|
@@ -869,3 +869,5 @@ XXX.rdから1ページに8枚のスライドが入ったPDF(XXX_multi.pdf)
|
|
869
869
|
* Eduardo Gonzalezさん: 英語のドキュメントをよくしてくれま
|
870
870
|
した。
|
871
871
|
* 西山さん: バグレポートしてくれました。
|
872
|
+
* 助田さん: Ruby 1.9関連のバグを報告してくれました。
|
873
|
+
* kdmsnrさん: バグレポートしてくれました。
|
data/Rakefile
CHANGED
@@ -61,10 +61,12 @@ project = Hoe.spec('rabbit') do
|
|
61
61
|
self.test_globs = ['test/test_*.rb']
|
62
62
|
self.changes = File.read('NEWS.en').split(/^== /)[1].gsub(/^==/, '').strip
|
63
63
|
self.extra_deps = [
|
64
|
+
['cairo'],
|
64
65
|
['hikidoc'],
|
65
66
|
# ['gettext'],
|
66
67
|
]
|
67
68
|
self.description = self.summary # FIXME
|
69
|
+
self.need_tar = false
|
68
70
|
end
|
69
71
|
|
70
72
|
rule '.png' => ['.svg'] do |t|
|
data/TODO
CHANGED
data/bin/rabbit
CHANGED
@@ -32,6 +32,7 @@ def parse_args(args=ARGV, logger=nil)
|
|
32
32
|
options.print = false
|
33
33
|
options.print_out_filename = nil
|
34
34
|
options.slides_per_page = 1
|
35
|
+
options.draw_scaled_image = true
|
35
36
|
options.margin_left = nil
|
36
37
|
options.margin_right = nil
|
37
38
|
options.margin_top = nil
|
@@ -228,6 +229,12 @@ def parse_args(args=ARGV, logger=nil)
|
|
228
229
|
options.slides_per_page = slides
|
229
230
|
end
|
230
231
|
|
232
|
+
opts.on("--[no-]draw-scaled-image",
|
233
|
+
_("Draw scaled image."),
|
234
|
+
_("Better look for displaying but lesser look for printing."),
|
235
|
+
"(#{options.draw_scaled_image})") do |boolean|
|
236
|
+
options.draw_scaled_image = boolean
|
237
|
+
end
|
231
238
|
|
232
239
|
opts.category _("Paper")
|
233
240
|
|
@@ -555,6 +562,7 @@ end
|
|
555
562
|
def setup_print_info(target, options)
|
556
563
|
target.filename = options.print_out_filename
|
557
564
|
target.slides_per_page = options.slides_per_page
|
565
|
+
target.draw_scaled_image = options.draw_scaled_image
|
558
566
|
end
|
559
567
|
|
560
568
|
def setup_size(target, options)
|
Binary file
|
data/lib/rabbit/canvas.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require "forwardable"
|
2
2
|
require "gtk2"
|
3
|
-
require "rd/rdfmt"
|
4
3
|
|
5
4
|
require "rabbit/rabbit"
|
6
5
|
require 'rabbit/frame'
|
@@ -119,6 +118,8 @@ module Rabbit
|
|
119
118
|
|
120
119
|
def_delegators(:@renderer, :search_slide, :stop_slide_search, :searching?)
|
121
120
|
|
121
|
+
def_delegators(:@renderer, :draw_scaled_image, :draw_scaled_image=)
|
122
|
+
|
122
123
|
def_delegators(:@source, :source=, :reset, :base)
|
123
124
|
|
124
125
|
attr_reader :logger, :renderer, :last_modified
|
@@ -211,6 +212,13 @@ module Rabbit
|
|
211
212
|
end
|
212
213
|
end
|
213
214
|
|
215
|
+
def slide_text(index=current_index)
|
216
|
+
return "" if slides.empty?
|
217
|
+
slide = slides[index]
|
218
|
+
return "" if slide.nil?
|
219
|
+
slide.text.strip
|
220
|
+
end
|
221
|
+
|
214
222
|
def slides
|
215
223
|
if @index_mode
|
216
224
|
@index_slides
|
data/lib/rabbit/element/tag.rb
CHANGED
@@ -165,7 +165,7 @@ module Rabbit
|
|
165
165
|
output_html(filename) if output_html?
|
166
166
|
if rss_available?
|
167
167
|
@rss_info << [filename, slide_title(slide_number),
|
168
|
-
@slide.
|
168
|
+
@slide.text, @slide.to_html(self)]
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
@@ -179,7 +179,7 @@ module Rabbit
|
|
179
179
|
output_html(filename) if output_index_html?
|
180
180
|
if rss_available?
|
181
181
|
@rss_info << [filename, slide_title(slide_number),
|
182
|
-
@slide.
|
182
|
+
@slide.text, @slide_index_html]
|
183
183
|
end
|
184
184
|
@slide_index_html = nil
|
185
185
|
end
|
@@ -286,7 +286,8 @@ module Rabbit
|
|
286
286
|
|
287
287
|
def slide_image(slide_number=@slide_number)
|
288
288
|
src = image_src(slide_number)
|
289
|
-
img = "<img title=\"#{image_title(slide_number)}\"
|
289
|
+
img = "<img title=\"#{image_title(slide_number)}\" " +
|
290
|
+
"src=\"#{src}\" alt=\"#{h(slide_text(slide_number))}\" />"
|
290
291
|
if last_slide?(slide_number)
|
291
292
|
img
|
292
293
|
else
|
@@ -295,6 +296,10 @@ module Rabbit
|
|
295
296
|
end
|
296
297
|
end
|
297
298
|
|
299
|
+
def slide_text(slide_number=@slide_number)
|
300
|
+
@canvas.slide_text(slide_number)
|
301
|
+
end
|
302
|
+
|
298
303
|
def first_slide?(slide_number=@slide_number)
|
299
304
|
slide_number.zero?
|
300
305
|
end
|
data/lib/rabbit/parser/rd.rb
CHANGED
@@ -82,6 +82,18 @@ module Rabbit
|
|
82
82
|
return nil unless /^wait$/ =~ label
|
83
83
|
WaitTag.new
|
84
84
|
end
|
85
|
+
|
86
|
+
def ext_inline_verb_tag(label, source, content, visitor)
|
87
|
+
label = label.to_s
|
88
|
+
return nil unless /^tag:(.+?)(?::(.+))?$/ =~ label
|
89
|
+
name = $1
|
90
|
+
content = $2
|
91
|
+
if content
|
92
|
+
CustomTag.new(name, Text.new(visitor.apply_to_String(content)))
|
93
|
+
else
|
94
|
+
CustomTag.new(name)
|
95
|
+
end
|
96
|
+
end
|
85
97
|
end
|
86
98
|
end
|
87
99
|
end
|
@@ -176,8 +176,8 @@ module Rabbit
|
|
176
176
|
else
|
177
177
|
return unless @parent
|
178
178
|
|
179
|
-
desc_term = DescriptionTerm.new(Paragraph.new(dt))
|
180
|
-
desc_content = DescriptionContent.new(Paragraph.new(dd))
|
179
|
+
desc_term = DescriptionTerm.new(Paragraph.new(dt.flatten))
|
180
|
+
desc_content = DescriptionContent.new(Paragraph.new(dd.flatten))
|
181
181
|
@parent << DescriptionListItem.new(desc_term, desc_content)
|
182
182
|
end
|
183
183
|
end
|
data/lib/rabbit/rabbit.rb
CHANGED
data/lib/rabbit/renderer/base.rb
CHANGED
@@ -35,6 +35,7 @@ module Rabbit
|
|
35
35
|
attr_accessor :adjustment_x, :adjustment_y
|
36
36
|
attr_accessor :graffiti_color, :graffiti_line_width
|
37
37
|
attr_accessor :gl_scale, :gl_quaternion
|
38
|
+
attr_accessor :draw_scaled_image
|
38
39
|
attr_writer :page_margin_left, :page_margin_right
|
39
40
|
attr_writer :page_margin_top, :page_margin_bottom
|
40
41
|
|
@@ -62,6 +63,7 @@ module Rabbit
|
|
62
63
|
@progress_background = nil
|
63
64
|
@graffiti_color = nil
|
64
65
|
@graffiti_line_width = nil
|
66
|
+
@draw_scaled_image = true
|
65
67
|
clean
|
66
68
|
init_hook_procs
|
67
69
|
init_dpi
|
@@ -29,14 +29,19 @@ module Rabbit
|
|
29
29
|
end
|
30
30
|
|
31
31
|
widget.signal_connect("button_release_event") do |_widget, event|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
if last_button_press_event
|
33
|
+
handled = call_hook_procs(@button_release_hook_procs,
|
34
|
+
event, last_button_press_event)
|
35
|
+
if handled
|
36
|
+
clear_button_handler
|
37
|
+
else
|
38
|
+
handled = handle_button_release(event, last_button_press_event)
|
39
|
+
end
|
40
|
+
handled
|
36
41
|
else
|
37
|
-
|
42
|
+
clear_button_handler
|
43
|
+
false
|
38
44
|
end
|
39
|
-
handled
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
@@ -253,6 +253,7 @@ module Rabbit
|
|
253
253
|
x, y = from_screen(x, y)
|
254
254
|
|
255
255
|
draw_scaled_pixbuf = params[:draw_scaled_pixbuf]
|
256
|
+
draw_scaled_pixbuf = @draw_scaled_image if draw_scaled_pixbuf.nil?
|
256
257
|
width = (params[:width] || pixbuf.width).to_f
|
257
258
|
height = (params[:height] || pixbuf.height).to_f
|
258
259
|
if draw_scaled_pixbuf and
|
@@ -265,7 +266,7 @@ module Rabbit
|
|
265
266
|
@context.scale(width / pixbuf.width, height / pixbuf.height)
|
266
267
|
end
|
267
268
|
@context.set_source_pixbuf(pixbuf, 0, 0)
|
268
|
-
@context.paint
|
269
|
+
@context.paint(params[:alpha])
|
269
270
|
end
|
270
271
|
|
271
272
|
_draw_reflected_pixbuf(pixbuf, x, y, params[:reflect])
|
@@ -328,6 +329,10 @@ module Rabbit
|
|
328
329
|
context
|
329
330
|
end
|
330
331
|
|
332
|
+
def set_font_resolution(context)
|
333
|
+
context.resolution = @canvas.font_resolution
|
334
|
+
end
|
335
|
+
|
331
336
|
private
|
332
337
|
def init_engine_color
|
333
338
|
@foreground = make_color("black")
|
@@ -156,6 +156,7 @@ module Rabbit
|
|
156
156
|
return if gc.nil?
|
157
157
|
|
158
158
|
draw_scaled_pixbuf = params[:draw_scaled_pixbuf]
|
159
|
+
draw_scaled_pixbuf = @draw_scaled_image if draw_scaled_pixbuf.nil?
|
159
160
|
width = params[:width] || pixbuf.width
|
160
161
|
height = params[:height] || pixbuf.height
|
161
162
|
if draw_scaled_pixbuf and
|
data/lib/rabbit/source/base.rb
CHANGED
@@ -39,8 +39,10 @@ module Rabbit
|
|
39
39
|
else
|
40
40
|
enc = @encoding
|
41
41
|
end
|
42
|
-
|
43
|
-
|
42
|
+
|
43
|
+
if /\Autf-?8\z/i =~ enc
|
44
|
+
@source.force_encoding(enc) if @source.respond_to?(:force_encoding)
|
45
|
+
else
|
44
46
|
require "iconv"
|
45
47
|
@source = Iconv.conv("UTF-8", enc, @source)
|
46
48
|
end
|
@@ -63,8 +63,6 @@ end
|
|
63
63
|
match(TitleSlide, "*") do |elements|
|
64
64
|
elements.horizontal_centering = false
|
65
65
|
elements.align = :right
|
66
|
-
|
67
|
-
elements.substitute_newline
|
68
66
|
end
|
69
67
|
|
70
68
|
match(TitleSlide, Title) do |titles|
|
@@ -96,5 +94,6 @@ include_theme("slide-logo")
|
|
96
94
|
@icon_images = ["clear-blue-icon.png"]
|
97
95
|
include_theme("icon")
|
98
96
|
|
97
|
+
@slide_footer_info_left_text ||= canvas.title
|
99
98
|
@slide_footer_info_right_text ||= "Powered by Rabbit #{Rabbit::VERSION}"
|
100
99
|
include_theme("slide-footer-info")
|
@@ -16,6 +16,7 @@
|
|
16
16
|
@block_quote_open_quote_image ||= nil
|
17
17
|
@block_quote_close_quote_image ||= nil
|
18
18
|
@block_quote_image_max_width ||= canvas.width * 0.1
|
19
|
+
@block_quote_image_background_alpha ||= nil
|
19
20
|
|
20
21
|
match("**", BlockQuote) do
|
21
22
|
name = "block-quote"
|
@@ -44,14 +45,18 @@ match("**", BlockQuote) do
|
|
44
45
|
if open_quote.width > @block_quote_image_max_width
|
45
46
|
open_quote.resize(@block_quote_image_max_width, nil)
|
46
47
|
end
|
47
|
-
|
48
|
+
unless @block_quote_image_background_alpha
|
49
|
+
padding_left += open_quote.width
|
50
|
+
end
|
48
51
|
end
|
49
52
|
if @block_quote_close_quote_image
|
50
53
|
close_quote = ImageLoader.new(find_file(@block_quote_close_quote_image))
|
51
54
|
if close_quote.width > @block_quote_image_max_width
|
52
55
|
close_quote.resize(@block_quote_image_max_width, nil)
|
53
56
|
end
|
54
|
-
|
57
|
+
unless @block_quote_image_background_alpha
|
58
|
+
padding_right += close_quote.width
|
59
|
+
end
|
55
60
|
end
|
56
61
|
|
57
62
|
block.padding_with(:left => padding_left,
|
@@ -63,22 +68,34 @@ match("**", BlockQuote) do
|
|
63
68
|
:bottom => @space)
|
64
69
|
|
65
70
|
block.delete_pre_draw_proc_by_name(name)
|
66
|
-
|
67
|
-
if open_quote
|
68
|
-
adjust_open_quote_x = (@block_quote_padding_left / 2) + open_quote.width
|
71
|
+
if open_quote or close_quote
|
69
72
|
block.add_pre_draw_proc(name) do |canvas, x, y, w, h, simulation|
|
70
73
|
unless simulation
|
71
|
-
open_quote
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
74
|
+
if open_quote
|
75
|
+
adjust_open_quote_x = @block_quote_padding_left / 2
|
76
|
+
adjust_open_quote_y = @block_quote_padding_top / 2
|
77
|
+
unless @block_quote_image_background_alpha
|
78
|
+
adjust_open_quote_x += open_quote.width
|
79
|
+
end
|
80
|
+
open_quote.draw(canvas,
|
81
|
+
x - adjust_open_quote_x,
|
82
|
+
y - adjust_open_quote_y,
|
83
|
+
:alpha => @block_quote_image_background_alpha)
|
84
|
+
end
|
85
|
+
if close_quote
|
86
|
+
adjust_close_quote_x = -@block_quote_padding_right / 2
|
87
|
+
if @block_quote_image_background_alpha
|
88
|
+
adjust_close_quote_x += close_quote.width
|
89
|
+
end
|
90
|
+
adjust_close_quote_y = block.height
|
91
|
+
adjust_close_quote_y -= close_quote.height
|
92
|
+
adjust_close_quote_y -= @block_quote_padding_bottom / 2
|
93
|
+
adjust_close_quote_y -= block.padding_bottom
|
94
|
+
close_quote.draw(canvas,
|
95
|
+
x + w - adjust_close_quote_x,
|
96
|
+
y + adjust_close_quote_y,
|
97
|
+
:alpha => @block_quote_image_background_alpha)
|
98
|
+
end
|
82
99
|
end
|
83
100
|
[x, y, w, h]
|
84
101
|
end
|
@@ -54,12 +54,24 @@ match(*(slide_body + (enum_list_item * 2))) do |items|
|
|
54
54
|
end
|
55
55
|
|
56
56
|
match(*(slide_body + (enum_list_item * 3))) do |items|
|
57
|
-
setup_default_enum_item_mark(items,
|
57
|
+
setup_default_enum_item_mark(items, "enum3", 1, (1 / 4.0),
|
58
58
|
{"size" => @x_small_font_size},
|
59
59
|
{"type" => "upper-case"})
|
60
60
|
end
|
61
61
|
|
62
62
|
|
63
|
+
match(*(slide_body + item_list_item + enum_list_item)) do |items|
|
64
|
+
setup_default_enum_item_mark(items, "item1-enum", 1.5, (2 / 4.0),
|
65
|
+
{"size" => @small_font_size},
|
66
|
+
{"type" => "lower-case"})
|
67
|
+
end
|
68
|
+
|
69
|
+
match(*(slide_body + (item_list_item * 2) + enum_list_item)) do |items|
|
70
|
+
setup_default_enum_item_mark(items, "item2-enum", 1, (1 / 4.0),
|
71
|
+
{"size" => @x_small_font_size},
|
72
|
+
{"type" => "upper-case"})
|
73
|
+
end
|
74
|
+
|
63
75
|
match(*(slide_body + enum_list_item + item_list_item)) do |items|
|
64
76
|
setup_default_item_mark(items, "enum-item1", 1.5, 1.5, (2 / 4.0),
|
65
77
|
@default_enum_item1_mark_color,
|
@@ -8,6 +8,10 @@
|
|
8
8
|
@preformatted_padding_top ||= screen_y(2)
|
9
9
|
@preformatted_padding_bottom ||= screen_y(2)
|
10
10
|
|
11
|
+
if @preformatted_keep_in_size.nil?
|
12
|
+
@preformatted_keep_in_size = true
|
13
|
+
end
|
14
|
+
|
11
15
|
match("**", PreformattedBlock) do |blocks|
|
12
16
|
name = "preformatted-block"
|
13
17
|
|
@@ -31,7 +35,7 @@ match("**", PreformattedBlock) do |blocks|
|
|
31
35
|
blocks.margin_top = @space
|
32
36
|
blocks.margin_bottom = @space
|
33
37
|
|
34
|
-
blocks.keep_in_size
|
38
|
+
blocks.keep_in_size if @preformatted_keep_in_size
|
35
39
|
|
36
40
|
draw_frame(blocks, params)
|
37
41
|
end
|
@@ -140,6 +140,14 @@ match(*(slide_body + (enum_list_item * 3))) do
|
|
140
140
|
end
|
141
141
|
|
142
142
|
|
143
|
+
match(*(slide_body + item_list_item + enum_list_item)) do
|
144
|
+
prop_set("size", @small_font_size)
|
145
|
+
end
|
146
|
+
|
147
|
+
match(*(slide_body + (item_list_item * 2) + enum_list_item)) do
|
148
|
+
prop_set("size", @x_small_font_size)
|
149
|
+
end
|
150
|
+
|
143
151
|
match(*(slide_body + enum_list_item + item_list_item)) do
|
144
152
|
prop_set("size", @small_font_size)
|
145
153
|
end
|
@@ -37,10 +37,10 @@ match(SlideElement) do |slides|
|
|
37
37
|
"color" => text_color,
|
38
38
|
}
|
39
39
|
left_layout = right_layout = nil
|
40
|
-
if left_text
|
40
|
+
if left_text and !left_text.empty?
|
41
41
|
left_layout = make_formatted_layout.call(props, left_text)
|
42
42
|
end
|
43
|
-
if right_text
|
43
|
+
if right_text and !right_text.empty?
|
44
44
|
right_layout = make_formatted_layout.call(props, right_text)
|
45
45
|
end
|
46
46
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
@slide_number_uninstall = true
|
2
|
+
@default_headline_line_color = "black"
|
3
|
+
@default_item1_mark_type = "check"
|
4
|
+
@default_item2_mark_type = "circle"
|
5
|
+
include_theme("default")
|
6
|
+
|
7
|
+
@lightning_talk_proc_name = "lightning-default"
|
8
|
+
include_theme("lightning-talk-toolkit")
|
9
|
+
|
10
|
+
match(Slide) do |slides|
|
11
|
+
slides.each do |slide|
|
12
|
+
if slide.lightning_talk?
|
13
|
+
slide.lightning_talk
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,3 +1,29 @@
|
|
1
1
|
match("**") do |elements|
|
2
|
-
|
2
|
+
have_preformatted_in_parent = Proc.new do |element|
|
3
|
+
if element.nil?
|
4
|
+
false
|
5
|
+
elsif element.is_a?(PreformattedBlock)
|
6
|
+
true
|
7
|
+
else
|
8
|
+
have_preformatted_in_parent.call(element.parent)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
have_preformatted_in_children = Proc.new do |element|
|
13
|
+
if element.nil?
|
14
|
+
false
|
15
|
+
elsif element.is_a?(PreformattedBlock)
|
16
|
+
true
|
17
|
+
elsif element.respond_to?(:elements)
|
18
|
+
element.elements.any? {|child| have_preformatted_in_children.call(child)}
|
19
|
+
else
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
elements.each do |element|
|
25
|
+
next if have_preformatted_in_parent.call(element)
|
26
|
+
next if have_preformatted_in_children.call(element)
|
27
|
+
element.substitute_newline
|
28
|
+
end
|
3
29
|
end
|
@@ -20,6 +20,9 @@ name = "slide-footer-info"
|
|
20
20
|
@slide_footer_info_text_over_line ||= false
|
21
21
|
@slide_footer_info_base_y ||= canvas.height - @margin_bottom
|
22
22
|
|
23
|
+
@slide_footer_info_left_text ||= nil
|
24
|
+
@slide_footer_info_right_text ||= nil
|
25
|
+
|
23
26
|
include_theme("edge-info-toolkit")
|
24
27
|
|
25
28
|
match(SlideElement) do
|
data/lib/rabbit/utils.rb
CHANGED
@@ -387,12 +387,18 @@ module Rabbit
|
|
387
387
|
|
388
388
|
module Converter
|
389
389
|
module_function
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
390
|
+
if "".respond_to?(:encoding)
|
391
|
+
def keep_kcode(new_kcode)
|
392
|
+
yield
|
393
|
+
end
|
394
|
+
else
|
395
|
+
def keep_kcode(new_kcode)
|
396
|
+
kcode = $KCODE
|
397
|
+
$KCODE = new_kcode
|
398
|
+
yield
|
399
|
+
ensure
|
400
|
+
$KCODE = kcode
|
401
|
+
end
|
396
402
|
end
|
397
403
|
|
398
404
|
def to_utf8(str)
|
data/misc/update-rd.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabbit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,9 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-16 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: cairo
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
15
25
|
- !ruby/object:Gem::Dependency
|
16
26
|
name: hikidoc
|
17
27
|
type: :runtime
|
@@ -30,7 +40,7 @@ dependencies:
|
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
43
|
+
version: 2.4.0
|
34
44
|
version:
|
35
45
|
description: Rabbit is an RD-document-based presentation application.
|
36
46
|
email:
|
@@ -88,6 +98,7 @@ files:
|
|
88
98
|
- data/rabbit/image/rabbit-images/lavie-with-logo.png
|
89
99
|
- data/rabbit/image/rabbit-images/lavie.png
|
90
100
|
- data/rabbit/image/rabbit-images/mini-alice.png
|
101
|
+
- data/rabbit/image/rabbit-images/mini-butler-rabbit.png
|
91
102
|
- data/rabbit/image/rabbit-images/mini-horizontal-bar.png
|
92
103
|
- data/rabbit/image/rabbit-images/mini-kame-taro.png
|
93
104
|
- data/rabbit/image/rabbit-images/mini-tanu-kitaro.png
|
@@ -418,6 +429,8 @@ files:
|
|
418
429
|
- lib/rabbit/theme/image/property.rb
|
419
430
|
- lib/rabbit/theme/lightning-clear-blue/lightning-clear-blue.rb
|
420
431
|
- lib/rabbit/theme/lightning-clear-blue/property.rb
|
432
|
+
- lib/rabbit/theme/lightning-monochrome/lightning-monochrome.rb
|
433
|
+
- lib/rabbit/theme/lightning-monochrome/property.rb
|
421
434
|
- lib/rabbit/theme/lightning-rabbit/lightning-rabbit.rb
|
422
435
|
- lib/rabbit/theme/lightning-rabbit/property.rb
|
423
436
|
- lib/rabbit/theme/lightning-simple/lightning-simple.rb
|