rabbit 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|