rabbit 0.6.2 → 0.6.3

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.
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