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.
- checksums.yaml +4 -4
- data/doc/_config.yml +2 -2
- data/doc/en/faq.rd +5 -5
- data/doc/en/install/windows.rd +4 -49
- data/doc/en/news.rd +96 -0
- data/doc/en/slides.rd +2 -0
- data/doc/en/usage/rabbit-slide.rd +1 -1
- data/doc/ja/faq.rd +37 -32
- data/doc/ja/how-to-make/theme.rd +50 -50
- data/doc/ja/index.rd +35 -35
- data/doc/ja/install/windows.rd +4 -46
- data/doc/ja/news.rd +127 -30
- data/doc/ja/sample/hiki/rabbit.hiki +4 -4
- data/doc/ja/usage/rabbit-slide.rd +8 -8
- data/doc/ja/usage/rabbit-theme.rd +7 -7
- data/doc/ja/usage/rabbit.rd +124 -124
- data/lib/rabbit/action/basic.rb +1 -1
- data/lib/rabbit/canvas.rb +19 -19
- data/lib/rabbit/command/rabbit-slide.rb +5 -4
- data/lib/rabbit/command/rabbit.rb +2 -1
- data/lib/rabbit/cursor-manager.rb +14 -14
- data/lib/rabbit/element/poppler-slide.rb +6 -0
- data/lib/rabbit/element/poppler-title-slide.rb +6 -0
- data/lib/rabbit/element/slide-element.rb +4 -0
- data/lib/rabbit/element/text-renderer.rb +1 -1
- data/lib/rabbit/formatter.rb +9 -9
- data/lib/rabbit/frame.rb +5 -5
- data/lib/rabbit/front.rb +2 -2
- data/lib/rabbit/graffiti/processor.rb +9 -9
- data/lib/rabbit/html/template.erb +1 -1
- data/lib/rabbit/image/default.rb +2 -2
- data/lib/rabbit/image/eps.rb +5 -5
- data/lib/rabbit/image/pdf.rb +1 -1
- data/lib/rabbit/image/svg.rb +1 -1
- data/lib/rabbit/logger/base.rb +5 -5
- data/lib/rabbit/logger/stderr.rb +4 -1
- data/lib/rabbit/menu.rb +4 -4
- data/lib/rabbit/parser/ext/aafigure.rb +6 -4
- data/lib/rabbit/parser/ext/blockdiag.rb +5 -3
- data/lib/rabbit/parser/ext/entity.rb +26 -26
- data/lib/rabbit/parser/markdown.rb +42 -0
- data/lib/rabbit/parser/markdown/converter.rb +115 -18
- data/lib/rabbit/parser/pdf.rb +1 -5
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +2 -2
- data/lib/rabbit/rabbit.rb +1 -1
- data/lib/rabbit/renderer/base.rb +15 -23
- data/lib/rabbit/renderer/color.rb +3 -3
- data/lib/rabbit/renderer/display/base.rb +81 -6
- data/lib/rabbit/renderer/display/clutter-embed.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-base.rb +2 -2
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +1 -70
- data/lib/rabbit/renderer/kernel.rb +11 -19
- data/lib/rabbit/renderer/pixmap/base.rb +3 -3
- data/lib/rabbit/renderer/print/base.rb +5 -5
- data/lib/rabbit/renderer/print/cairo.rb +10 -17
- data/lib/rabbit/renderer/print/layout.rb +6 -6
- data/lib/rabbit/renderer/print/multiple.rb +11 -14
- data/lib/rabbit/size.rb +65 -0
- data/lib/rabbit/soap/driver.rb +1 -1
- data/lib/rabbit/soap/server.rb +1 -1
- data/lib/rabbit/source/argf.rb +4 -4
- data/lib/rabbit/source/base.rb +2 -1
- data/lib/rabbit/source/file.rb +8 -8
- data/lib/rabbit/source/hiki.rb +1 -1
- data/lib/rabbit/source/memory.rb +2 -2
- data/lib/rabbit/source/uri.rb +4 -2
- data/lib/rabbit/theme/applier.rb +1 -0
- data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +3 -1
- data/lib/rabbit/theme/pdf/pdf.rb +12 -6
- data/lib/rabbit/utils.rb +6 -6
- data/lib/rabbit/version.rb +1 -1
- data/lib/rabbit/xmlrpc/server.rb +1 -1
- data/po/en/rabbit.edit.po +29 -30
- data/po/fr/rabbit.edit.po +29 -30
- data/po/ja/rabbit.edit.po +29 -29
- data/sample/rabbit-en.hiki +3 -3
- data/sample/rabbit-en.md +27 -8
- data/sample/rabbit-en.rd +2 -2
- data/sample/rabbit.hiki +3 -3
- data/sample/rabbit.md +27 -8
- data/sample/rabbit.rd +2 -2
- data/test/parser/test-markdown.rb +210 -6
- data/test/test-size.rb +152 -0
- data/test/test-source.rb +17 -0
- metadata +5 -2
data/lib/rabbit/parser/pdf.rb
CHANGED
@@ -22,11 +22,7 @@ module Rabbit
|
|
22
22
|
|
23
23
|
include Element
|
24
24
|
def parse
|
25
|
-
|
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
data/lib/rabbit/renderer/base.rb
CHANGED
@@ -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.
|
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 @
|
18
|
-
@
|
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 @
|
25
|
-
@
|
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
|
@@ -290,10 +290,10 @@ module Rabbit
|
|
290
290
|
|
291
291
|
if whiteouting?
|
292
292
|
@drawable.draw_rectangle(@white, true, 0, 0,
|
293
|
-
|
293
|
+
@size.real_width, @size.real_height)
|
294
294
|
elsif blackouting?
|
295
295
|
@drawable.draw_rectangle(@black, true, 0, 0,
|
296
|
-
|
296
|
+
@size.real_width, @size.real_height)
|
297
297
|
else
|
298
298
|
super
|
299
299
|
draw_graffiti
|
@@ -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
|
-
|
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
|