rabbit 2.1.2 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +26 -0
- data/data/locale/en/LC_MESSAGES/rabbit.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rabbit.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
- data/doc/_config.yml +2 -3
- data/doc/en/development.rd +9 -9
- data/doc/en/faq.rd +132 -0
- data/doc/en/hiki.hiki +2 -1
- data/doc/en/index.rd +19 -29
- data/doc/en/install/homebrew.rd +1 -0
- data/doc/en/install/windows.rd +6 -3
- data/doc/en/news.rd +68 -1
- data/doc/en/rd.rd +2 -1
- data/doc/en/sample/hiki/rabbit.hiki +2 -1
- data/doc/en/usage.rd +4 -0
- data/doc/en/usage/platform/os-x.rd +13 -0
- 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/hiki.hiki +2 -1
- data/doc/ja/install/windows.rd +6 -3
- data/doc/ja/news.rd +68 -1
- data/doc/ja/rd.rd +2 -1
- data/doc/ja/sample/hiki/rabbit.hiki +2 -1
- data/lib/rabbit/canvas.rb +1 -5
- data/lib/rabbit/command/rabbit.rb +9 -2
- data/lib/rabbit/element/container-element.rb +5 -3
- data/lib/rabbit/element/slide-element.rb +11 -0
- data/lib/rabbit/gtk.rb +25 -0
- data/lib/rabbit/image-data-loader.rb +46 -0
- data/lib/rabbit/image/base.rb +9 -11
- data/lib/rabbit/image/default.rb +1 -2
- data/lib/rabbit/image/eps.rb +2 -2
- data/lib/rabbit/image/gimp.rb +1 -2
- data/lib/rabbit/image/pdf.rb +1 -0
- data/lib/rabbit/info-window.rb +62 -21
- data/lib/rabbit/logger.rb +20 -4
- data/lib/rabbit/logger/gui.rb +5 -8
- data/lib/rabbit/logger/stderr.rb +5 -9
- data/lib/rabbit/parser/rd.rb +1 -1
- data/lib/rabbit/renderer/display/button-handler.rb +2 -2
- data/lib/rabbit/renderer/display/drawing-area-base.rb +2 -6
- data/lib/rabbit/renderer/display/progress.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +17 -13
- data/lib/rabbit/slideshare.rb +1 -1
- data/lib/rabbit/source/base.rb +24 -40
- data/lib/rabbit/task/slide.rb +1 -1
- data/lib/rabbit/theme/applier.rb +8 -3
- data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +4 -1
- data/lib/rabbit/theme/default-text/default-text.rb +0 -10
- data/lib/rabbit/theme/slide-show/slide-show.rb +2 -2
- data/lib/rabbit/theme/syntax-highlighting/syntax-highlighting.rb +6 -0
- data/lib/rabbit/theme/tag/tag.rb +4 -0
- data/lib/rabbit/version.rb +2 -2
- data/po/en/rabbit.edit.po +2675 -0
- data/po/en/rabbit.po +3 -862
- data/po/fr/rabbit.edit.po +2674 -0
- data/po/fr/rabbit.po +3 -862
- data/po/ja/rabbit.edit.po +2737 -0
- data/po/ja/rabbit.po +4 -864
- data/sample/image-reflection.rab +12 -0
- data/sample/note.rab +31 -0
- data/sample/rabbit-slide-show-logo.svg +597 -0
- data/test/parser/test-rd.rb +45 -0
- data/test/test-source.rb +78 -30
- metadata +767 -756
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (C) 2014 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 "gdk_pixbuf2"
|
18
|
+
|
19
|
+
module Rabbit
|
20
|
+
class ImageDataLoader
|
21
|
+
attr_reader :width, :height, :pixbuf
|
22
|
+
def initialize(data)
|
23
|
+
@width = 0
|
24
|
+
@height = 0
|
25
|
+
@pixbuf = nil
|
26
|
+
@data = data
|
27
|
+
end
|
28
|
+
|
29
|
+
def load
|
30
|
+
loader = Gdk::PixbufLoader.new
|
31
|
+
id = loader.signal_connect("size_prepared") do |l, width, height|
|
32
|
+
@width = width
|
33
|
+
@height = height
|
34
|
+
end
|
35
|
+
begin
|
36
|
+
loader.last_write(@data)
|
37
|
+
rescue Gdk::PixbufError => error
|
38
|
+
loader.close rescue Gdk::PixbufError
|
39
|
+
raise ImageLoadError.new(error.message)
|
40
|
+
end
|
41
|
+
loader.signal_handler_disconnect(id)
|
42
|
+
@pixbuf = loader.pixbuf
|
43
|
+
@pixbuf
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/rabbit/image/base.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "gdk_pixbuf2"
|
2
2
|
|
3
3
|
require "rabbit/utils"
|
4
|
+
require "rabbit/image-data-loader"
|
4
5
|
|
5
6
|
module Rabbit
|
6
7
|
module ImageManipulable
|
@@ -84,20 +85,17 @@ module Rabbit
|
|
84
85
|
key.to_s.gsub(/-/, "_")
|
85
86
|
end
|
86
87
|
|
87
|
-
def
|
88
|
-
loader =
|
89
|
-
id = loader.signal_connect("size_prepared") do |l, width, height|
|
90
|
-
@width = width
|
91
|
-
@height = height
|
92
|
-
end
|
88
|
+
def load_data(data)
|
89
|
+
loader = ImageDataLoader.new(data)
|
93
90
|
begin
|
94
|
-
loader.
|
95
|
-
rescue
|
96
|
-
loader.close rescue Gdk::PixbufError
|
91
|
+
loader.load
|
92
|
+
rescue ImageLoadError
|
97
93
|
raise ImageLoadError.new("#{@filename}: #{$!.message}")
|
98
94
|
end
|
99
|
-
|
100
|
-
loader
|
95
|
+
|
96
|
+
@width = loader.width
|
97
|
+
@height = loader.height
|
98
|
+
loader.pixbuf
|
101
99
|
end
|
102
100
|
end
|
103
101
|
end
|
data/lib/rabbit/image/default.rb
CHANGED
data/lib/rabbit/image/eps.rb
CHANGED
@@ -34,7 +34,7 @@ module Rabbit
|
|
34
34
|
|
35
35
|
private
|
36
36
|
def update_size
|
37
|
-
@pixbuf = load_image
|
37
|
+
@pixbuf = load_image
|
38
38
|
end
|
39
39
|
|
40
40
|
def load_image(width=nil, height=nil)
|
@@ -43,7 +43,7 @@ module Rabbit
|
|
43
43
|
rescue EPSCanNotHandleError
|
44
44
|
eps_to_pnm(width, height)
|
45
45
|
end
|
46
|
-
|
46
|
+
load_data(data)
|
47
47
|
end
|
48
48
|
|
49
49
|
def eps_to_png(width=nil, height=nil)
|
data/lib/rabbit/image/gimp.rb
CHANGED
@@ -41,8 +41,7 @@ EOC
|
|
41
41
|
if GIMP_COMMANDS.any? {|gimp| run(gimp, *args); File.exist?(png_path)}
|
42
42
|
png_file.open
|
43
43
|
png_file.binmode
|
44
|
-
|
45
|
-
@pixbuf = loader.pixbuf
|
44
|
+
@pixbuf = load_data(png_file.read)
|
46
45
|
else
|
47
46
|
raise GIMPCanNotHandleError.new("gimp #{args.join(' ')}",
|
48
47
|
GIMP_COMMANDS)
|
data/lib/rabbit/image/pdf.rb
CHANGED
data/lib/rabbit/info-window.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'erb'
|
2
2
|
|
3
|
+
require 'rabbit/gtk'
|
3
4
|
require 'rabbit/dependency-canvas'
|
4
5
|
require 'rabbit/renderer/display/drawing-area-view-only'
|
5
6
|
require 'rabbit/renderer/display/hook-handler'
|
@@ -22,7 +23,8 @@ module Rabbit
|
|
22
23
|
def initialize(canvas)
|
23
24
|
@canvas = canvas
|
24
25
|
@window = nil
|
25
|
-
@
|
26
|
+
@timer_id = nil
|
27
|
+
@note_area = nil
|
26
28
|
init_hook_handler
|
27
29
|
init_key_handler
|
28
30
|
init_button_handler
|
@@ -48,7 +50,8 @@ module Rabbit
|
|
48
50
|
@window.destroy
|
49
51
|
@window = @window_destroy_id = nil
|
50
52
|
@canvas_widgets = @outer_box = nil
|
51
|
-
@
|
53
|
+
GLib::Source.remove(@timer_id) if @timer_id
|
54
|
+
@timer_id = nil
|
52
55
|
@previous_canvas = @current_canvas = @next_canvas = nil
|
53
56
|
end
|
54
57
|
|
@@ -148,7 +151,7 @@ module Rabbit
|
|
148
151
|
|
149
152
|
def init_widgets_on_note_mode(width, height)
|
150
153
|
init_timer_label(width * (1.0 / 5.0), height * (2.0 / 5.0))
|
151
|
-
|
154
|
+
init_note_area
|
152
155
|
@outer_box = Gtk::VBox.new
|
153
156
|
|
154
157
|
current_box = Gtk::HBox.new
|
@@ -168,8 +171,8 @@ module Rabbit
|
|
168
171
|
@outer_box.pack_start(current_box, false, false)
|
169
172
|
|
170
173
|
bottom_box = Gtk::HBox.new
|
171
|
-
bottom_box.pack_start(@
|
172
|
-
@outer_box.pack_start(bottom_box, true,
|
174
|
+
bottom_box.pack_start(@note_area, true, true, 20)
|
175
|
+
@outer_box.pack_start(bottom_box, true, true, 20)
|
173
176
|
|
174
177
|
@outer_box.show
|
175
178
|
end
|
@@ -184,34 +187,72 @@ module Rabbit
|
|
184
187
|
@timer_label = Gtk::Label.new
|
185
188
|
@timer_label.justify = :center
|
186
189
|
@timer_label.markup = markupped_timer_label(width, height)
|
187
|
-
@timer_started = false
|
188
|
-
check_timer
|
189
190
|
end
|
190
191
|
|
191
|
-
def
|
192
|
-
@
|
193
|
-
@
|
194
|
-
|
195
|
-
|
196
|
-
|
192
|
+
def init_note_area
|
193
|
+
@note_area = Gtk::DrawingArea.new
|
194
|
+
@note_area.signal_connect("expose-event") do |area, event|
|
195
|
+
draw_text_as_large_as_possible(area, note_text)
|
196
|
+
Gdk::Event::PROPAGATE
|
197
|
+
end
|
197
198
|
end
|
198
199
|
|
199
200
|
def update(index=nil)
|
200
|
-
|
201
|
-
|
201
|
+
start_timer if @timer_id.nil?
|
202
|
+
@note_area.queue_draw if @note_area
|
202
203
|
adjust_slide(index)
|
203
204
|
end
|
204
205
|
|
205
|
-
def
|
206
|
-
|
206
|
+
def note_text
|
207
|
+
note = @canvas.current_slide["note"]
|
208
|
+
return note if note.nil?
|
209
|
+
note.gsub(/\\n/, "\n")
|
207
210
|
end
|
208
211
|
|
209
|
-
def
|
210
|
-
return if
|
212
|
+
def draw_text_as_large_as_possible(area, markupped_text)
|
213
|
+
return if markupped_text.nil?
|
214
|
+
|
215
|
+
area_width, area_height = area.window.size
|
216
|
+
|
217
|
+
context = area.window.create_cairo_context
|
218
|
+
layout = context.create_pango_layout
|
219
|
+
layout.context.resolution = @canvas.font_resolution
|
220
|
+
attributes, text = Pango.parse_markup(markupped_text)
|
221
|
+
layout.text = text
|
222
|
+
layout.attributes = attributes
|
223
|
+
layout.width = area_width * Pango::SCALE
|
224
|
+
layout.wrap = :word_char
|
225
|
+
set_as_large_as_font_description(layout, area_height)
|
226
|
+
|
227
|
+
context.update_pango_layout(layout)
|
228
|
+
context.show_pango_layout(layout)
|
229
|
+
end
|
211
230
|
|
212
|
-
|
231
|
+
def set_as_large_as_font_description(layout, max_height)
|
232
|
+
family = "Sans"
|
233
|
+
size = 14
|
234
|
+
last_font_description = nil
|
235
|
+
loop do
|
236
|
+
font_description = Pango::FontDescription.new("#{family} #{size}")
|
237
|
+
layout.font_description = font_description
|
238
|
+
layout_height = layout.pixel_size[1]
|
239
|
+
break if layout_height > max_height
|
240
|
+
last_font_description = font_description
|
241
|
+
size = [size * 1.2, size + 5].min
|
242
|
+
end
|
243
|
+
last_font_description ||= Pango::FontDescription.new("#{family} #{size}")
|
244
|
+
layout.font_description = last_font_description
|
245
|
+
end
|
246
|
+
|
247
|
+
def start_timer
|
248
|
+
@timer_id = GLib::Timeout.add(1000) do
|
213
249
|
@timer_label.markup = markupped_timer_label if showing?
|
214
|
-
|
250
|
+
if showing? and @canvas.rest_time
|
251
|
+
GLib::Source::CONTINUE
|
252
|
+
else
|
253
|
+
@timer_id = nil
|
254
|
+
GLib::Source::REMOVE
|
255
|
+
end
|
215
256
|
end
|
216
257
|
end
|
217
258
|
|
data/lib/rabbit/logger.rb
CHANGED
@@ -1,19 +1,35 @@
|
|
1
|
+
# Copyright (C) 2004-2014 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
|
require "rabbit/utils"
|
2
18
|
|
19
|
+
require "rabbit/logger/stderr"
|
20
|
+
require "rabbit/logger/gui"
|
21
|
+
|
3
22
|
module Rabbit
|
4
23
|
module Logger
|
5
24
|
extend Utils
|
6
25
|
|
7
|
-
dir = ::File.join("rabbit", "logger")
|
8
|
-
require_files_under_directory_in_load_path(dir)
|
9
|
-
|
10
26
|
class << self
|
11
27
|
def types
|
12
28
|
collect_classes_under_module(self)
|
13
29
|
end
|
14
30
|
|
15
31
|
def default
|
16
|
-
if Utils.support_console_output?
|
32
|
+
if Utils.support_console_output?
|
17
33
|
Logger::STDERR.new
|
18
34
|
else
|
19
35
|
Logger::GUI.new
|
data/lib/rabbit/logger/gui.rb
CHANGED
@@ -54,24 +54,21 @@ module Rabbit
|
|
54
54
|
append("#{prog_name}: ", "prog_name")
|
55
55
|
end
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
def log_message(message)
|
59
|
-
unless GLib.utf8_validate(message)
|
60
|
-
message = GLib.filename_to_utf8(message)
|
61
|
-
end
|
62
59
|
append(message, "message")
|
63
60
|
append("\n")
|
64
61
|
end
|
65
62
|
|
66
63
|
def append(text, *tags)
|
67
64
|
iter = @buffer.get_iter_at_offset(-1)
|
68
|
-
@buffer.insert_with_tags(iter, text, *tags)
|
65
|
+
@buffer.insert_with_tags(iter, text.encode("UTF-8"), *tags)
|
69
66
|
end
|
70
67
|
|
71
68
|
def title
|
72
69
|
_("Rabbit Error Dialog")
|
73
70
|
end
|
74
|
-
|
71
|
+
|
75
72
|
def init_dialog(width=@width, height=@height)
|
76
73
|
flags = 0
|
77
74
|
buttons = [
|
@@ -93,7 +90,7 @@ module Rabbit
|
|
93
90
|
true
|
94
91
|
end
|
95
92
|
end
|
96
|
-
|
93
|
+
|
97
94
|
def set_dialog_response
|
98
95
|
@dialog.signal_connect("response") do |widget, event|
|
99
96
|
case event
|
@@ -112,7 +109,7 @@ module Rabbit
|
|
112
109
|
false
|
113
110
|
end
|
114
111
|
end
|
115
|
-
|
112
|
+
|
116
113
|
def set_dialog_accel_group
|
117
114
|
accel_group = Gtk::AccelGroup.new
|
118
115
|
mod = Gdk::Window::ModifierType.new
|
data/lib/rabbit/logger/stderr.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "glib2"
|
2
2
|
|
3
3
|
require "rabbit/logger/base"
|
4
4
|
|
@@ -9,19 +9,15 @@ module Rabbit
|
|
9
9
|
|
10
10
|
private
|
11
11
|
def do_log(severity, prog_name, message)
|
12
|
-
# TODO: Remove me. It is workaround until Ruby/GLib2 2.0.3 is released.
|
13
|
-
if message.encoding == Encoding::ASCII_8BIT
|
14
|
-
message.force_encoding("UTF-8")
|
15
|
-
end
|
16
12
|
begin
|
17
13
|
message = message.encode("locale")
|
18
14
|
rescue EncodingError
|
19
15
|
format = _("can't convert to current locale from UTF-8: %s")
|
20
|
-
|
16
|
+
$stderr.puts(format % message.encode(format.encoding))
|
21
17
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
$stderr.puts(format_severity(severity))
|
19
|
+
$stderr.print("[#{prog_name}]: ") if prog_name
|
20
|
+
$stderr.puts(message)
|
25
21
|
exit if severity >= Severity::FATAL
|
26
22
|
end
|
27
23
|
end
|
data/lib/rabbit/parser/rd.rb
CHANGED
@@ -129,9 +129,9 @@ module Rabbit
|
|
129
129
|
else
|
130
130
|
@button_handling = true
|
131
131
|
@button_event_coming = false
|
132
|
-
|
132
|
+
GLib::Timeout.add(BUTTON_PRESS_ACCEPTING_TIME) do
|
133
133
|
if @button_event_coming
|
134
|
-
|
134
|
+
GLib::Timeout.add(BUTTON_PRESS_ACCEPTING_TIME) do
|
135
135
|
call_button_handler
|
136
136
|
@button_handling = false
|
137
137
|
false
|
@@ -305,12 +305,8 @@ module Rabbit
|
|
305
305
|
|
306
306
|
def draw_slide(slide, simulation, &block)
|
307
307
|
super do |*args|
|
308
|
-
|
309
|
-
|
310
|
-
## the below codes are workaround for
|
311
|
-
## http://redmine.ruby-lang.org/issues/show/2600
|
312
|
-
yield(*args)
|
313
|
-
magnify {yield(*args)} unless simulation
|
308
|
+
block.call(*args)
|
309
|
+
magnify {block.call(*args)} unless simulation
|
314
310
|
end
|
315
311
|
end
|
316
312
|
|
@@ -1,6 +1,8 @@
|
|
1
|
-
require
|
1
|
+
require "cairo"
|
2
|
+
require "stringio"
|
2
3
|
|
3
|
-
require
|
4
|
+
require "rabbit/image-data-loader"
|
5
|
+
require "rabbit/renderer/kernel"
|
4
6
|
|
5
7
|
module Cairo
|
6
8
|
class Context
|
@@ -340,10 +342,10 @@ module Rabbit
|
|
340
342
|
end
|
341
343
|
|
342
344
|
def make_layout(text)
|
343
|
-
|
345
|
+
attributes, text = Pango.parse_markup(text)
|
344
346
|
layout = @context.create_pango_layout
|
345
347
|
layout.text = text
|
346
|
-
layout.
|
348
|
+
layout.attributes = attributes
|
347
349
|
set_font_resolution(layout.context)
|
348
350
|
@context.update_pango_layout(layout)
|
349
351
|
layout
|
@@ -488,15 +490,17 @@ module Rabbit
|
|
488
490
|
return unless params
|
489
491
|
|
490
492
|
dim = handle.dimensions
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
493
|
+
::Cairo::ImageSurface.new(:argb32, width, height) do |surface|
|
494
|
+
::Cairo::Context.new(surface) do |context|
|
495
|
+
context.scale(width / dim.width, height / dim.height)
|
496
|
+
context.render_rsvg_handle(handle)
|
497
|
+
png = StringIO.new
|
498
|
+
context.target.write_to_png(png)
|
499
|
+
loader = ImageDataLoader.new(png.string)
|
500
|
+
loader.load
|
501
|
+
_draw_reflected_pixbuf(loader.pixbuf, x, y, params)
|
502
|
+
end
|
503
|
+
end
|
500
504
|
end
|
501
505
|
|
502
506
|
def set_line_options(params)
|