rabbit 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/NEWS.en +83 -1
  2. data/NEWS.ja +80 -1
  3. data/README.en +3 -1
  4. data/README.ja +3 -1
  5. data/Rakefile +2 -0
  6. data/TODO +1 -0
  7. data/bin/rabbit +8 -0
  8. data/data/rabbit/image/rabbit-images/mini-butler-rabbit.png +0 -0
  9. data/lib/rabbit/canvas.rb +9 -1
  10. data/lib/rabbit/cursor-manager.rb +1 -1
  11. data/lib/rabbit/element/tag.rb +10 -0
  12. data/lib/rabbit/html/generator.rb +8 -3
  13. data/lib/rabbit/parser/rd.rb +2 -0
  14. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +12 -0
  15. data/lib/rabbit/parser/wiki/output.rb +2 -2
  16. data/lib/rabbit/rabbit.rb +1 -1
  17. data/lib/rabbit/renderer/base.rb +2 -0
  18. data/lib/rabbit/renderer/display/button-handler.rb +11 -6
  19. data/lib/rabbit/renderer/display/clutter-embed.rb +1 -0
  20. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -0
  21. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +0 -4
  22. data/lib/rabbit/renderer/display/drawing-area.rb +0 -4
  23. data/lib/rabbit/renderer/engine/cairo.rb +6 -1
  24. data/lib/rabbit/renderer/engine/gdk.rb +1 -0
  25. data/lib/rabbit/renderer/kernel.rb +0 -1
  26. data/lib/rabbit/source/base.rb +4 -2
  27. data/lib/rabbit/theme/blue-bar/blue-bar.rb +0 -2
  28. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -2
  29. data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +33 -16
  30. data/lib/rabbit/theme/default-item-mark/default-item-mark.rb +13 -1
  31. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +5 -1
  32. data/lib/rabbit/theme/default-text/default-text.rb +8 -0
  33. data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +2 -2
  34. data/lib/rabbit/theme/lightning-monochrome/lightning-monochrome.rb +16 -0
  35. data/lib/rabbit/theme/lightning-monochrome/property.rb +3 -0
  36. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
  37. data/lib/rabbit/theme/newline-in-slides/newline-in-slides.rb +27 -1
  38. data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +3 -0
  39. data/lib/rabbit/utils.rb +12 -6
  40. data/misc/update-rd.rb +2 -0
  41. metadata +16 -3
data/NEWS.en CHANGED
@@ -2,7 +2,89 @@
2
2
 
3
3
  = NEWS.en
4
4
 
5
- $Id: NEWS.en 1297 2009-10-03 13:37:27Z kou $
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 1297 2009-10-03 13:37:27Z kou $
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 1291 2009-10-03 11:43:07Z kou $
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 1262 2009-07-16 08:20:24Z kou $
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
@@ -5,3 +5,4 @@
5
5
  * support SilverCity or CodeRay.
6
6
  * [nori] write manpage (converted from something like RD or DocBook XML).
7
7
  * support GooCanvas.
8
+ * support Nokogiri as alternative of HTree.
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)
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
@@ -39,7 +39,7 @@ module Rabbit
39
39
  nil
40
40
  else
41
41
  name = "@#{type}_cursor"
42
- unless instance_variables.include?(name)
42
+ unless instance_variable_defined?(name)
43
43
  raise UnknownCursorTypeError.new(type)
44
44
  end
45
45
  instance_variable_get(name)
@@ -25,5 +25,15 @@ module Rabbit
25
25
  [x, y, w, h]
26
26
  end
27
27
  end
28
+
29
+ class CustomTag
30
+ include TextContainerElement
31
+
32
+ attr_reader :name
33
+ def initialize(name, elements=[])
34
+ super(elements)
35
+ @name = name
36
+ end
37
+ end
28
38
  end
29
39
  end
@@ -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.to_rd, @slide.to_html(self)]
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.to_rd, @slide_index_html]
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)}\" src=\"#{src}\" />"
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
@@ -1,3 +1,5 @@
1
+ require "rd/rdfmt"
2
+
1
3
  require "rabbit/parser/base"
2
4
 
3
5
  module Rabbit
@@ -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
@@ -8,7 +8,7 @@ require "rabbit/gettext"
8
8
 
9
9
  module Rabbit
10
10
 
11
- VERSION = "0.6.2"
11
+ VERSION = "0.6.3"
12
12
 
13
13
  TMP_DIR_NAME = ".tmp"
14
14
 
@@ -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
- handled = call_hook_procs(@button_release_hook_procs,
33
- event, last_button_press_event)
34
- if handled
35
- clear_button_handler
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
- handled = handle_button_release(event, last_button_press_event)
42
+ clear_button_handler
43
+ false
38
44
  end
39
- handled
40
45
  end
41
46
  end
42
47
 
@@ -71,6 +71,7 @@ module Rabbit
71
71
  end
72
72
 
73
73
  def post_unfullscreen
74
+ update_cursor(nil, true)
74
75
  update_menu
75
76
  end
76
77
 
@@ -49,6 +49,7 @@ module Rabbit
49
49
  end
50
50
 
51
51
  def post_unfullscreen
52
+ update_cursor(nil, true)
52
53
  update_menu
53
54
  end
54
55
 
@@ -18,10 +18,6 @@ module Rabbit
18
18
  super
19
19
  end
20
20
 
21
- def draw_pixbuf(pixbuf, x, y, params={})
22
- super(pixbuf, x, y, {:draw_scaled_pixbuf => true}.merge(params))
23
- end
24
-
25
21
  private
26
22
  def init_color
27
23
  super
@@ -16,10 +16,6 @@ module Rabbit
16
16
  end
17
17
  end
18
18
 
19
- def draw_pixbuf(pixbuf, x, y, params={})
20
- super(pixbuf, x, y, {:draw_scaled_pixbuf => true}.merge(params))
21
- end
22
-
23
19
  private
24
20
  def init_color
25
21
  super
@@ -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
@@ -249,7 +249,6 @@ module Rabbit
249
249
  end
250
250
 
251
251
  def set_font_resolution(context)
252
- context.resolution = @canvas.font_resolution
253
252
  end
254
253
  end
255
254
  end
@@ -39,8 +39,10 @@ module Rabbit
39
39
  else
40
40
  enc = @encoding
41
41
  end
42
-
43
- unless /\Autf-?8\z/i =~ enc
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
@@ -1,5 +1,3 @@
1
- include_theme("newline-in-slides")
2
-
3
1
  @lightning_talk_proc_name = "lightning-blue-bar"
4
2
  @lightning_talk_as_large_as_possible = true
5
3
  include_theme("lightning-talk-toolkit")
@@ -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
- padding_left += open_quote.width
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
- padding_right += close_quote.width
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
- block.delete_post_draw_proc_by_name(name)
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.draw(canvas, x - adjust_open_quote_x, y)
72
- end
73
- [x, y, w, h]
74
- end
75
- end
76
- if close_quote
77
- adjust_close_quote_x = (@block_quote_padding_bottom / 2)
78
- adjust_close_quote_x += close_quote.height
79
- block.add_post_draw_proc(name) do |canvas, x, y, w, h, simulation|
80
- unless simulation
81
- close_quote.draw(canvas, x + w, y - adjust_close_quote_x)
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, 3, 1, (1 / 4.0),
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
@@ -0,0 +1,3 @@
1
+ @category = N_("Theme")
2
+ @title = N_("LightningTalk-Monochrome")
3
+ @description = N_("Lightning Talk theme monochrome version")
@@ -1,3 +1,4 @@
1
+ include_theme("newline-in-slides")
1
2
  include_theme("default-slide")
2
3
  include_theme("default-title-text")
3
4
  include_theme("default-text")
@@ -1,3 +1,29 @@
1
1
  match("**") do |elements|
2
- elements.substitute_newline
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
- def keep_kcode(new_kcode)
391
- kcode = $KCODE
392
- $KCODE = new_kcode
393
- yield
394
- ensure
395
- $KCODE = kcode
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
@@ -65,6 +65,8 @@ update_rd(*args) do |src, page_name, prefix|
65
65
  end
66
66
 
67
67
  [
68
+ ["NEWS.ja"],
69
+ ["NEWS.en"],
68
70
  ["INSTALL.macosx-macports.ja"],
69
71
  ["INSTALL.macosx-macports.en"],
70
72
  ["sample/rabbit.rd", "sample.ja"],
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.2
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-10-03 00:00:00 +09:00
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.3.3
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