rabbit 0.9.1 → 0.9.2
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.
- data/NEWS.en +40 -1
- data/NEWS.ja +40 -1
- data/data/rabbit/image/debian-images/bottom.png +0 -0
- data/data/rabbit/image/debian-images/debian-images.rb +2 -0
- data/data/rabbit/image/debian-images/debian-logo-pink.png +0 -0
- data/data/rabbit/image/debian-images/debian-logo.png +0 -0
- data/data/rabbit/image/debian-images/debian-whirl.png +0 -0
- data/data/rabbit/image/debian-images/item1.png +0 -0
- data/data/rabbit/image/debian-images/property.rb +4 -0
- data/data/rabbit/image/debian-images/top.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-bar.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-bar.svg +153 -0
- data/data/rabbit/image/ranguba-images/ranguba-images.rb +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark-mini.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-item-mark.svg +400 -0
- data/data/rabbit/image/ranguba-images/ranguba-mark.png +0 -0
- data/data/rabbit/image/ranguba-images/ranguba-mark.svg +587 -0
- data/lib/rabbit/canvas.rb +2 -2
- data/lib/rabbit/dependency-canvas.rb +2 -1
- data/lib/rabbit/element/slide.rb +1 -1
- data/lib/rabbit/info-window.rb +74 -25
- data/lib/rabbit/rabbit.rb +1 -1
- data/lib/rabbit/renderer/base.rb +0 -48
- data/lib/rabbit/renderer/display/base.rb +10 -1
- data/lib/rabbit/renderer/display/clutter-embed.rb +7 -8
- data/lib/rabbit/renderer/display/comment-drawing-area.rb +4 -4
- data/lib/rabbit/renderer/display/comment.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-base.rb +14 -27
- data/lib/rabbit/renderer/display/drawing-area-primitive.rb +1 -1
- data/lib/rabbit/renderer/display/drawing-area-view-only.rb +20 -3
- data/lib/rabbit/renderer/display/graffiti.rb +1 -1
- data/lib/rabbit/renderer/display/hook-handler.rb +60 -0
- data/lib/rabbit/renderer/display/magnifier.rb +1 -1
- data/lib/rabbit/renderer/display/scroll-handler.rb +36 -0
- data/lib/rabbit/renderer/display/spotlight.rb +1 -1
- data/lib/rabbit/renderer/engine/cairo.rb +34 -7
- data/lib/rabbit/theme/applier.rb +13 -5
- data/lib/rabbit/theme/debian/debian.rb +253 -0
- data/lib/rabbit/theme/debian/property.rb +3 -0
- data/lib/rabbit/theme/default-slide/default-slide.rb +24 -5
- data/lib/rabbit/theme/ranguba/property.rb +3 -0
- data/lib/rabbit/theme/ranguba/ranguba.rb +230 -0
- data/lib/rabbit/theme/slide-logo/slide-logo.rb +22 -4
- data/lib/rabbit/theme/tag/tag.rb +4 -0
- data/misc/make-image-sample.rb +1 -0
- data/sample/info-window.png +0 -0
- metadata +27 -4
@@ -8,13 +8,18 @@ module Rabbit
|
|
8
8
|
include Renderer::Engine.renderer_module
|
9
9
|
include DrawingAreaPrimitive
|
10
10
|
|
11
|
-
def attach_to(window)
|
11
|
+
def attach_to(window, container=nil, &block)
|
12
12
|
super
|
13
|
-
|
13
|
+
add_widgets_to_container(@container, &block)
|
14
|
+
widget.show
|
14
15
|
end
|
15
16
|
|
16
17
|
def detach
|
17
|
-
|
18
|
+
widget.hide
|
19
|
+
unless @window.destroyed?
|
20
|
+
remove_widgets_from_container(@container)
|
21
|
+
end
|
22
|
+
|
18
23
|
super
|
19
24
|
end
|
20
25
|
|
@@ -23,6 +28,18 @@ module Rabbit
|
|
23
28
|
super
|
24
29
|
init_engine_color
|
25
30
|
end
|
31
|
+
|
32
|
+
def add_widgets_to_container(container, &block)
|
33
|
+
if block_given?
|
34
|
+
yield(container, @area)
|
35
|
+
else
|
36
|
+
container.add(@area)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def remove_widgets_from_container(container)
|
41
|
+
container.remove(@area)
|
42
|
+
end
|
26
43
|
end
|
27
44
|
end
|
28
45
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Rabbit
|
2
|
+
module Renderer
|
3
|
+
module Display
|
4
|
+
module HookHandler
|
5
|
+
def initialize(*args, &block)
|
6
|
+
super
|
7
|
+
init_hook_handler
|
8
|
+
end
|
9
|
+
|
10
|
+
def call_hook_procs(procs, *args)
|
11
|
+
procs.any? {|proc| proc.call(*args)}
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_motion_notify_hook(hook=Proc.new)
|
15
|
+
@motion_notify_hook_procs << hook
|
16
|
+
end
|
17
|
+
|
18
|
+
def clear_motion_notify_hook
|
19
|
+
@motion_notify_hook_procs.clear
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_scroll_hook(hook=Proc.new)
|
23
|
+
@scroll_hook_procs << hook
|
24
|
+
end
|
25
|
+
|
26
|
+
def clear_scroll_hook
|
27
|
+
@scroll_hook_procs.clear
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_button_press_hook(hook=Proc.new)
|
31
|
+
@button_press_hook_procs << hook
|
32
|
+
end
|
33
|
+
|
34
|
+
def clear_button_press_hook
|
35
|
+
@button_press_hook_procs.clear
|
36
|
+
end
|
37
|
+
|
38
|
+
def add_button_release_hook(hook=Proc.new)
|
39
|
+
@button_release_hook_procs << hook
|
40
|
+
end
|
41
|
+
|
42
|
+
def clear_button_release_hook
|
43
|
+
@button_release_hook_procs.clear
|
44
|
+
end
|
45
|
+
|
46
|
+
def clear_hooks
|
47
|
+
init_hook_handler
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
def init_hook_handler
|
52
|
+
@motion_notify_hook_procs = []
|
53
|
+
@scroll_hook_procs = []
|
54
|
+
@button_press_hook_procs = []
|
55
|
+
@button_release_hook_procs = []
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'gtk2'
|
2
|
+
|
3
|
+
module Rabbit
|
4
|
+
module Renderer
|
5
|
+
module Display
|
6
|
+
module ScrollHandler
|
7
|
+
def initialize(*args, &block)
|
8
|
+
super
|
9
|
+
init_scroll_handler
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def init_scroll_handler
|
14
|
+
end
|
15
|
+
|
16
|
+
def set_scroll_event(widget)
|
17
|
+
widget.signal_connect("scroll_event") do |widget, event|
|
18
|
+
handled = call_hook_procs(@scroll_hook_procs, event)
|
19
|
+
unless handled
|
20
|
+
handled = true
|
21
|
+
case event.direction
|
22
|
+
when Gdk::EventScroll::Direction::UP
|
23
|
+
@canvas.activate("PreviousSlide")
|
24
|
+
when Gdk::EventScroll::Direction::DOWN
|
25
|
+
@canvas.activate("NextSlide")
|
26
|
+
else
|
27
|
+
handled = false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
handled
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -167,7 +167,7 @@ module Rabbit
|
|
167
167
|
x2, y2 = from_screen(x2, y2)
|
168
168
|
@context.save do
|
169
169
|
set_source(color, params)
|
170
|
-
|
170
|
+
set_line_options(params)
|
171
171
|
@context.new_path
|
172
172
|
@context.move_to(x1, y1)
|
173
173
|
@context.line_to(x2, y2)
|
@@ -179,7 +179,7 @@ module Rabbit
|
|
179
179
|
x, y = from_screen(x, y)
|
180
180
|
@context.save do
|
181
181
|
set_source(color, params)
|
182
|
-
|
182
|
+
set_line_options(params)
|
183
183
|
@context.rectangle(x, y, w, h)
|
184
184
|
apply_cairo_action(filled, params)
|
185
185
|
end
|
@@ -193,7 +193,7 @@ module Rabbit
|
|
193
193
|
|
194
194
|
@context.save do
|
195
195
|
set_source(color, params)
|
196
|
-
|
196
|
+
set_line_options(params)
|
197
197
|
@context.new_path
|
198
198
|
@context.rounded_rectangle(x, y, w, h, x_radius, y_radius)
|
199
199
|
apply_cairo_action(filled, params)
|
@@ -211,7 +211,7 @@ module Rabbit
|
|
211
211
|
a1, a2 = convert_angle(a1, a2)
|
212
212
|
@context.save do
|
213
213
|
set_source(color, params)
|
214
|
-
|
214
|
+
set_line_options(params)
|
215
215
|
args = [x, y, r, a1, a2]
|
216
216
|
action, = cairo_action(filled, params)
|
217
217
|
@context.move_to(x, y) unless action == :stroke
|
@@ -229,7 +229,7 @@ module Rabbit
|
|
229
229
|
return if points.empty?
|
230
230
|
@context.save do
|
231
231
|
set_source(color, params)
|
232
|
-
|
232
|
+
set_line_options(params)
|
233
233
|
@context.move_to(*from_screen(*points.first))
|
234
234
|
points[1..-1].each do |x, y|
|
235
235
|
@context.line_to(*from_screen(x, y))
|
@@ -243,7 +243,7 @@ module Rabbit
|
|
243
243
|
x, y = from_screen(x, y)
|
244
244
|
@context.save do
|
245
245
|
set_source(color, params)
|
246
|
-
|
246
|
+
set_line_options(params)
|
247
247
|
@context.move_to(x, y)
|
248
248
|
@context.show_pango_layout(layout)
|
249
249
|
end
|
@@ -368,11 +368,30 @@ module Rabbit
|
|
368
368
|
info[:color_stops].each do |offset, r, g, b, a|
|
369
369
|
pattern.add_color_stop_rgba(offset, r, g, b, a)
|
370
370
|
end
|
371
|
+
when :pixbuf
|
372
|
+
@context.set_source_pixbuf(info[:pixbuf])
|
373
|
+
pattern = @context.source
|
374
|
+
end
|
375
|
+
if pattern
|
376
|
+
set_pattern_common_options(pattern, info)
|
377
|
+
@context.set_source(pattern)
|
371
378
|
end
|
372
|
-
@context.set_source(pattern) if pattern
|
373
379
|
!pattern.nil?
|
374
380
|
end
|
375
381
|
|
382
|
+
def set_pattern_common_options(pattern, info)
|
383
|
+
extend = info[:extend]
|
384
|
+
pattern.extend = extend if extend
|
385
|
+
transformations = info[:transformations]
|
386
|
+
if transformations
|
387
|
+
matrix = ::Cairo::Matrix.identity
|
388
|
+
transformations.each do |operation, *args|
|
389
|
+
matrix.send("#{operation}!", *args)
|
390
|
+
end
|
391
|
+
pattern.matrix = matrix
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
376
395
|
def set_color(color)
|
377
396
|
@context.set_source_rgba(make_color(color).to_a)
|
378
397
|
end
|
@@ -437,6 +456,14 @@ module Rabbit
|
|
437
456
|
@context.mask(pattern)
|
438
457
|
end
|
439
458
|
end
|
459
|
+
|
460
|
+
def set_line_options(params)
|
461
|
+
set_line_width(get_line_width(params))
|
462
|
+
[:line_cap, :line_join].each do |key|
|
463
|
+
value = params[key]
|
464
|
+
@context.send("#{key}=", value) if value
|
465
|
+
end
|
466
|
+
end
|
440
467
|
end
|
441
468
|
end
|
442
469
|
end
|
data/lib/rabbit/theme/applier.rb
CHANGED
@@ -89,28 +89,36 @@ module Rabbit
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
-
def draw_image_mark(image_name, name=nil)
|
92
|
+
def draw_image_mark(image_name, name=nil, options={})
|
93
93
|
return if empty?
|
94
94
|
|
95
95
|
loader = ImageLoader.new(image_name)
|
96
96
|
|
97
97
|
width_proc = Proc.new {loader.width}
|
98
98
|
height_proc = Proc.new {loader.height}
|
99
|
+
custom_indent = options[:indent]
|
99
100
|
indent_proc = Proc.new do |item, simulation|
|
100
101
|
text_height = item.elements.first.original_height
|
101
102
|
if text_height < loader.height
|
102
103
|
loader.resize(nil, (text_height * 2.0 / 3.0).ceil)
|
103
104
|
end
|
104
|
-
|
105
|
+
if custom_indent.nil?
|
106
|
+
loader.width * 2.5
|
107
|
+
elsif custom_indent.respond_to?(:call)
|
108
|
+
custom_indent.call(item, loader)
|
109
|
+
else
|
110
|
+
custom_indent
|
111
|
+
end
|
105
112
|
end
|
106
113
|
|
107
|
-
draw_mark(indent_proc,
|
108
|
-
|
114
|
+
draw_mark(indent_proc,
|
115
|
+
width_proc, height_proc,
|
116
|
+
name) do |item, canvas, x, y, w, h|
|
109
117
|
x -= loader.width * 0.5
|
110
118
|
loader.draw(canvas, x, y)
|
111
119
|
end
|
112
120
|
end
|
113
|
-
|
121
|
+
|
114
122
|
def draw_order(indent_width, name=nil, &block)
|
115
123
|
layouts = {}
|
116
124
|
make_order_layout = Proc.new do |item, simulation|
|
@@ -0,0 +1,253 @@
|
|
1
|
+
# #--------------------------------------
|
2
|
+
# # font size setup
|
3
|
+
# #--------------------------------------
|
4
|
+
# @xxxx_large_font_size = screen_size(6.5 * Pango::SCALE)
|
5
|
+
# @xxx_large_font_size = screen_size(5 * Pango::SCALE)
|
6
|
+
# @xx_large_font_size = screen_size(4.5.* Pango::SCALE)
|
7
|
+
# @x_large_font_size = screen_size(4 * Pango::SCALE)
|
8
|
+
# @large_font_size = screen_size(3.5 * Pango::SCALE)
|
9
|
+
# @normal_font_size = screen_size(3 * Pango::SCALE)
|
10
|
+
# @small_font_size = screen_size(2.8 * Pango::SCALE)
|
11
|
+
# @x_small_font_size = screen_size(2.5 * Pango::SCALE)
|
12
|
+
# @xx_small_font_size = screen_size(2.2 * Pango::SCALE)
|
13
|
+
# @xxx_small_font_size = screen_size(2 * Pango::SCALE)
|
14
|
+
# @script_font_size = @xxx_small_font_size
|
15
|
+
# @large_script_font_size = @xx_small_font_size
|
16
|
+
# @x_large_script_font_size = @xsmall_font_size
|
17
|
+
# #--------------------------------------
|
18
|
+
# @title_slide_font_size = @xx_large_font_size
|
19
|
+
# @title_slide_title_font_size = @xxxx_large_font_size
|
20
|
+
# @title_slide_subtitle_font_size = @normal_font_size
|
21
|
+
# @title_slide_author_font_size = @xx_large_font_size
|
22
|
+
# @title_slide_content_source_font_size = @_small_font_size
|
23
|
+
# @title_slide_institution_font_size = @small_font_size
|
24
|
+
# @title_slide_place_font_size = @xx_small_font_size
|
25
|
+
# @title_slide_date_font_size = @xx_small_font_size
|
26
|
+
# @title_slide_note_font_size = @xxx_small_font_size
|
27
|
+
#--------------------------------------
|
28
|
+
# font family setup
|
29
|
+
#--------------------------------------
|
30
|
+
# using font name in `fc-list -v`
|
31
|
+
@default_font = "Sans"
|
32
|
+
@font_family = find_font_family(@default_font)
|
33
|
+
@bold_font = "Sans"
|
34
|
+
@bold_font_family = find_font_family(@bold_font)
|
35
|
+
@monospace_font = "Monospace"
|
36
|
+
@monospace_font_family = find_font_family(@monospace_font)
|
37
|
+
|
38
|
+
#--------------------------------------
|
39
|
+
# using default
|
40
|
+
#--------------------------------------
|
41
|
+
add_image_path("debian-images")
|
42
|
+
#include_theme("default")
|
43
|
+
# not need slide-number...
|
44
|
+
include_theme("default-icon")
|
45
|
+
include_theme("default-title-text")
|
46
|
+
include_theme("default-text")
|
47
|
+
include_theme("default-title-slide")
|
48
|
+
include_theme("default-slide")
|
49
|
+
include_theme("default-item-mark")
|
50
|
+
include_theme("default-method-list")
|
51
|
+
include_theme("default-preformatted")
|
52
|
+
include_theme("default-block-quote")
|
53
|
+
include_theme("default-foot-text")
|
54
|
+
include_theme("default-description")
|
55
|
+
include_theme("image")
|
56
|
+
include_theme("table")
|
57
|
+
include_theme("newline-in-slides")
|
58
|
+
include_theme("per-slide-background-color")
|
59
|
+
include_theme("background-image-toolkit")
|
60
|
+
include_theme("per-slide-background-image")
|
61
|
+
include_theme("body-background-image")
|
62
|
+
include_theme("tag")
|
63
|
+
|
64
|
+
@preformatted_frame_color = "#242424"
|
65
|
+
@preformatted_frame_width = 0.5
|
66
|
+
@preformatted_fill_color = "#fff"
|
67
|
+
@preformatted_shadow_color = "#242424"
|
68
|
+
@centering_preformatted_block = true
|
69
|
+
@description_term_line_color ||= "#ff9900"
|
70
|
+
|
71
|
+
|
72
|
+
#--------------------------------------
|
73
|
+
# title style changed
|
74
|
+
#--------------------------------------
|
75
|
+
@title_background_image = "debian-logo-pink.png"
|
76
|
+
include_theme("title-background-image")
|
77
|
+
match(TitleSlide) do |contents|
|
78
|
+
contents.prop_set("style", "normal")
|
79
|
+
end
|
80
|
+
match(TitleSlide, ContentSource) do |sources|
|
81
|
+
sources.margin_bottom = 0
|
82
|
+
end
|
83
|
+
match(TitleSlide, Date) do |dates|
|
84
|
+
dates.margin_top = @space
|
85
|
+
end
|
86
|
+
match(TitleSlide, Place) do |places|
|
87
|
+
end
|
88
|
+
#--------------------------------------
|
89
|
+
# title logo position changed
|
90
|
+
#--------------------------------------
|
91
|
+
@title_logo ||= "debian-whirl.png"
|
92
|
+
logo_loader = ImageLoader.new(find_file(@title_logo))
|
93
|
+
title_logo = Proc.new do |slide, canvas, x, y, w, h, simulation|
|
94
|
+
unless simulation
|
95
|
+
draw_x = canvas.width - logo_loader.width
|
96
|
+
draw_y = canvas.height - logo_loader.height
|
97
|
+
logo_loader.draw(canvas, draw_x, draw_y)
|
98
|
+
end
|
99
|
+
[x, y, w, h]
|
100
|
+
end
|
101
|
+
match(TitleSlide) do |slides|
|
102
|
+
name2 = "title-logo"
|
103
|
+
slides.delete_pre_draw_proc_by_name(name2)
|
104
|
+
slides.add_pre_draw_proc(name2, &title_logo)
|
105
|
+
end
|
106
|
+
|
107
|
+
## header/footer settings
|
108
|
+
# image loader
|
109
|
+
@slide_header ||= "top.png"
|
110
|
+
@slide_footer ||= "bottom.png"
|
111
|
+
@slide_banner ||= "debian-logo.png"
|
112
|
+
# Headline Settings
|
113
|
+
loader_head = ImageLoader.new(find_file(@slide_header))
|
114
|
+
match(Slide, HeadLine) do |heads|
|
115
|
+
heads.each do |head|
|
116
|
+
head.add_pre_draw_proc("header_bg") do |canvas, x, y, w, h, simulation|
|
117
|
+
unless simulation
|
118
|
+
loader_head.resize(canvas.width, nil)
|
119
|
+
loader_head.draw(canvas,
|
120
|
+
x + w - canvas.width + @margin_left + @margin_right, 0)
|
121
|
+
end
|
122
|
+
[x, y, w, h]
|
123
|
+
end
|
124
|
+
end
|
125
|
+
name = "head-line"
|
126
|
+
delete_post_draw_proc_by_name(name)
|
127
|
+
heads.margin_left = (canvas.width + @margin_left + @margin_right)/6.0
|
128
|
+
heads.margin_right = @margin_right
|
129
|
+
heads.margin_top = @margin_top * 1.3
|
130
|
+
heads.prop_set("size", @xx_large_font_size)
|
131
|
+
heads.prop_set("foreground", "#fff")
|
132
|
+
loader_head.resize(canvas.width, nil)
|
133
|
+
static_y = loader_head.height - @margin_top
|
134
|
+
original_h = nil
|
135
|
+
heads.add_pre_draw_proc do |head, canvas, x, y, w, h, simulation|
|
136
|
+
original_h = h
|
137
|
+
[x, y, w, h]
|
138
|
+
end
|
139
|
+
heads.add_post_draw_proc do |head, canvas, x, y, w, h, simulation|
|
140
|
+
[x, static_y, w, original_h - static_y]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
# Slide number settings
|
144
|
+
@slide_number_props = {
|
145
|
+
"size" => @x_small_font_size,
|
146
|
+
"font_family" => @bold_font
|
147
|
+
}
|
148
|
+
@slide_number_color = "#fff"
|
149
|
+
match(Slide) do |slides|
|
150
|
+
break if @slide_number_uninstall
|
151
|
+
unless @not_use_slide_number
|
152
|
+
slides.add_post_draw_proc("slide_number") do |slide, canvas, x, y, w, h, simulation|
|
153
|
+
unless simulation
|
154
|
+
text = Text.new("#{canvas.current_index}/#{canvas.slide_size - 1}")
|
155
|
+
text.font @slide_number_props
|
156
|
+
text.align = Pango::Layout::ALIGN_RIGHT
|
157
|
+
text.compile(canvas, x, y, w, h)
|
158
|
+
layout = text.layout
|
159
|
+
layout.set_width(w * Pango::SCALE)
|
160
|
+
num_y = @margin_top
|
161
|
+
canvas.draw_layout(text.layout, x, num_y, @slide_number_color)
|
162
|
+
end
|
163
|
+
[x, y, w, h]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
# Footer settings
|
168
|
+
loader_foot = ImageLoader.new(find_file(@slide_footer))
|
169
|
+
loader_banner = ImageLoader.new(find_file(@slide_banner))
|
170
|
+
match(Slide) do |slides|
|
171
|
+
slides.each do |slide|
|
172
|
+
slide.add_post_draw_proc("footer") do |canvas, x, y, w, h, simulation|
|
173
|
+
unless simulation
|
174
|
+
footer_height = canvas.height/26.0 + screen_y(1) * 0.2
|
175
|
+
loader_foot.resize(canvas.width, footer_height)
|
176
|
+
loader_foot.draw(canvas, 0, canvas.height - footer_height)
|
177
|
+
banner_height = canvas.height/26.0
|
178
|
+
loader_banner.resize(nil, banner_height)
|
179
|
+
banner_pos_x = canvas.width - loader_banner.width
|
180
|
+
banner_pos_y = canvas.height - loader_banner.height - footer_height
|
181
|
+
loader_banner.draw(canvas, banner_pos_x, banner_pos_y)
|
182
|
+
end
|
183
|
+
[x, y, w, h]
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
# item setup need update!!
|
189
|
+
slide_body = [Slide, Body]
|
190
|
+
item_list_item = [ItemList, ItemListItem]
|
191
|
+
match(*(slide_body + (item_list_item * 1))) do |items|
|
192
|
+
name = "item1"
|
193
|
+
items.delete_pre_draw_proc_by_name(name)
|
194
|
+
items.delete_post_draw_proc_by_name(name)
|
195
|
+
draw_image_mark(items, "item1.png", name)
|
196
|
+
end
|
197
|
+
|
198
|
+
match(*(slide_body + (item_list_item * 2))) do |items|
|
199
|
+
name = "item2"
|
200
|
+
items.delete_pre_draw_proc_by_name(name)
|
201
|
+
items.delete_post_draw_proc_by_name(name)
|
202
|
+
draw_image_mark(items, "item1.png", name)
|
203
|
+
end
|
204
|
+
|
205
|
+
match(*(slide_body + (item_list_item * 3))) do |items|
|
206
|
+
name = "item3"
|
207
|
+
items.delete_pre_draw_proc_by_name(name)
|
208
|
+
items.delete_post_draw_proc_by_name(name)
|
209
|
+
draw_image_mark(items, "item1.png", name)
|
210
|
+
end
|
211
|
+
|
212
|
+
enum_list_item = [EnumList, EnumListItem]
|
213
|
+
match(*(slide_body + enum_list_item + item_list_item)) do |items|
|
214
|
+
name = "enum-item1"
|
215
|
+
items.delete_pre_draw_proc_by_name(name)
|
216
|
+
items.delete_post_draw_proc_by_name(name)
|
217
|
+
draw_image_mark(items, "item1.png", name)
|
218
|
+
end
|
219
|
+
|
220
|
+
match(*(slide_body + enum_list_item + (item_list_item * 2))) do |items|
|
221
|
+
name = "enum-item2"
|
222
|
+
items.delete_pre_draw_proc_by_name(name)
|
223
|
+
items.delete_post_draw_proc_by_name(name)
|
224
|
+
draw_image_mark(items, "item1.png", name)
|
225
|
+
end
|
226
|
+
|
227
|
+
# text changed
|
228
|
+
match("**", ReferText) do |texts|
|
229
|
+
texts.prop_set("underline", "none")
|
230
|
+
texts.prop_set("foreground", "blue")
|
231
|
+
end
|
232
|
+
|
233
|
+
# �ⶶ��å�
|
234
|
+
@lightning_talk_proc_name = "lightning-debian"
|
235
|
+
@lightning_talk_as_large_as_possible = true
|
236
|
+
include_theme("title-on-image-toolkit")
|
237
|
+
include_theme("lightning-talk-toolkit")
|
238
|
+
match(Slide) do |slides|
|
239
|
+
slides.each do |slide|
|
240
|
+
slide.title_on_image if slide.title_on_image?
|
241
|
+
end
|
242
|
+
end
|
243
|
+
match(Slide) do |slides|
|
244
|
+
slides.each do |slide|
|
245
|
+
if slide.lightning_talk?
|
246
|
+
# reset header.margin_left
|
247
|
+
slide.headline.margin_left = @margin_left
|
248
|
+
slide.lightning_talk
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
|