rabbit 2.1.3 → 2.1.4

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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/doc/_config.yml +2 -2
  3. data/doc/en/faq.rd +5 -5
  4. data/doc/en/install/windows.rd +4 -49
  5. data/doc/en/news.rd +96 -0
  6. data/doc/en/slides.rd +2 -0
  7. data/doc/en/usage/rabbit-slide.rd +1 -1
  8. data/doc/ja/faq.rd +37 -32
  9. data/doc/ja/how-to-make/theme.rd +50 -50
  10. data/doc/ja/index.rd +35 -35
  11. data/doc/ja/install/windows.rd +4 -46
  12. data/doc/ja/news.rd +127 -30
  13. data/doc/ja/sample/hiki/rabbit.hiki +4 -4
  14. data/doc/ja/usage/rabbit-slide.rd +8 -8
  15. data/doc/ja/usage/rabbit-theme.rd +7 -7
  16. data/doc/ja/usage/rabbit.rd +124 -124
  17. data/lib/rabbit/action/basic.rb +1 -1
  18. data/lib/rabbit/canvas.rb +19 -19
  19. data/lib/rabbit/command/rabbit-slide.rb +5 -4
  20. data/lib/rabbit/command/rabbit.rb +2 -1
  21. data/lib/rabbit/cursor-manager.rb +14 -14
  22. data/lib/rabbit/element/poppler-slide.rb +6 -0
  23. data/lib/rabbit/element/poppler-title-slide.rb +6 -0
  24. data/lib/rabbit/element/slide-element.rb +4 -0
  25. data/lib/rabbit/element/text-renderer.rb +1 -1
  26. data/lib/rabbit/formatter.rb +9 -9
  27. data/lib/rabbit/frame.rb +5 -5
  28. data/lib/rabbit/front.rb +2 -2
  29. data/lib/rabbit/graffiti/processor.rb +9 -9
  30. data/lib/rabbit/html/template.erb +1 -1
  31. data/lib/rabbit/image/default.rb +2 -2
  32. data/lib/rabbit/image/eps.rb +5 -5
  33. data/lib/rabbit/image/pdf.rb +1 -1
  34. data/lib/rabbit/image/svg.rb +1 -1
  35. data/lib/rabbit/logger/base.rb +5 -5
  36. data/lib/rabbit/logger/stderr.rb +4 -1
  37. data/lib/rabbit/menu.rb +4 -4
  38. data/lib/rabbit/parser/ext/aafigure.rb +6 -4
  39. data/lib/rabbit/parser/ext/blockdiag.rb +5 -3
  40. data/lib/rabbit/parser/ext/entity.rb +26 -26
  41. data/lib/rabbit/parser/markdown.rb +42 -0
  42. data/lib/rabbit/parser/markdown/converter.rb +115 -18
  43. data/lib/rabbit/parser/pdf.rb +1 -5
  44. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +2 -2
  45. data/lib/rabbit/rabbit.rb +1 -1
  46. data/lib/rabbit/renderer/base.rb +15 -23
  47. data/lib/rabbit/renderer/color.rb +3 -3
  48. data/lib/rabbit/renderer/display/base.rb +81 -6
  49. data/lib/rabbit/renderer/display/clutter-embed.rb +1 -1
  50. data/lib/rabbit/renderer/display/drawing-area-base.rb +2 -2
  51. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -1
  52. data/lib/rabbit/renderer/engine/cairo.rb +1 -70
  53. data/lib/rabbit/renderer/kernel.rb +11 -19
  54. data/lib/rabbit/renderer/pixmap/base.rb +3 -3
  55. data/lib/rabbit/renderer/print/base.rb +5 -5
  56. data/lib/rabbit/renderer/print/cairo.rb +10 -17
  57. data/lib/rabbit/renderer/print/layout.rb +6 -6
  58. data/lib/rabbit/renderer/print/multiple.rb +11 -14
  59. data/lib/rabbit/size.rb +65 -0
  60. data/lib/rabbit/soap/driver.rb +1 -1
  61. data/lib/rabbit/soap/server.rb +1 -1
  62. data/lib/rabbit/source/argf.rb +4 -4
  63. data/lib/rabbit/source/base.rb +2 -1
  64. data/lib/rabbit/source/file.rb +8 -8
  65. data/lib/rabbit/source/hiki.rb +1 -1
  66. data/lib/rabbit/source/memory.rb +2 -2
  67. data/lib/rabbit/source/uri.rb +4 -2
  68. data/lib/rabbit/theme/applier.rb +1 -0
  69. data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +3 -1
  70. data/lib/rabbit/theme/pdf/pdf.rb +12 -6
  71. data/lib/rabbit/utils.rb +6 -6
  72. data/lib/rabbit/version.rb +1 -1
  73. data/lib/rabbit/xmlrpc/server.rb +1 -1
  74. data/po/en/rabbit.edit.po +29 -30
  75. data/po/fr/rabbit.edit.po +29 -30
  76. data/po/ja/rabbit.edit.po +29 -29
  77. data/sample/rabbit-en.hiki +3 -3
  78. data/sample/rabbit-en.md +27 -8
  79. data/sample/rabbit-en.rd +2 -2
  80. data/sample/rabbit.hiki +3 -3
  81. data/sample/rabbit.md +27 -8
  82. data/sample/rabbit.rd +2 -2
  83. data/test/parser/test-markdown.rb +210 -6
  84. data/test/test-size.rb +152 -0
  85. data/test/test-source.rb +17 -0
  86. metadata +5 -2
@@ -22,11 +22,7 @@ module Rabbit
22
22
 
23
23
  include Element
24
24
  def parse
25
- @pdf = Tempfile.new("rabbit-pdf")
26
- @pdf.binmode
27
- @pdf.print(@source.read)
28
- @pdf.close
29
- doc = Poppler::Document.new("file://#{@pdf.path}")
25
+ doc = Poppler::Document.new(@source.read)
30
26
 
31
27
  title_page, *rest = doc.to_a
32
28
 
@@ -50,7 +50,7 @@ module Rabbit
50
50
  end
51
51
  table << block
52
52
  end
53
-
53
+
54
54
  def process_header(table)
55
55
  process_block(table, @header, Element::TableHead, Element::TableHeader)
56
56
  end
@@ -84,6 +84,6 @@ module Rabbit
84
84
  end
85
85
  target.align = target.default_align
86
86
  end
87
-
87
+
88
88
  end
89
89
  end
data/lib/rabbit/rabbit.rb CHANGED
@@ -167,7 +167,7 @@ module Rabbit
167
167
  super(_("immutable source type: %s") % @source_type)
168
168
  end
169
169
  end
170
-
170
+
171
171
  class ThemeExit < Error
172
172
  def initialize(message=nil)
173
173
  @have_message = !message.nil?
@@ -6,14 +6,6 @@ require "rabbit/rabbit"
6
6
  require "rabbit/trackball"
7
7
  require "rabbit/renderer/color"
8
8
 
9
- module Pango
10
- class Context
11
- unless method_defined?(:families)
12
- alias families list_families
13
- end
14
- end
15
- end
16
-
17
9
  module Rabbit
18
10
  module Renderer
19
11
  module Base
@@ -24,7 +16,7 @@ module Rabbit
24
16
  include DirtyCount
25
17
 
26
18
  def_delegators(:@canvas, :reload_source)
27
-
19
+
28
20
  attr_reader :x_dpi, :y_dpi
29
21
  attr_accessor :paper_width, :paper_height, :slides_per_page
30
22
  attr_accessor :margin_left, :margin_right
@@ -71,19 +63,19 @@ module Rabbit
71
63
  def page_margin_left
72
64
  @page_margin_left || 0
73
65
  end
74
-
66
+
75
67
  def page_margin_right
76
68
  @page_margin_right || 0
77
69
  end
78
-
70
+
79
71
  def page_margin_top
80
72
  @page_margin_top || 0
81
73
  end
82
-
74
+
83
75
  def page_margin_bottom
84
76
  @page_margin_bottom || 0
85
77
  end
86
-
78
+
87
79
  def font_families
88
80
  if @font_families.nil? or @font_families.empty?
89
81
  @font_families = create_pango_context.families
@@ -148,7 +140,7 @@ module Rabbit
148
140
  def create_pango_context
149
141
  Pango::Context.new
150
142
  end
151
-
143
+
152
144
  def printable?
153
145
  false
154
146
  end
@@ -163,7 +155,7 @@ module Rabbit
163
155
 
164
156
  def setup_event(area)
165
157
  end
166
-
158
+
167
159
  def to_attrs(hash)
168
160
  hash.collect do |key, value|
169
161
  if value
@@ -228,11 +220,11 @@ module Rabbit
228
220
  def graffiti_mode?
229
221
  false
230
222
  end
231
-
223
+
232
224
  def have_graffiti?
233
225
  false
234
226
  end
235
-
227
+
236
228
  def can_undo_graffiti?
237
229
  false
238
230
  end
@@ -269,7 +261,7 @@ module Rabbit
269
261
  def off_screen_renderer?
270
262
  false
271
263
  end
272
-
264
+
273
265
  def do_print(&block)
274
266
  pre_print(@canvas.slide_size)
275
267
  canceled = false
@@ -296,7 +288,7 @@ module Rabbit
296
288
  canvas.toggle_index_mode if @canvas.index_mode?
297
289
  canvas
298
290
  end
299
-
291
+
300
292
  def make_canvas_with_printable_renderer
301
293
  renderer = Renderer.printable_renderer(@canvas.slides_per_page)
302
294
  make_canvas_with_renderer(renderer) do |canvas|
@@ -308,7 +300,7 @@ module Rabbit
308
300
  canvas.slides_per_page = @canvas.slides_per_page
309
301
  end
310
302
  end
311
-
303
+
312
304
  def make_canvas_with_off_screen_renderer
313
305
  make_canvas_with_renderer(Pixmap) do |canvas|
314
306
  canvas.width = @canvas.width
@@ -321,7 +313,7 @@ module Rabbit
321
313
  canvas.margin_left = @canvas.margin_left
322
314
  canvas.margin_right = @canvas.margin_right
323
315
  canvas.margin_top = @canvas.margin_top
324
- canvas.page_margin_bottom = @canvas.page_margin_bottom
316
+ canvas.margin_bottom = @canvas.margin_bottom
325
317
  end
326
318
 
327
319
  def setup_page_margin(canvas)
@@ -347,7 +339,7 @@ module Rabbit
347
339
 
348
340
  def setup_flag_params(pole_height, default_flag_width_ratio, params)
349
341
  params = params.dup
350
-
342
+
351
343
  text = params["text"]
352
344
  text_attrs = params["text_attributes"] || {}
353
345
  if text
@@ -366,7 +358,7 @@ module Rabbit
366
358
  params["layout"] = nil
367
359
  flag_width_default = flag_height_default = nil
368
360
  end
369
-
361
+
370
362
  params["pole_width"] = params["pole_width"] || 2
371
363
  params["pole_color"] ||= "black"
372
364
  flag_height = params["flag_height"] ||
@@ -44,7 +44,7 @@ module Rabbit
44
44
  end
45
45
 
46
46
  alias have_alpha? have_alpha
47
-
47
+
48
48
  def to_s
49
49
  "#%04X%04X%04X%04X" % to_gdk_rgba
50
50
  end
@@ -56,7 +56,7 @@ module Rabbit
56
56
  [red, green, blue]
57
57
  end
58
58
  end
59
-
59
+
60
60
  def to_gdk_rgb
61
61
  to_gdk_rgba[0..-2]
62
62
  end
@@ -70,7 +70,7 @@ module Rabbit
70
70
  def to_gdk_format
71
71
  to_s.gsub(/[a-z0-9]{4}\z/i, '')
72
72
  end
73
-
73
+
74
74
  def to_gdk_color
75
75
  Gdk::Color.new(*to_gdk_rgb)
76
76
  end
@@ -10,22 +10,27 @@ module Rabbit
10
10
 
11
11
  def initialize(*args, &block)
12
12
  @drawable = nil
13
+ @size = nil
14
+ @default_size_ratio = nil
15
+ @size_ratio = nil
13
16
  super
14
17
  end
15
18
 
16
19
  def width
17
- if @drawable
18
- @drawable.size[0]
20
+ if @size
21
+ @size.logical_width
22
+ else
23
+ nil
19
24
  end
20
25
  end
21
- alias original_width width
22
26
 
23
27
  def height
24
- if @drawable
25
- @drawable.size[1]
28
+ if @size
29
+ @size.logical_height
30
+ else
31
+ nil
26
32
  end
27
33
  end
28
- alias original_height height
29
34
 
30
35
  def redraw
31
36
  widget.queue_draw
@@ -81,7 +86,76 @@ module Rabbit
81
86
  @canvas.update_title(@canvas.slide_title)
82
87
  end
83
88
 
89
+ def draw_slide(slide, simulation)
90
+ set_size_ratio(slide.size_ratio || @default_size_ratio)
91
+
92
+ if simulation
93
+ super
94
+ else
95
+ save_context do
96
+ translate_context(@size.logical_margin_left,
97
+ @size.logical_margin_top)
98
+ super
99
+ end
100
+
101
+ unless @size.have_logical_margin?
102
+ return
103
+ end
104
+
105
+ margin_background = make_color("black")
106
+ if @size.have_logical_margin_x?
107
+ draw_rectangle(true,
108
+ 0,
109
+ 0,
110
+ @size.logical_margin_left,
111
+ @size.real_height,
112
+ margin_background)
113
+ draw_rectangle(true,
114
+ @size.real_width - @size.logical_margin_right,
115
+ 0,
116
+ @size.logical_margin_right,
117
+ @size.real_height,
118
+ margin_background)
119
+ end
120
+ if @size.have_logical_margin_y?
121
+ draw_rectangle(true,
122
+ 0,
123
+ 0,
124
+ @size.real_width,
125
+ @size.logical_margin_top,
126
+ margin_background)
127
+ draw_rectangle(true,
128
+ 0,
129
+ @size.real_height - @size.logical_margin_bottom,
130
+ @size.real_width,
131
+ @size.logical_margin_bottom,
132
+ margin_background)
133
+ end
134
+ end
135
+ end
136
+
84
137
  private
138
+ def set_drawable(drawable)
139
+ @drawable = drawable
140
+ w, h = @drawable.size
141
+ @default_size_ratio = w.to_f / h.to_f
142
+ @size_ratio = @default_size_ratio
143
+ set_size(w, h)
144
+ end
145
+
146
+ def set_size(w, h)
147
+ @size = Size.new(w, h, @size_ratio)
148
+ end
149
+
150
+ def set_size_ratio(ratio)
151
+ return if @size.ratio == ratio
152
+
153
+ w = @size.real_width
154
+ h = @size.real_height
155
+ @size_ratio = ratio
156
+ @size = Size.new(w, h, @size_ratio)
157
+ end
158
+
85
159
  def set_configure_event
86
160
  id = @window.signal_connect("configure_event") do |widget, event|
87
161
  configured(event.x, event.y, event.width, event.height)
@@ -91,6 +165,7 @@ module Rabbit
91
165
  end
92
166
 
93
167
  def configured(x, y, w, h)
168
+ set_size(w, h)
94
169
  end
95
170
 
96
171
  def queue_draw
@@ -291,7 +291,7 @@ module Rabbit
291
291
 
292
292
  def set_map
293
293
  @embed.signal_connect("map") do |widget, event|
294
- @drawable = widget.window
294
+ set_drawable(widget.window)
295
295
  false
296
296
  end
297
297
  end
@@ -290,10 +290,10 @@ module Rabbit
290
290
 
291
291
  if whiteouting?
292
292
  @drawable.draw_rectangle(@white, true, 0, 0,
293
- original_width, original_height)
293
+ @size.real_width, @size.real_height)
294
294
  elsif blackouting?
295
295
  @drawable.draw_rectangle(@black, true, 0, 0,
296
- original_width, original_height)
296
+ @size.real_width, @size.real_height)
297
297
  else
298
298
  super
299
299
  draw_graffiti
@@ -131,7 +131,7 @@ module Rabbit
131
131
  end
132
132
 
133
133
  def mapped(widget)
134
- @drawable = widget.window
134
+ set_drawable(widget.window)
135
135
  prepare_renderer(@drawable)
136
136
  end
137
137
 
@@ -4,70 +4,15 @@ require "stringio"
4
4
  require "rabbit/image-data-loader"
5
5
  require "rabbit/renderer/kernel"
6
6
 
7
- module Cairo
8
- class Context
9
- unless instance_methods.include?("rounded_rectangle")
10
- def rounded_rectangle(x, y, width, height, x_radius, y_radius=nil)
11
- x1 = x
12
- x2 = x1 + width
13
- y1 = y
14
- y2 = y1 + height
15
-
16
- y_radius ||= x_radius
17
-
18
- x_radius = [x_radius, width / 2].min
19
- y_radius = [y_radius, height / 2].min
20
-
21
- xr1 = x_radius
22
- xr2 = x_radius / 2.0
23
- yr1 = y_radius
24
- yr2 = y_radius / 2.0
25
-
26
- move_to(x1 + xr1, y1)
27
- line_to(x2 - xr1, y1)
28
- curve_to(x2 - xr2, y1, x2, y1 + yr2, x2, y1 + yr1)
29
- line_to(x2, y2 - yr1)
30
- curve_to(x2, y2 - yr2, x2 - xr2, y2, x2 - xr1, y2)
31
- line_to(x1 + xr1, y2)
32
- curve_to(x1 + xr2, y2, x1, y2 - yr2, x1, y2 - yr1)
33
- line_to(x1, y1 + yr1)
34
- curve_to(x1, y1 + yr2, x1 + xr2, y1, x1 + xr1, y1)
35
- close_path
36
- end
37
- end
38
- end
39
- end
40
-
41
7
  module Rabbit
42
8
  module Renderer
43
9
  module Engine
44
10
  module Cairo
45
11
  include Kernel
46
12
 
47
- @@rsvg_available = nil
48
- @@poppler_available = nil
49
-
50
13
  class << self
51
- def available_with_gdk?
52
- Gdk.respond_to?(:cairo_available?) and Gdk.cairo_available?
53
- end
54
-
55
- def available_with_gdk_pixbuf?
56
- Gdk::Pixbuf.respond_to?(:cairo_available?) and
57
- Gdk::Pixbuf.cairo_available?
58
- end
59
-
60
- def available_with_pango?
61
- Pango.respond_to?(:cairo_available?) and Pango.cairo_available?
62
- end
63
-
64
14
  def priority
65
- if available_with_gdk? and available_with_gdk_pixbuf? and
66
- available_with_pango?
67
- 100
68
- else
69
- -100
70
- end
15
+ 100
71
16
  end
72
17
  end
73
18
 
@@ -300,13 +245,6 @@ module Rabbit
300
245
  end
301
246
  end
302
247
 
303
- def rsvg_available?
304
- if @@rsvg_available.nil?
305
- @@rsvg_available = RSVG.cairo_available?
306
- end
307
- @@rsvg_available
308
- end
309
-
310
248
  def draw_rsvg_handle(handle, x, y, params={})
311
249
  x, y = from_screen(x, y)
312
250
  dim = handle.dimensions
@@ -322,13 +260,6 @@ module Rabbit
322
260
  params)
323
261
  end
324
262
 
325
- def poppler_available?
326
- if @@poppler_available.nil?
327
- @@poppler_available = Poppler.cairo_available?
328
- end
329
- @@poppler_available
330
- end
331
-
332
263
  def draw_poppler_page(page, x, y, params={})
333
264
  x, y = from_screen(x, y)
334
265
  w, h = page.size