rabbit 2.2.1 → 3.0.0
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 +5 -5
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -2
- data/doc/_layouts/en.html +1 -1
- data/doc/_layouts/ja.html +1 -1
- data/doc/en/news.rd +140 -0
- data/doc/en/sample/hiki/rabbit.hiki +2 -2
- data/doc/en/sample/markdown/rabbit.md +1 -1
- data/doc/en/sample/rd/rabbit.rd +1 -1
- data/doc/en/usage/rabbit-slide.rd +3 -3
- data/doc/images/screenshots/en/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/en/blue-circle.png +0 -0
- data/doc/images/screenshots/en/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/en/clear-blue.png +0 -0
- data/doc/images/screenshots/en/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/en/cozmixng.png +0 -0
- data/doc/images/screenshots/en/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/en/dark-gradation.png +0 -0
- data/doc/images/screenshots/en/day-white-raw.png +0 -0
- data/doc/images/screenshots/en/day-white.png +0 -0
- data/doc/images/screenshots/en/debian-raw.png +0 -0
- data/doc/images/screenshots/en/debian.png +0 -0
- data/doc/images/screenshots/en/green-circle-raw.png +0 -0
- data/doc/images/screenshots/en/green-circle.png +0 -0
- data/doc/images/screenshots/en/night-black-raw.png +0 -0
- data/doc/images/screenshots/en/night-black.png +0 -0
- data/doc/images/screenshots/en/rabbit-raw.png +0 -0
- data/doc/images/screenshots/en/rabbit.png +0 -0
- data/doc/images/screenshots/en/ranguba-raw.png +0 -0
- data/doc/images/screenshots/en/ranguba.png +0 -0
- data/doc/images/screenshots/en/red-frame-raw.png +0 -0
- data/doc/images/screenshots/en/red-frame.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/en/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/en/rubykaigi2011.png +0 -0
- data/doc/images/screenshots/ja/blue-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/blue-circle.png +0 -0
- data/doc/images/screenshots/ja/clear-blue-raw.png +0 -0
- data/doc/images/screenshots/ja/clear-blue.png +0 -0
- data/doc/images/screenshots/ja/cozmixng-raw.png +0 -0
- data/doc/images/screenshots/ja/cozmixng.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation-raw.png +0 -0
- data/doc/images/screenshots/ja/dark-gradation.png +0 -0
- data/doc/images/screenshots/ja/day-white-raw.png +0 -0
- data/doc/images/screenshots/ja/day-white.png +0 -0
- data/doc/images/screenshots/ja/debian-raw.png +0 -0
- data/doc/images/screenshots/ja/debian.png +0 -0
- data/doc/images/screenshots/ja/green-circle-raw.png +0 -0
- data/doc/images/screenshots/ja/green-circle.png +0 -0
- data/doc/images/screenshots/ja/night-black-raw.png +0 -0
- data/doc/images/screenshots/ja/night-black.png +0 -0
- data/doc/images/screenshots/ja/rabbit-raw.png +0 -0
- data/doc/images/screenshots/ja/rabbit.png +0 -0
- data/doc/images/screenshots/ja/ranguba-raw.png +0 -0
- data/doc/images/screenshots/ja/ranguba.png +0 -0
- data/doc/images/screenshots/ja/red-frame-raw.png +0 -0
- data/doc/images/screenshots/ja/red-frame.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2-raw.png +0 -0
- data/doc/images/screenshots/ja/ruby-gnome2.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011-raw.png +0 -0
- data/doc/images/screenshots/ja/rubykaigi2011.png +0 -0
- data/doc/ja/how-to-make/index.rd +1 -1
- data/doc/ja/news.rd +143 -0
- data/doc/ja/sample/hiki/rabbit.hiki +2 -2
- data/doc/ja/sample/markdown/rabbit.md +1 -1
- data/doc/ja/sample/rd/rabbit.rd +1 -1
- data/doc/ja/slides.rd +1 -1
- data/doc/ja/usage/rabbit-slide.rd +3 -3
- data/doc/ja/users.rd +1 -1
- data/lib/rabbit/action.rb +23 -4
- data/lib/rabbit/canvas.rb +70 -14
- data/lib/rabbit/command/rabbit-slide.rb +252 -67
- data/lib/rabbit/command/rabbit-slide.ui +180 -0
- data/lib/rabbit/command/rabbit.rb +14 -20
- data/lib/rabbit/console.rb +9 -3
- data/lib/rabbit/dependency-canvas.rb +19 -1
- data/lib/rabbit/element.rb +34 -7
- data/lib/rabbit/element/poppler-page.rb +1 -2
- data/lib/rabbit/element/text-container-element.rb +2 -2
- data/lib/rabbit/element/text-renderer.rb +5 -4
- data/lib/rabbit/element/title-slide.rb +8 -0
- data/lib/rabbit/element/video.rb +1 -2
- data/lib/rabbit/filename.rb +39 -0
- data/lib/rabbit/formatter.rb +61 -30
- data/lib/rabbit/frame.rb +1 -19
- data/lib/rabbit/front.rb +23 -2
- data/lib/rabbit/gesture/handler.rb +21 -2
- data/lib/rabbit/graffiti/config-dialog.rb +15 -18
- data/lib/rabbit/gtk.rb +2 -191
- data/lib/rabbit/html/generator.rb +38 -30
- data/lib/rabbit/image-data-loader.rb +6 -1
- data/lib/rabbit/image.rb +22 -4
- data/lib/rabbit/image/base.rb +34 -2
- data/lib/rabbit/image/default.rb +1 -1
- data/lib/rabbit/image/eps.rb +1 -1
- data/lib/rabbit/image/gimp.rb +1 -1
- data/lib/rabbit/info-window.rb +27 -15
- data/lib/rabbit/logger/gui.rb +21 -23
- data/lib/rabbit/logger/stderr.rb +1 -1
- data/lib/rabbit/pango-markup.rb +44 -0
- data/lib/rabbit/parser.rb +20 -3
- data/lib/rabbit/parser/ext/image.rb +25 -8
- data/lib/rabbit/parser/ext/video.rb +21 -2
- data/lib/rabbit/parser/markdown.rb +1 -2
- data/lib/rabbit/parser/pdf.rb +23 -7
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +20 -0
- data/lib/rabbit/progress.rb +34 -23
- data/lib/rabbit/renderer.rb +17 -23
- data/lib/rabbit/renderer/base.rb +31 -57
- data/lib/rabbit/renderer/color.rb +46 -53
- data/lib/rabbit/renderer/display/base.rb +71 -62
- data/lib/rabbit/renderer/display/button-handler.rb +2 -1
- data/lib/rabbit/renderer/display/clutter-embed.rb +60 -26
- data/lib/rabbit/renderer/display/drawing-area-base.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +34 -21
- data/lib/rabbit/renderer/display/graffiti.rb +1 -3
- data/lib/rabbit/renderer/display/hook-handler.rb +8 -4
- data/lib/rabbit/renderer/display/key-handler.rb +7 -2
- data/lib/rabbit/renderer/display/magnifier.rb +2 -2
- data/lib/rabbit/renderer/display/progress.rb +10 -2
- data/lib/rabbit/renderer/display/spotlight.rb +2 -2
- data/lib/rabbit/renderer/engine/cairo.rb +0 -3
- data/lib/rabbit/renderer/kernel.rb +54 -0
- data/lib/rabbit/renderer/offscreen.rb +14 -6
- data/lib/rabbit/renderer/print-layout.rb +150 -0
- data/lib/rabbit/renderer/printer.rb +236 -0
- data/lib/rabbit/renderer/screen.rb +288 -0
- data/lib/rabbit/renderer/widget/drawing-area.rb +93 -0
- data/lib/rabbit/size.rb +52 -25
- data/lib/rabbit/slide-configuration.rb +56 -12
- data/lib/rabbit/source.rb +24 -8
- data/lib/rabbit/task/slide.rb +1 -1
- data/lib/rabbit/theme/applier.rb +26 -9
- data/lib/rabbit/theme/base/base.rb +7 -7
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
- data/lib/rabbit/theme/image-timer/image-timer.rb +3 -1
- data/lib/rabbit/theme/image-viewer/image-viewer.rb +13 -1
- data/lib/rabbit/theme/image/image.rb +4 -4
- data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +3 -1
- data/lib/rabbit/theme/tag/tag.rb +12 -4
- data/lib/rabbit/version.rb +2 -2
- data/lib/rabbit/video-window.rb +75 -89
- data/misc/emacs/rabbit-mode.el +11 -7
- data/po/en/rabbit.edit.po +189 -185
- data/po/en/rabbit.po +15 -12
- data/po/fr/rabbit.edit.po +189 -185
- data/po/fr/rabbit.po +15 -12
- data/po/ja/rabbit.edit.po +190 -186
- data/po/ja/rabbit.po +16 -13
- data/rabbit.gemspec +34 -16
- data/test/command/test-rabbit.rb +100 -0
- data/test/{rabbit-test-utils.rb → helper.rb} +7 -4
- data/test/{rabbit-test-utils → helper}/fixture.rb +2 -2
- data/test/{rabbit-test-utils → helper}/parser.rb +2 -2
- data/test/image/test-dia.rb +2 -2
- data/test/image/test-eps.rb +2 -2
- data/test/parser/test-markdown.rb +3 -5
- data/test/parser/test-rd.rb +1 -3
- data/test/parser/test-wiki.rb +3 -5
- data/test/run-test.rb +3 -3
- data/test/test-applier.rb +60 -29
- data/test/test-canvas.rb +70 -0
- data/test/test-color.rb +18 -9
- data/test/test-element.rb +15 -3
- data/test/test-size.rb +25 -22
- data/test/test-slide-configuration.rb +16 -6
- data/test/test-source.rb +15 -5
- data/test/test-utils.rb +15 -1
- metadata +55 -84
- data/lib/rabbit/renderer/print.rb +0 -31
- data/lib/rabbit/renderer/print/base.rb +0 -78
- data/lib/rabbit/renderer/print/cairo.rb +0 -122
- data/lib/rabbit/renderer/print/layout.rb +0 -123
- data/lib/rabbit/renderer/print/multiple.rb +0 -202
- data/lib/rabbit/source/hiki.rb +0 -36
- data/lib/rabbit/source/slide-share.rb +0 -53
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Copyright (C) 2006-2018 Kouhei Sutou <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
17
|
+
require "rabbit/renderer/engine/cairo"
|
|
18
|
+
|
|
19
|
+
module Rabbit
|
|
20
|
+
module Renderer
|
|
21
|
+
module Widget
|
|
22
|
+
class DrawingArea
|
|
23
|
+
include Engine::Cairo
|
|
24
|
+
|
|
25
|
+
def initialize(canvas)
|
|
26
|
+
@canvas = canvas
|
|
27
|
+
@area = Gtk::DrawingArea.new
|
|
28
|
+
clear_compiled_slides
|
|
29
|
+
set_draw
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def raw
|
|
33
|
+
@area
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def queue_redraw
|
|
37
|
+
@area.queue_redraw
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def clear_compiled_slide(slide=nil)
|
|
41
|
+
@compiled_slides.delete(slide || @canvas.current_slide)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def clear_compiled_slides
|
|
45
|
+
@compiled_slides = {}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def width
|
|
49
|
+
@area.allocation.width
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def height
|
|
53
|
+
@area.allocation.height
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
def set_draw
|
|
58
|
+
@area.signal_connect(:draw) do |widget, context|
|
|
59
|
+
init_context(context)
|
|
60
|
+
draw(widget)
|
|
61
|
+
finish_renderer
|
|
62
|
+
Gdk::Event::PROPAGATE
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def draw(widget)
|
|
67
|
+
draw_current_slide
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def draw_current_slide
|
|
71
|
+
slide = @canvas.current_slide
|
|
72
|
+
if slide
|
|
73
|
+
begin
|
|
74
|
+
compile_slide(slide) unless compiled_slide?(slide)
|
|
75
|
+
slide.draw(@canvas, false)
|
|
76
|
+
rescue
|
|
77
|
+
@canvas.logger.warn($!)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def compiled_slide?(slide)
|
|
83
|
+
@compiled_slides.has_key?(slide)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def compile_slide(slide)
|
|
87
|
+
@compiled_slides[slide] = true
|
|
88
|
+
slide.draw(@canvas, true)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
data/lib/rabbit/size.rb
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
|
+
# Copyright (C) 2015-2019 Kouhei Sutou <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
1
17
|
module Rabbit
|
|
2
18
|
class Size
|
|
19
|
+
attr_reader :base_width
|
|
20
|
+
attr_reader :base_height
|
|
3
21
|
attr_reader :real_width
|
|
4
22
|
attr_reader :real_height
|
|
23
|
+
attr_reader :real_content_width
|
|
24
|
+
attr_reader :real_content_height
|
|
5
25
|
attr_reader :logical_width
|
|
6
26
|
attr_reader :logical_height
|
|
7
27
|
attr_reader :logical_margin_left
|
|
@@ -9,7 +29,9 @@ module Rabbit
|
|
|
9
29
|
attr_reader :logical_margin_top
|
|
10
30
|
attr_reader :logical_margin_bottom
|
|
11
31
|
attr_reader :ratio
|
|
12
|
-
def initialize(width, height, ratio)
|
|
32
|
+
def initialize(base_width, base_height, width, height, ratio)
|
|
33
|
+
@base_width = base_width
|
|
34
|
+
@base_height = base_height
|
|
13
35
|
@real_width = width
|
|
14
36
|
@real_height = height
|
|
15
37
|
@ratio = ratio
|
|
@@ -30,36 +52,41 @@ module Rabbit
|
|
|
30
52
|
have_logical_margin_x? or have_logical_margin_y?
|
|
31
53
|
end
|
|
32
54
|
|
|
55
|
+
def logical_scale
|
|
56
|
+
@logical_scale
|
|
57
|
+
end
|
|
58
|
+
|
|
33
59
|
private
|
|
34
60
|
def compute_logical_size
|
|
61
|
+
@logical_width = @base_width
|
|
62
|
+
@logical_height = @base_height
|
|
63
|
+
|
|
35
64
|
real_ratio = @real_width.to_f / @real_height.to_f
|
|
36
65
|
if real_ratio == @ratio
|
|
37
|
-
@
|
|
38
|
-
@
|
|
39
|
-
|
|
40
|
-
@
|
|
41
|
-
@
|
|
42
|
-
@logical_margin_bottom = 0
|
|
43
|
-
return
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
if real_ratio > @ratio
|
|
47
|
-
@logical_width = @real_width * (@ratio / real_ratio)
|
|
48
|
-
@logical_height = @real_height
|
|
49
|
-
width_margin = @real_width - @logical_width
|
|
50
|
-
@logical_margin_left = width_margin / 2
|
|
51
|
-
@logical_margin_right = width_margin / 2
|
|
52
|
-
@logical_margin_top = 0
|
|
53
|
-
@logical_margin_bottom = 0
|
|
66
|
+
@real_content_width = @real_width
|
|
67
|
+
@real_content_height = @real_height
|
|
68
|
+
elsif real_ratio > @ratio
|
|
69
|
+
@real_content_width = @real_width * (@ratio / real_ratio)
|
|
70
|
+
@real_content_height = @real_height
|
|
54
71
|
else
|
|
55
|
-
@
|
|
56
|
-
@
|
|
57
|
-
height_margin = @real_height - @logical_height
|
|
58
|
-
@logical_margin_left = 0
|
|
59
|
-
@logical_margin_right = 0
|
|
60
|
-
@logical_margin_top = height_margin / 2
|
|
61
|
-
@logical_margin_bottom = height_margin / 2
|
|
72
|
+
@real_content_width = @real_width
|
|
73
|
+
@real_content_height = @real_height * (real_ratio / @ratio)
|
|
62
74
|
end
|
|
75
|
+
|
|
76
|
+
logical_scale_x = @real_content_width.to_f / @logical_width.to_f
|
|
77
|
+
logical_scale_y = @real_content_height.to_f / @logical_height.to_f
|
|
78
|
+
|
|
79
|
+
real_margin_width = @real_width - @real_content_width
|
|
80
|
+
logical_margin_width = real_margin_width / logical_scale_x
|
|
81
|
+
@logical_margin_left = logical_margin_width / 2
|
|
82
|
+
@logical_margin_right = logical_margin_width / 2
|
|
83
|
+
|
|
84
|
+
real_margin_height = @real_height - @real_content_height
|
|
85
|
+
logical_margin_height = real_margin_height / logical_scale_y
|
|
86
|
+
@logical_margin_top = logical_margin_height / 2
|
|
87
|
+
@logical_margin_bottom = logical_margin_height / 2
|
|
88
|
+
|
|
89
|
+
@logical_scale = [logical_scale_x, logical_scale_y]
|
|
63
90
|
end
|
|
64
91
|
end
|
|
65
92
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2012-
|
|
1
|
+
# Copyright (C) 2012-2017 Kouhei Sutou <kou@cozmixng.org>
|
|
2
2
|
#
|
|
3
3
|
# This program is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
16
|
|
|
17
|
+
require "date"
|
|
17
18
|
require "time"
|
|
18
19
|
|
|
19
20
|
require "yaml"
|
|
@@ -31,7 +32,12 @@ module Rabbit
|
|
|
31
32
|
GEM_NAME_PREFIX = "rabbit-slide"
|
|
32
33
|
|
|
33
34
|
attr_accessor :logger
|
|
34
|
-
attr_accessor :id
|
|
35
|
+
attr_accessor :id
|
|
36
|
+
attr_accessor :base_name
|
|
37
|
+
attr_accessor :tags
|
|
38
|
+
attr_reader :presentation_date
|
|
39
|
+
attr_reader :presentation_start_time
|
|
40
|
+
attr_reader :presentation_end_time
|
|
35
41
|
attr_accessor :licenses
|
|
36
42
|
attr_accessor :slideshare_id
|
|
37
43
|
attr_accessor :speaker_deck_id
|
|
@@ -45,6 +51,18 @@ module Rabbit
|
|
|
45
51
|
clear
|
|
46
52
|
end
|
|
47
53
|
|
|
54
|
+
def presentation_date=(value)
|
|
55
|
+
@presentation_date = ensure_date(value)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def presentation_start_time=(value)
|
|
59
|
+
@presentation_start_time = ensure_time(value)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def presentation_end_time=(value)
|
|
63
|
+
@presentation_end_time = ensure_time(value)
|
|
64
|
+
end
|
|
65
|
+
|
|
48
66
|
def load
|
|
49
67
|
return unless File.exist?(path)
|
|
50
68
|
conf = YAML.load(File.read(path))
|
|
@@ -70,6 +88,8 @@ module Rabbit
|
|
|
70
88
|
@base_name = nil
|
|
71
89
|
@tags = []
|
|
72
90
|
@presentation_date = nil
|
|
91
|
+
@presentation_start_time = nil
|
|
92
|
+
@presentation_end_time = nil
|
|
73
93
|
@version = nil
|
|
74
94
|
@licenses = []
|
|
75
95
|
@slideshare_id = nil
|
|
@@ -80,10 +100,16 @@ module Rabbit
|
|
|
80
100
|
@author = nil
|
|
81
101
|
end
|
|
82
102
|
|
|
103
|
+
|
|
83
104
|
def merge!(conf)
|
|
84
105
|
@id = conf["id"] || @id
|
|
85
106
|
@base_name = conf["base_name"] || @base_name
|
|
86
|
-
|
|
107
|
+
self.presentation_date =
|
|
108
|
+
conf["presentation_date"] || @presentation_date
|
|
109
|
+
self.presentation_start_time =
|
|
110
|
+
conf["presentation_start_time"] || @presentation_start_time
|
|
111
|
+
self.presentation_end_time =
|
|
112
|
+
conf["presentation_end_time"] || @presentation_end_time
|
|
87
113
|
@version = conf["version"] || @version
|
|
88
114
|
@slideshare_id = conf["slideshare_id"] || @slideshare_id
|
|
89
115
|
@speaker_deck_id = conf["speaker_deck_id"] || @speaker_deck_id
|
|
@@ -104,6 +130,8 @@ module Rabbit
|
|
|
104
130
|
"base_name" => @base_name,
|
|
105
131
|
"tags" => @tags,
|
|
106
132
|
"presentation_date" => @presentation_date,
|
|
133
|
+
"presentation_start_time" => @presentation_start_time,
|
|
134
|
+
"presentation_end_time" => @presentation_end_time,
|
|
107
135
|
"version" => version,
|
|
108
136
|
"licenses" => @licenses,
|
|
109
137
|
"slideshare_id" => @slideshare_id,
|
|
@@ -117,7 +145,16 @@ module Rabbit
|
|
|
117
145
|
end
|
|
118
146
|
|
|
119
147
|
def to_yaml
|
|
120
|
-
to_hash
|
|
148
|
+
hash = to_hash
|
|
149
|
+
hash.each do |key, value|
|
|
150
|
+
case value
|
|
151
|
+
when Date
|
|
152
|
+
hash[key] = value.strftime("%Y-%m-%d")
|
|
153
|
+
when Time
|
|
154
|
+
hash[key] = value.iso8601
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
hash.to_yaml
|
|
121
158
|
end
|
|
122
159
|
|
|
123
160
|
def version
|
|
@@ -133,19 +170,26 @@ module Rabbit
|
|
|
133
170
|
end
|
|
134
171
|
|
|
135
172
|
private
|
|
136
|
-
def
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
173
|
+
def ensure_date(value)
|
|
174
|
+
if value.is_a?(String)
|
|
175
|
+
Date.parse(value)
|
|
176
|
+
else
|
|
177
|
+
value
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def ensure_time(value)
|
|
182
|
+
if value.is_a?(String)
|
|
183
|
+
Time.parse(value)
|
|
184
|
+
else
|
|
185
|
+
value
|
|
142
186
|
end
|
|
143
187
|
end
|
|
144
188
|
|
|
145
189
|
def default_version
|
|
146
|
-
date =
|
|
190
|
+
date = presentation_date
|
|
147
191
|
if date
|
|
148
|
-
date.
|
|
192
|
+
"#{date.year}.#{date.month}.#{date.day}.0"
|
|
149
193
|
else
|
|
150
194
|
"1.0.0"
|
|
151
195
|
end
|
data/lib/rabbit/source.rb
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
# Copyright (C) 2017 Kouhei Sutou <kou@cozmixng.org>
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify
|
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
|
5
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
6
|
+
# (at your option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
# GNU General Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
+
|
|
17
|
+
require "rabbit/source/argf"
|
|
18
|
+
require "rabbit/source/file"
|
|
19
|
+
require "rabbit/source/memory"
|
|
20
|
+
require "rabbit/source/uri"
|
|
2
21
|
|
|
3
22
|
module Rabbit
|
|
4
23
|
module Source
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def self.types
|
|
11
|
-
collect_classes_under_module(self)
|
|
24
|
+
class << self
|
|
25
|
+
def types
|
|
26
|
+
Utils.collect_classes_under_module(self)
|
|
27
|
+
end
|
|
12
28
|
end
|
|
13
29
|
end
|
|
14
30
|
end
|
data/lib/rabbit/task/slide.rb
CHANGED
|
@@ -231,7 +231,7 @@ module Rabbit
|
|
|
231
231
|
|
|
232
232
|
def homepage
|
|
233
233
|
rubygems_user = @slide.author.rubygems_user
|
|
234
|
-
"
|
|
234
|
+
"https://slide.rabbit-shocker.org/authors/#{rubygems_user}/#{@slide.id}/"
|
|
235
235
|
end
|
|
236
236
|
|
|
237
237
|
def rabbit(*arguments)
|
data/lib/rabbit/theme/applier.rb
CHANGED
|
@@ -241,8 +241,8 @@ module Rabbit
|
|
|
241
241
|
def_delegators(:canvas, :make_layout)
|
|
242
242
|
|
|
243
243
|
# Those constants are meaningless. :p
|
|
244
|
-
NORMALIZED_WIDTH =
|
|
245
|
-
NORMALIZED_HEIGHT =
|
|
244
|
+
NORMALIZED_WIDTH = 130.0 * 96
|
|
245
|
+
NORMALIZED_HEIGHT = 97.5 * 96
|
|
246
246
|
|
|
247
247
|
def initialize(theme, &callback)
|
|
248
248
|
super()
|
|
@@ -289,7 +289,11 @@ module Rabbit
|
|
|
289
289
|
end
|
|
290
290
|
|
|
291
291
|
def normalized_size(s)
|
|
292
|
-
|
|
292
|
+
if wide_aspect_ratio?
|
|
293
|
+
normalized_y(s)
|
|
294
|
+
else
|
|
295
|
+
normalized_x(s)
|
|
296
|
+
end
|
|
293
297
|
end
|
|
294
298
|
|
|
295
299
|
def normalized_x(sx)
|
|
@@ -300,8 +304,21 @@ module Rabbit
|
|
|
300
304
|
((sy / canvas.height.to_f) * normalized_height).ceil
|
|
301
305
|
end
|
|
302
306
|
|
|
307
|
+
def font_size(size)
|
|
308
|
+
# TODO: Convert to point from pixel
|
|
309
|
+
if wide_aspect_ratio?
|
|
310
|
+
((canvas.height * size) / normalized_height)
|
|
311
|
+
else
|
|
312
|
+
((canvas.width * size) / normalized_width)
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
|
|
303
316
|
def screen_size(n)
|
|
304
|
-
|
|
317
|
+
if wide_aspect_ratio?
|
|
318
|
+
screen_y(n)
|
|
319
|
+
else
|
|
320
|
+
screen_x(n)
|
|
321
|
+
end
|
|
305
322
|
end
|
|
306
323
|
|
|
307
324
|
def screen_x(nx)
|
|
@@ -317,6 +334,10 @@ module Rabbit
|
|
|
317
334
|
end
|
|
318
335
|
|
|
319
336
|
private
|
|
337
|
+
def wide_aspect_ratio?
|
|
338
|
+
(canvas.width / 4) > (canvas.height / 3)
|
|
339
|
+
end
|
|
340
|
+
|
|
320
341
|
def normalize_source(src)
|
|
321
342
|
src.gsub(/(?=^|\W)@(very_)?huge_(script_)?font_size(?=$|\W)/) do |x|
|
|
322
343
|
x = "x"
|
|
@@ -333,10 +354,6 @@ module Rabbit
|
|
|
333
354
|
end
|
|
334
355
|
end
|
|
335
356
|
|
|
336
|
-
def to_attrs(hash)
|
|
337
|
-
canvas.to_attrs(hash)
|
|
338
|
-
end
|
|
339
|
-
|
|
340
357
|
def name
|
|
341
358
|
@theme.name
|
|
342
359
|
end
|
|
@@ -619,7 +636,7 @@ module Rabbit
|
|
|
619
636
|
end
|
|
620
637
|
|
|
621
638
|
def tag(name, attributes, content)
|
|
622
|
-
|
|
639
|
+
PangoMarkup.new(name, attributes, content).to_s
|
|
623
640
|
end
|
|
624
641
|
|
|
625
642
|
def span(attributes, content)
|