rabbit 3.0.4 → 4.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 +4 -4
- data/Gemfile +1 -0
- data/Rakefile +53 -7
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -2
- data/doc/en/news.rd +69 -1
- data/doc/ja/news.rd +68 -0
- data/lib/rabbit/actions.rb +446 -0
- data/lib/rabbit/author-configuration.rb +7 -10
- data/lib/rabbit/canvas.rb +74 -42
- data/lib/rabbit/command/rabbit-slide.rb +11 -13
- data/lib/rabbit/command/rabbit-theme.rb +10 -12
- data/lib/rabbit/command/rabbit.rb +31 -43
- data/lib/rabbit/console.rb +20 -22
- data/lib/rabbit/dependency-canvas.rb +2 -2
- data/lib/rabbit/element/base.rb +93 -6
- data/lib/rabbit/element/block-element.rb +17 -1
- data/lib/rabbit/element/block.rb +17 -1
- data/lib/rabbit/element/container-element.rb +59 -3
- data/lib/rabbit/element/description-list.rb +18 -2
- data/lib/rabbit/element/enum-list.rb +18 -2
- data/lib/rabbit/element/footnote.rb +18 -2
- data/lib/rabbit/element/image-title-slide.rb +17 -1
- data/lib/rabbit/element/image.rb +32 -2
- data/lib/rabbit/element/index-slide.rb +29 -13
- data/lib/rabbit/element/item-list.rb +18 -2
- data/lib/rabbit/element/method-list.rb +18 -2
- data/lib/rabbit/element/poppler-page.rb +17 -1
- data/lib/rabbit/element/poppler-slide.rb +18 -2
- data/lib/rabbit/element/poppler-title-slide.rb +18 -2
- data/lib/rabbit/element/preformatted.rb +18 -2
- data/lib/rabbit/element/slide-element.rb +29 -2
- data/lib/rabbit/element/slide.rb +18 -2
- data/lib/rabbit/element/syntax-highlighting.rb +17 -1
- data/lib/rabbit/element/table.rb +19 -3
- data/lib/rabbit/element/tag.rb +18 -2
- data/lib/rabbit/element/text-block-element.rb +18 -2
- data/lib/rabbit/element/text-container-element.rb +41 -2
- data/lib/rabbit/element/text-element.rb +17 -1
- data/lib/rabbit/element/text-renderer.rb +17 -1
- data/lib/rabbit/element/text.rb +4 -4
- data/lib/rabbit/element/title-slide.rb +19 -3
- data/lib/rabbit/element/video.rb +157 -56
- data/lib/rabbit/element.rb +20 -20
- data/lib/rabbit/formatter.rb +18 -1
- data/lib/rabbit/frame.rb +102 -90
- data/lib/rabbit/front.rb +11 -4
- data/lib/rabbit/gem-finder.rb +4 -8
- data/lib/rabbit/gem-pusher.rb +4 -4
- data/lib/rabbit/gesture/handler.rb +26 -21
- data/lib/rabbit/graffiti/config-dialog.rb +18 -2
- data/lib/rabbit/graffiti/processor.rb +20 -4
- data/lib/rabbit/gtk.rb +48 -14
- data/lib/rabbit/html/generator.rb +18 -18
- data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
- data/lib/rabbit/image/base.rb +7 -6
- data/lib/rabbit/image/default.rb +17 -1
- data/lib/rabbit/image/dia.rb +2 -2
- data/lib/rabbit/image/eps.rb +16 -2
- data/lib/rabbit/image/gimp.rb +28 -11
- data/lib/rabbit/image/mermaid.rb +3 -3
- data/lib/rabbit/image/pdf.rb +3 -3
- data/lib/rabbit/image/svg.rb +2 -2
- data/lib/rabbit/image.rb +8 -8
- data/lib/rabbit/info-window.rb +55 -18
- data/lib/rabbit/key-handler.rb +381 -0
- data/lib/rabbit/keys.rb +31 -2
- data/lib/rabbit/logger/base.rb +17 -1
- data/lib/rabbit/logger/gui.rb +20 -4
- data/lib/rabbit/logger/stderr.rb +16 -2
- data/lib/rabbit/logger.rb +4 -4
- data/lib/rabbit/menu.rb +200 -220
- data/lib/rabbit/parser/base.rb +17 -1
- data/lib/rabbit/parser/ext/aafigure.rb +17 -1
- data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
- data/lib/rabbit/parser/ext/charty.rb +2 -2
- data/lib/rabbit/parser/ext/coderay.rb +20 -4
- data/lib/rabbit/parser/ext/enscript.rb +31 -15
- data/lib/rabbit/parser/ext/entity.rb +17 -1
- data/lib/rabbit/parser/ext/image.rb +6 -6
- data/lib/rabbit/parser/ext/inline.rb +17 -1
- data/lib/rabbit/parser/ext/rouge.rb +7 -4
- data/lib/rabbit/parser/ext/tex.rb +18 -2
- data/lib/rabbit/parser/ext/video.rb +4 -4
- data/lib/rabbit/parser/image.rb +20 -4
- data/lib/rabbit/parser/markdown/converter.rb +12 -13
- data/lib/rabbit/parser/markdown.rb +18 -2
- data/lib/rabbit/parser/pause-support.rb +1 -0
- data/lib/rabbit/parser/pdf.rb +3 -3
- data/lib/rabbit/parser/rd/ext/base.rb +20 -4
- data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
- data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
- data/lib/rabbit/parser/rd/ext/image.rb +3 -3
- data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
- data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
- data/lib/rabbit/parser/rd/ext/video.rb +19 -2
- data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
- data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
- data/lib/rabbit/parser/rd/visitor.rb +18 -2
- data/lib/rabbit/parser/rd.rb +18 -2
- data/lib/rabbit/parser/wiki/output.rb +25 -28
- data/lib/rabbit/parser/wiki.rb +18 -2
- data/lib/rabbit/parser.rb +8 -6
- data/lib/rabbit/path-manipulatable.rb +4 -4
- data/lib/rabbit/progress.rb +17 -1
- data/lib/rabbit/properties.rb +3 -3
- data/lib/rabbit/rabbit.rb +15 -7
- data/lib/rabbit/readme-parser.rb +4 -6
- data/lib/rabbit/renderer/base.rb +44 -36
- data/lib/rabbit/renderer/color.rb +18 -2
- data/lib/rabbit/renderer/display/base.rb +10 -12
- data/lib/rabbit/renderer/display/button-handler.rb +141 -60
- data/lib/rabbit/renderer/display/cursor.rb +4 -5
- data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
- data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
- data/lib/rabbit/renderer/display/gesture.rb +9 -9
- data/lib/rabbit/renderer/display/graffiti.rb +22 -13
- data/lib/rabbit/renderer/display/info.rb +22 -2
- data/lib/rabbit/renderer/display/magnifier.rb +30 -17
- data/lib/rabbit/renderer/display/mask.rb +17 -1
- data/lib/rabbit/renderer/display/menu.rb +27 -3
- data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
- data/lib/rabbit/renderer/display/progress.rb +17 -2
- data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
- data/lib/rabbit/renderer/display/search.rb +19 -2
- data/lib/rabbit/renderer/display/spotlight.rb +39 -25
- data/lib/rabbit/renderer/display.rb +16 -36
- data/lib/rabbit/renderer/engine/cairo.rb +4 -11
- data/lib/rabbit/renderer/engine.rb +17 -1
- data/lib/rabbit/renderer/kernel.rb +2 -20
- data/lib/rabbit/renderer/offscreen.rb +8 -14
- data/lib/rabbit/renderer/print-layout.rb +2 -2
- data/lib/rabbit/renderer/printer.rb +9 -16
- data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
- data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
- data/lib/rabbit/renderer/scene.rb +508 -0
- data/lib/rabbit/renderer.rb +6 -6
- data/lib/rabbit/search-window.rb +18 -2
- data/lib/rabbit/searcher.rb +15 -1
- data/lib/rabbit/size.rb +9 -1
- data/lib/rabbit/slide-configuration.rb +11 -14
- data/lib/rabbit/soap/driver.rb +20 -4
- data/lib/rabbit/soap/server.rb +17 -1
- data/lib/rabbit/source/argf.rb +5 -5
- data/lib/rabbit/source/base.rb +5 -6
- data/lib/rabbit/source/file.rb +5 -5
- data/lib/rabbit/source/memory.rb +20 -4
- data/lib/rabbit/source/uri.rb +9 -11
- data/lib/rabbit/source-generator/hiki.rb +2 -7
- data/lib/rabbit/source-generator/markdown.rb +2 -7
- data/lib/rabbit/source-generator/rd.rb +2 -7
- data/lib/rabbit/source-generator.rb +4 -4
- data/lib/rabbit/source.rb +5 -5
- data/lib/rabbit/task/slide.rb +13 -11
- data/lib/rabbit/task/theme.rb +8 -11
- data/lib/rabbit/task.rb +3 -3
- data/lib/rabbit/theme/applier.rb +27 -11
- data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
- data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
- data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
- data/lib/rabbit/theme/default/default.rb +1 -0
- data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
- data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
- data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
- data/lib/rabbit/theme/entry.rb +10 -12
- data/lib/rabbit/theme/icon/icon.rb +3 -8
- data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
- data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
- data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
- data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
- data/lib/rabbit/theme/manager.rb +19 -9
- data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
- data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
- data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
- data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
- data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
- data/lib/rabbit/theme/searcher.rb +23 -7
- data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
- data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
- data/lib/rabbit/theme/table/table.rb +2 -2
- data/lib/rabbit/theme/video/property.rb +3 -0
- data/lib/rabbit/theme/video/video.rb +5 -0
- data/lib/rabbit/theme-configuration.rb +9 -11
- data/lib/rabbit/utils.rb +12 -94
- data/lib/rabbit/version.rb +2 -2
- data/lib/rabbit/xmlrpc/client.rb +17 -1
- data/lib/rabbit/xmlrpc/server.rb +17 -1
- data/po/en/rabbit.edit.po +325 -317
- data/po/en/rabbit.po +61 -55
- data/po/fr/rabbit.edit.po +325 -317
- data/po/fr/rabbit.po +61 -55
- data/po/ja/rabbit.edit.po +346 -371
- data/po/ja/rabbit.po +83 -80
- data/rabbit.gemspec +4 -2
- data/sample/block-quote.rab +13 -0
- data/sample/description-list.rab +17 -0
- data/sample/mermaid.rab +16 -0
- data/sample/rabbit-en.hiki +0 -1
- data/sample/rabbit-en.md +0 -1
- data/sample/rabbit-en.rd +0 -1
- data/sample/rabbit.hiki +0 -1
- data/sample/rabbit.md +0 -1
- data/sample/rabbit.rd +0 -1
- data/sample/video.rab +17 -0
- metadata +33 -65
- data/lib/rabbit/action/basic.rb +0 -304
- data/lib/rabbit/action/radio.rb +0 -78
- data/lib/rabbit/action/toggle.rb +0 -82
- data/lib/rabbit/action.rb +0 -140
- data/lib/rabbit/renderer/display/gl.rb +0 -98
- data/lib/rabbit/renderer/display/key-handler.rb +0 -321
- data/lib/rabbit/renderer/gl.rb +0 -95
- data/lib/rabbit/renderer/screen.rb +0 -286
- data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
- data/lib/rabbit/stock.rb +0 -31
- data/lib/rabbit/trackball.rb +0 -228
- data/lib/rabbit/video-window.rb +0 -123
- data/test/command/test-rabbit.rb +0 -101
- data/test/helper/parser.rb +0 -48
- data/test/helper.rb +0 -24
- data/test/image/test-dia.rb +0 -54
- data/test/image/test-eps.rb +0 -41
- data/test/parser/test-markdown.rb +0 -360
- data/test/parser/test-rd.rb +0 -43
- data/test/parser/test-wiki.rb +0 -71
- data/test/run-test.rb +0 -27
- data/test/source-generator/test-hiki.rb +0 -68
- data/test/source-generator/test-markdown.rb +0 -67
- data/test/source-generator/test-rd.rb +0 -69
- data/test/test-applier.rb +0 -73
- data/test/test-author-configuration.rb +0 -37
- data/test/test-canvas.rb +0 -70
- data/test/test-color.rb +0 -51
- data/test/test-element.rb +0 -103
- data/test/test-readme-parser.rb +0 -160
- data/test/test-size.rb +0 -155
- data/test/test-slide-configuration.rb +0 -74
- data/test/test-source.rb +0 -122
- data/test/test-theme-configuration.rb +0 -47
- data/test/test-utils.rb +0 -64
data/lib/rabbit/console.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2005-
|
1
|
+
# Copyright (C) 2005-2025 Sutou Kouhei <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
|
@@ -24,10 +24,9 @@ require "ostruct"
|
|
24
24
|
require "uri"
|
25
25
|
require "pathname"
|
26
26
|
|
27
|
-
|
28
|
-
require "rabbit/logger"
|
27
|
+
require_relative "rabbit"
|
29
28
|
|
30
|
-
|
29
|
+
require_relative "console/roff"
|
31
30
|
|
32
31
|
Thread.abort_on_exception = true
|
33
32
|
|
@@ -38,8 +37,8 @@ module Rabbit
|
|
38
37
|
@@locale_dir_option_name = "--locale-dir"
|
39
38
|
|
40
39
|
class << self
|
41
|
-
def parse!(args,
|
42
|
-
new
|
40
|
+
def parse!(args, &block)
|
41
|
+
new.parse!(args, &block)
|
43
42
|
end
|
44
43
|
|
45
44
|
def get_last_name(klass)
|
@@ -47,14 +46,12 @@ module Rabbit
|
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
50
|
-
def initialize
|
51
|
-
@
|
49
|
+
def initialize
|
50
|
+
@have_custom_logger = false
|
52
51
|
end
|
53
52
|
|
54
53
|
def parse!(args)
|
55
54
|
options = OpenStruct.new
|
56
|
-
options.logger = @logger
|
57
|
-
options.default_logger = @logger
|
58
55
|
options.druby_uri = "druby://127.0.0.1:10101"
|
59
56
|
options.version = VERSION
|
60
57
|
options.options_file = nil
|
@@ -82,14 +79,14 @@ module Rabbit
|
|
82
79
|
hook.call(self, parser, options)
|
83
80
|
end
|
84
81
|
rescue => error
|
85
|
-
|
82
|
+
Rabbit.logger.error("#{error.class}: #{error.message}")
|
86
83
|
error.backtrace.each do |line|
|
87
|
-
|
84
|
+
Rabbit.logger.error(line)
|
88
85
|
end
|
89
86
|
raise
|
90
87
|
end
|
91
88
|
|
92
|
-
|
89
|
+
options
|
93
90
|
end
|
94
91
|
|
95
92
|
def read_options_file(parser, options, options_file)
|
@@ -165,28 +162,30 @@ module Rabbit
|
|
165
162
|
get_last_name(x).downcase
|
166
163
|
end
|
167
164
|
|
165
|
+
default_logger_class = ::Rabbit.logger.class
|
168
166
|
parser.on("--logger-type=TYPE",
|
169
167
|
logger_type_names,
|
170
168
|
_("Specify logger type as [TYPE]."),
|
171
169
|
_("Select from [%s].") % logger_type_names.join(', '),
|
172
|
-
"(#{get_last_name(
|
170
|
+
"(#{get_last_name(default_logger_class)})") do |logger_type|
|
173
171
|
logger_class = Rabbit::Logger.types.find do |t|
|
174
172
|
get_last_name(t).downcase == logger_type.downcase
|
175
173
|
end
|
176
174
|
if logger_class.nil?
|
177
|
-
|
178
|
-
# logger.error("Unknown logger type: #{t}")
|
175
|
+
::Rabbit.logger.error("Unknown logger type: #{t}")
|
179
176
|
else
|
180
|
-
|
177
|
+
::Rabbit.logger = logger_class.new
|
178
|
+
@have_custom_logger = true
|
181
179
|
end
|
182
180
|
end
|
183
181
|
|
184
182
|
level_names = Logger::Severity.names
|
183
|
+
default_logger_level = ::Rabbit.logger.level
|
185
184
|
parser.on("--log-level=LEVEL",
|
186
185
|
level_names,
|
187
186
|
_("Specify log level as [LEVEL]."),
|
188
187
|
_("Select from [%s].") % level_names.join(', '),
|
189
|
-
"(#{Logger::Severity.name(
|
188
|
+
"(#{Logger::Severity.name(default_logger_level)})") do |name|
|
190
189
|
options.logger.level = Logger::Severity.level(name)
|
191
190
|
end
|
192
191
|
|
@@ -204,11 +203,10 @@ module Rabbit
|
|
204
203
|
end
|
205
204
|
|
206
205
|
def output_info_and_exit(options, message)
|
207
|
-
if
|
208
|
-
|
209
|
-
print(message)
|
206
|
+
if !@have_custom_logger and ::Rabbit.logger.is_a?(Logger::STDERR)
|
207
|
+
::Rabbit.logger.info(message)
|
210
208
|
else
|
211
|
-
|
209
|
+
puts(message)
|
212
210
|
end
|
213
211
|
exit
|
214
212
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2006-
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <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,7 +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
|
-
|
17
|
+
require_relative "canvas"
|
18
18
|
|
19
19
|
module Rabbit
|
20
20
|
class DependencyCanvas < Canvas
|
data/lib/rabbit/element/base.rb
CHANGED
@@ -1,7 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "../formatter"
|
18
|
+
require_relative "../renderer/scene-node-widget"
|
19
|
+
require_relative "../utils"
|
20
|
+
require_relative "base/draw-hook"
|
5
21
|
|
6
22
|
module Rabbit
|
7
23
|
module Element
|
@@ -57,6 +73,15 @@ module Rabbit
|
|
57
73
|
@visible
|
58
74
|
end
|
59
75
|
|
76
|
+
def scene_visible?
|
77
|
+
if @parent
|
78
|
+
return false unless @parent.scene_visible?
|
79
|
+
end
|
80
|
+
return true if @visible
|
81
|
+
return true if slide&.visible_waited_target?(self)
|
82
|
+
false
|
83
|
+
end
|
84
|
+
|
60
85
|
def slide
|
61
86
|
@slide ||= _slide
|
62
87
|
end
|
@@ -66,7 +91,7 @@ module Rabbit
|
|
66
91
|
x, y, w, h = _draw(@canvas, x, y, w, h, simulation)
|
67
92
|
x, w = restore_x_padding(x, w)
|
68
93
|
x, w = restore_x_margin(x, w)
|
69
|
-
x, w =
|
94
|
+
x, w = restore_x_centering(x, w)
|
70
95
|
y, h = adjust_y_padding(y, h)
|
71
96
|
y, h = adjust_y_margin(y, h)
|
72
97
|
[x, y, w, h]
|
@@ -118,6 +143,62 @@ module Rabbit
|
|
118
143
|
end
|
119
144
|
end
|
120
145
|
|
146
|
+
def setup_scene(canvas, scene_widget, x, y, w, h)
|
147
|
+
compile(canvas, x, y, w, h)
|
148
|
+
|
149
|
+
x, y, w, h = setup_margin(x, y, w, h)
|
150
|
+
x, w = setup_x_centering(x, w)
|
151
|
+
x, y, w, h = setup_padding(x, y, w, h)
|
152
|
+
|
153
|
+
@pre_draw_procs.each do |proc, _name|
|
154
|
+
x, y, w, h = proc.call(canvas, x, y, w, h, true)
|
155
|
+
end
|
156
|
+
|
157
|
+
x, y, w, h = setup_scene_element(canvas, scene_widget, x, y, w, h)
|
158
|
+
|
159
|
+
@post_draw_procs.each do |proc, _name|
|
160
|
+
x, y, w, h = proc.call(canvas, x, y, w, h, true)
|
161
|
+
end
|
162
|
+
|
163
|
+
x, w = restore_x_padding(x, w)
|
164
|
+
x, w = restore_x_margin(x, w)
|
165
|
+
x, w = restore_x_centering(x, w)
|
166
|
+
y, h = adjust_y_padding(y, h)
|
167
|
+
y, h = adjust_y_margin(y, h)
|
168
|
+
|
169
|
+
[x, y, w, h]
|
170
|
+
end
|
171
|
+
|
172
|
+
def setup_scene_element(canvas, scene_widget, x, y, w, h)
|
173
|
+
widget = Renderer::SceneNodeWidget.new(canvas, self, x, y, w, h)
|
174
|
+
scene_widget.put(widget, x, y, w, h)
|
175
|
+
[x, y, w, h]
|
176
|
+
end
|
177
|
+
|
178
|
+
def scene_snapshot(widget, snapshot, canvas, width, height)
|
179
|
+
return unless scene_visible?
|
180
|
+
|
181
|
+
x, y, w, h = widget.x, widget.y, width, height
|
182
|
+
# Dirty... We need to reconsider when we compute horizontal
|
183
|
+
# centering after we remove DrawingArea based rendering
|
184
|
+
# engine.
|
185
|
+
original_x = @x
|
186
|
+
@x = widget.x - @padding_left
|
187
|
+
# pre_draw_proc may be deleted while calling. For example, the
|
188
|
+
# image-timer theme's init proc is deleted when it's called.
|
189
|
+
@pre_draw_procs.dup.each do |proc, _name|
|
190
|
+
x, y, w, h = proc.call(canvas, x, y, w, h, false)
|
191
|
+
end
|
192
|
+
# DrawingArea based renderer set padding after pre_draw_procs.
|
193
|
+
x, y, w, h = setup_padding(x, y, w, h)
|
194
|
+
x, y, w, h = scene_snapshot_element(widget, snapshot, canvas, x, y, w, h)
|
195
|
+
# post_draw_proc may be deleted while calling.
|
196
|
+
@post_draw_procs.dup.each do |proc, _name|
|
197
|
+
x, y, w, h = proc.call(canvas, x, y, w, h, false)
|
198
|
+
end
|
199
|
+
@x = original_x
|
200
|
+
end
|
201
|
+
|
121
202
|
def prop_set(name, *values)
|
122
203
|
name = normalize_property_name(name)
|
123
204
|
@prop[name] = make_prop_value(name, *values)
|
@@ -214,7 +295,13 @@ module Rabbit
|
|
214
295
|
[x, w]
|
215
296
|
end
|
216
297
|
|
217
|
-
def
|
298
|
+
def setup_x_centering(x, w)
|
299
|
+
x += centering_adjusted_width
|
300
|
+
w -= centering_adjusted_width
|
301
|
+
[x, w]
|
302
|
+
end
|
303
|
+
|
304
|
+
def restore_x_centering(x, w)
|
218
305
|
x -= centering_adjusted_width
|
219
306
|
w += centering_adjusted_width
|
220
307
|
[x, w]
|
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "base"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Element
|
data/lib/rabbit/element/block.rb
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "text-block-element"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Element
|
@@ -1,5 +1,22 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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 "forwardable"
|
18
|
+
|
19
|
+
require_relative "block-element"
|
3
20
|
|
4
21
|
module Rabbit
|
5
22
|
module Element
|
@@ -112,7 +129,7 @@ module Rabbit
|
|
112
129
|
x, y, w, h = setup_padding(@x, @y, @w, @h)
|
113
130
|
compile_elements(canvas, x, y, w, h)
|
114
131
|
x, w = restore_x_padding(x, w)
|
115
|
-
x, w =
|
132
|
+
x, w = restore_x_centering(x, w)
|
116
133
|
y, h = adjust_y_padding(y, h)
|
117
134
|
end
|
118
135
|
end
|
@@ -140,6 +157,45 @@ module Rabbit
|
|
140
157
|
end
|
141
158
|
end
|
142
159
|
|
160
|
+
def setup_scene_element(canvas, scene_widget, x, y, w, h)
|
161
|
+
x, y, w, h = super
|
162
|
+
|
163
|
+
@centering_adjusted_height = 0
|
164
|
+
if do_vertical_centering?
|
165
|
+
adjust_height = ((h - height - @padding_bottom) / 2.0).ceil
|
166
|
+
if y + adjust_height > 0
|
167
|
+
y += adjust_height
|
168
|
+
h -= adjust_height
|
169
|
+
else
|
170
|
+
adjust_height = 0
|
171
|
+
end
|
172
|
+
@centering_adjusted_height = adjust_height
|
173
|
+
compile_elements(canvas, x, y, w, h)
|
174
|
+
end
|
175
|
+
|
176
|
+
base_x, base_w = x, w
|
177
|
+
@elements.each do |element|
|
178
|
+
x, y, w, h = element.setup_scene(canvas, scene_widget, x, y, w, h)
|
179
|
+
end
|
180
|
+
# For table
|
181
|
+
last_element = @elements.last
|
182
|
+
if last_element and last_element.inline_element?
|
183
|
+
container_height = height
|
184
|
+
y += container_height
|
185
|
+
h -= container_height
|
186
|
+
end
|
187
|
+
x = base_x
|
188
|
+
w = base_w
|
189
|
+
|
190
|
+
[x, y, w, h]
|
191
|
+
end
|
192
|
+
|
193
|
+
def scene_snapshot_element(widget, snapshot, canvas, x, y, w, h)
|
194
|
+
# TODO: height may be wrong here. We need to check
|
195
|
+
# post_draw_hook usage.
|
196
|
+
[x, y + height, w, h - height]
|
197
|
+
end
|
198
|
+
|
143
199
|
def to_html(generator)
|
144
200
|
collect do |element|
|
145
201
|
element.to_html(generator)
|
@@ -1,5 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "container-element"
|
18
|
+
require_relative "text-block-element"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Element
|
@@ -1,5 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "container-element"
|
18
|
+
require_relative "block-element"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Element
|
@@ -1,5 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "text-element"
|
18
|
+
require_relative "text-container-element"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Element
|
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
# Copyright (C) 2007-2025 Sutou Kouhei <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_relative "title-slide"
|
2
18
|
|
3
19
|
module Rabbit
|
4
20
|
module Element
|
data/lib/rabbit/element/image.rb
CHANGED
@@ -14,8 +14,8 @@
|
|
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
|
-
|
18
|
-
|
17
|
+
require_relative "../image"
|
18
|
+
require_relative "block-element"
|
19
19
|
|
20
20
|
module Rabbit
|
21
21
|
module Element
|
@@ -133,6 +133,36 @@ module Rabbit
|
|
133
133
|
properties.get_boolean("as_large_as_possible")
|
134
134
|
end
|
135
135
|
|
136
|
+
def setup_scene_element(canvas, scene_widget, x, y, w, h)
|
137
|
+
x, y, w, h = super
|
138
|
+
case @loader
|
139
|
+
when ImageManipulable::PDF, ImageManipulable::Mermaid
|
140
|
+
# Render by ourselves
|
141
|
+
else
|
142
|
+
if @loader.animation and not @loader.animation.static_image?
|
143
|
+
texture = Gdk::PixbufAnimationPaintable.new(@loader.animation)
|
144
|
+
else
|
145
|
+
texture = Gdk::Texture.new(@loader.pixbuf)
|
146
|
+
end
|
147
|
+
picture_widget = Gtk::Picture.new(texture)
|
148
|
+
scene_widget.put(picture_widget, x, y, @loader.width, @loader.height)
|
149
|
+
y += @loader.height
|
150
|
+
h -= @loader.height
|
151
|
+
end
|
152
|
+
|
153
|
+
[x, y, w, h]
|
154
|
+
end
|
155
|
+
|
156
|
+
def scene_snapshot_element(widget, snapshot, canvas, x, y, w, h)
|
157
|
+
case @loader
|
158
|
+
when ImageManipulable::PDF, ImageManipulable::Mermaid
|
159
|
+
image_draw(canvas, x, y, @draw_parameters)
|
160
|
+
end
|
161
|
+
y += @loader.height
|
162
|
+
h -= @loader.height
|
163
|
+
[x, y, w, h]
|
164
|
+
end
|
165
|
+
|
136
166
|
private
|
137
167
|
def setup_draw_parameters
|
138
168
|
@draw_parameters = {}
|
@@ -1,7 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# Copyright (C) 2006-2025 Sutou Kouhei <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_relative "../canvas"
|
18
|
+
require_relative "../renderer/offscreen"
|
19
|
+
require_relative "container-element"
|
20
|
+
require_relative "slide-element"
|
5
21
|
|
6
22
|
module Rabbit
|
7
23
|
module Element
|
@@ -21,15 +37,15 @@ module Rabbit
|
|
21
37
|
end
|
22
38
|
|
23
39
|
thumbnails = []
|
24
|
-
|
25
|
-
canvas.renderer.pre_to_pixbuf(
|
40
|
+
n_slides = maker.n_slides - 1
|
41
|
+
canvas.renderer.pre_to_pixbuf(n_slides)
|
26
42
|
canceled = false
|
27
43
|
maker.each_slide_pixbuf do |slide, pixbuf, slide_number|
|
28
44
|
if canvas.renderer.to_pixbufing(slide_number)
|
29
45
|
thumbnails << IndexThumbnail.new(pixbuf,
|
30
46
|
maker.slide_title(slide_number),
|
31
47
|
slide_number,
|
32
|
-
|
48
|
+
n_slides)
|
33
49
|
else
|
34
50
|
canceled = true
|
35
51
|
end
|
@@ -87,7 +103,7 @@ module Rabbit
|
|
87
103
|
|
88
104
|
private
|
89
105
|
def make_thumbnail_maker(canvas, width, height)
|
90
|
-
new_canvas = Canvas.new(
|
106
|
+
new_canvas = Canvas.new(Renderer::Offscreen)
|
91
107
|
new_canvas.width = width
|
92
108
|
new_canvas.height = height
|
93
109
|
new_canvas.pango_context = canvas.create_pango_context
|
@@ -126,12 +142,12 @@ module Rabbit
|
|
126
142
|
class IndexThumbnail
|
127
143
|
include Base
|
128
144
|
|
129
|
-
attr_reader :pixbuf, :title, :number, :
|
130
|
-
def initialize(pixbuf, title, number,
|
145
|
+
attr_reader :pixbuf, :title, :number, :n_slides
|
146
|
+
def initialize(pixbuf, title, number, n_slides)
|
131
147
|
@pixbuf = pixbuf
|
132
148
|
@title = title
|
133
149
|
@number = number
|
134
|
-
@
|
150
|
+
@n_slides = n_slides
|
135
151
|
@layout = nil
|
136
152
|
super()
|
137
153
|
end
|
@@ -150,7 +166,7 @@ module Rabbit
|
|
150
166
|
if @layout.nil?
|
151
167
|
margin_bottom = parent.margin_bottom
|
152
168
|
text_size = (margin_bottom * Pango::SCALE).ceil
|
153
|
-
text = "#{@number}/#{@
|
169
|
+
text = "#{@number}/#{@n_slides}"
|
154
170
|
text = %Q[<span size="#{text_size}">#{text}</span>]
|
155
171
|
@layout, _, _ = canvas.make_layout(text)
|
156
172
|
@layout.set_width(width * Pango::SCALE)
|
@@ -172,7 +188,7 @@ module Rabbit
|
|
172
188
|
end
|
173
189
|
|
174
190
|
def to_html(generator)
|
175
|
-
number_of_places = generator.number_of_places(@
|
191
|
+
number_of_places = generator.number_of_places(@n_slides)
|
176
192
|
format = "thumbnail%0#{number_of_places}d"
|
177
193
|
src = generator.save_pixbuf(@pixbuf, format % @number)
|
178
194
|
title = generator.slide_image_title(@number)
|
@@ -1,5 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "container-element"
|
18
|
+
require_relative "block-element"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Element
|
@@ -1,5 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Copyright (C) 2004-2025 Sutou Kouhei <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_relative "container-element"
|
18
|
+
require_relative "text-block-element"
|
3
19
|
|
4
20
|
module Rabbit
|
5
21
|
module Element
|